BlockType   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 141
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 28
c 0
b 0
f 0
dl 0
loc 141
rs 10
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getBlockType() 0 7 2
A getField() 0 7 2
A behaviors() 0 6 1
A __toString() 0 3 1
A rules() 0 5 1
1
<?php
2
/**
3
 * Spoon plugin for Craft CMS 3.x
4
 *
5
 * Enhance Matrix
6
 *
7
 * @link      https://angell.io
8
 * @copyright Copyright (c) 2018 Angell & Co
9
 */
10
11
namespace angellco\spoon\models;
12
13
use angellco\spoon\Spoon;
14
15
use Craft;
16
use craft\base\FieldInterface;
17
use craft\base\Model;
18
use craft\behaviors\FieldLayoutBehavior;
19
use craft\elements\MatrixBlock;
20
use craft\models\MatrixBlockType;
21
22
/**
23
 * BlockType Model
24
 *
25
 * Models are containers for data. Just about every time information is passed
26
 * between services, controllers, and templates in Craft, it’s passed via a model.
27
 *
28
 * https://craftcms.com/docs/plugins/models
29
 *
30
 * @author    Angell & Co
31
 * @package   Spoon
32
 * @since     3.0.0
33
 */
34
class BlockType extends Model
35
{
36
    // Public Properties
37
    // =========================================================================
38
39
    /**
40
     * @var int|string|null ID The block ID. If unsaved, it will be in the format "newX".
41
     */
42
    public $id;
43
44
    /**
45
     * @var int|null Field ID
46
     */
47
    public $fieldId;
48
49
    /**
50
     * @var FieldInterface|null Field
51
     */
52
    public $field;
53
54
    /**
55
     * @var int|null Field layout ID
56
     */
57
    public $fieldLayoutId;
58
59
    /**
60
     * @var mixed|null Field layout model
61
     */
62
    public $fieldLayoutModel;
63
64
    /**
65
     * @var string|null Field handle
66
     */
67
    public $fieldHandle;
68
69
    /**
70
     * @var int|null Matrix block type ID
71
     */
72
    public $matrixBlockTypeId;
73
74
    /**
75
     * @var MatrixBlockType|null Matrix block type model
76
     */
77
    public $matrixBlockType;
78
79
    /**
80
     * @var string|null Group name
81
     */
82
    public $groupName;
83
84
    /**
85
     * @var string|null Context
86
     */
87
    public $context;
88
89
    /**
90
     * @var string|mixed
91
     */
92
    public $uid;
93
94
    /**
95
     * @var int
96
     */
97
    public $groupSortOrder;
98
99
    /**
100
     * @var int
101
     */
102
    public $sortOrder;
103
104
105
    // Public Methods
106
    // =========================================================================
107
108
    /**
109
     * Use the block type name as the string representation.
110
     *
111
     * @return string
112
     */
113
    public function __toString(): string
114
    {
115
        return (string)$this->getBlockType()->name;
116
    }
117
118
    /**
119
     * Returns the Field instance
120
     *
121
     * @return FieldInterface|null
122
     */
123
    public function getField()
124
    {
125
        if ($this->field) {
126
            return $this->field;
127
        }
128
129
        return Craft::$app->fields->getFieldById($this->fieldId);
0 ignored issues
show
Bug introduced by
It seems like $this->fieldId can also be of type null; however, parameter $fieldId of craft\services\Fields::getFieldById() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

129
        return Craft::$app->fields->getFieldById(/** @scrutinizer ignore-type */ $this->fieldId);
Loading history...
130
    }
131
132
133
    /**
134
     * Returns the Matrix Block Type model
135
     *
136
     * @return MatrixBlockType|null
137
     */
138
    public function getBlockType()
139
    {
140
        if ($this->matrixBlockType) {
141
            return $this->matrixBlockType;
142
        }
143
144
        return Craft::$app->matrix->getBlockTypeById($this->matrixBlockTypeId);
0 ignored issues
show
Bug introduced by
It seems like $this->matrixBlockTypeId can also be of type null; however, parameter $blockTypeId of craft\services\Matrix::getBlockTypeById() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

144
        return Craft::$app->matrix->getBlockTypeById(/** @scrutinizer ignore-type */ $this->matrixBlockTypeId);
Loading history...
145
    }
146
147
    /**
148
     * @inheritdoc
149
     */
150
    public function behaviors()
151
    {
152
        return [
153
            'fieldLayout' => [
154
                'class' => FieldLayoutBehavior::class,
155
                'elementType' => MatrixBlock::class
156
            ],
157
        ];
158
    }
159
160
    /**
161
     * Returns the validation rules for attributes.
162
     *
163
     * Validation rules are used by [[validate()]] to check if attribute values are valid.
164
     * Child classes may override this method to declare different validation rules.
165
     *
166
     * More info: http://www.yiiframework.com/doc-2.0/guide-input-validation.html
167
     *
168
     * @return array
169
     */
170
    public function rules()
171
    {
172
        return [
173
            [['id', 'fieldId', 'matrixBlockTypeId', 'fieldLayoutId', 'groupSortOrder', 'sortOrder'], 'number', 'integerOnly' => true],
174
            [['fieldHandle', 'groupName', 'context'], 'string'],
175
//            ['matrixBlockType', MatrixBlockType::className()]
176
        ];
177
    }
178
179
}
180