Model   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 155
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 6
dl 0
loc 155
ccs 0
cts 81
cp 0
rs 10
c 0
b 0
f 0

9 Methods

Rating   Name   Duplication   Size   Complexity  
A isNew() 0 4 1
B rules() 0 27 1
A attributes() 0 11 1
A attributeLabels() 0 12 1
A fields() 0 11 1
A beforeDelete() 0 5 1
A afterDelete() 0 5 1
A beforeSave() 0 5 1
A afterSave() 0 5 1
1
<?php
2
3
/**
4
 * @copyright  Copyright (c) Flipbox Digital Limited
5
 * @license    https://github.com/flipbox/spark/blob/master/LICENSE
6
 * @link       https://github.com/flipbox/spark
7
 */
8
9
namespace flipbox\spark\models;
10
11
use Craft;
12
use craft\events\ModelEvent as ModelSaveEvent;
13
use craft\validators\DateTimeValidator;
14
use DateTime;
15
use flipbox\spark\helpers\ModelHelper;
16
use flipbox\spark\models\traits\DateCreatedAttribute;
17
use flipbox\spark\models\traits\DateUpdatedAttribute;
18
use yii\base\Model as BaseModel;
19
use yii\base\ModelEvent as ModelDeleteEvent;
20
21
/**
22
 * @property DateTime $dateCreated
23
 * @property DateTime $dateUpdated
24
 *
25
 * @author Flipbox Factory <[email protected]>
26
 * @since 1.0.0
27
 */
28
abstract class Model extends BaseModel
29
{
30
31
    use DateCreatedAttribute, DateUpdatedAttribute;
32
33
    /**
34
     * @event ModelEvent an event. You may set
35
     * [[ModelEvent::isValid]] to be false to stop the save.
36
     */
37
    const EVENT_BEFORE_SAVE = 'beforeSave';
38
39
    /**
40
     * @event ModelEvent an event. You may set
41
     * [[ModelEvent::isValid]] to be false to stop the save.
42
     */
43
    const EVENT_AFTER_SAVE = 'afterSave';
44
45
    /**
46
     * @event ModelEvent an event. You may set
47
     * [[ModelEvent::isValid]] to be false to stop the deletion.
48
     */
49
    const EVENT_BEFORE_DELETE = 'beforeDelete';
50
51
    /**
52
     * @event ModelEvent an event. You may set
53
     * [[ModelEvent::isValid]] to be false to stop the deletion.
54
     */
55
    const EVENT_AFTER_DELETE = 'afterDelete';
56
57
    /**
58
     * @var string
59
     */
60
    public $uid;
61
62
    /**
63
     * @return bool
64
     */
65
    public function isNew(): bool
66
    {
67
        return true;
68
    }
69
70
    /**
71
     * @inheritdoc
72
     */
73
    public function rules()
74
    {
75
76
        return array_merge(
77
            parent::rules(),
78
            [
79
                [
80
                    [
81
                        'dateCreated',
82
                        'dateUpdated'
83
                    ],
84
                    DateTimeValidator::class
85
                ],
86
                [
87
                    [
88
                        'uid',
89
                        'dateCreated',
90
                        'dateUpdated'
91
                    ],
92
                    'safe',
93
                    'on' => [
94
                        ModelHelper::SCENARIO_DEFAULT
95
                    ]
96
                ]
97
            ]
98
        );
99
    }
100
101
    /**
102
     * @inheritdoc
103
     */
104
    public function attributes()
105
    {
106
107
        return array_merge(
108
            parent::attributes(),
109
            [
110
                'dateCreated',
111
                'dateUpdated'
112
            ]
113
        );
114
    }
115
116
    /**
117
     * @inheritdoc
118
     */
119
    public function attributeLabels()
120
    {
121
122
        return array_merge(
123
            parent::attributeLabels(),
124
            [
125
                'uid' => Craft::t('app', 'UID'),
126
                'dateCreated' => Craft::t('app', 'Date Created'),
127
                'dateUpdated' => Craft::t('app', 'Date Updated')
128
            ]
129
        );
130
    }
131
132
    /**
133
     * @inheritdoc
134
     */
135
    public function fields()
136
    {
137
138
        return array_merge(
139
            parent::fields(),
140
            [
141
                'dateCreated' => 'dateCreatedIso8601',
142
                'dateUpdated' => 'dateUpdatedIso8601'
143
            ]
144
        );
145
    }
146
147
    /**
148
     * @inheritdoc
149
     */
150
    public function beforeDelete(ModelDeleteEvent $event): bool
151
    {
152
        $this->trigger(self::EVENT_BEFORE_DELETE, $event);
153
        return $event->isValid;
154
    }
155
156
    /**
157
     * @inheritdoc
158
     */
159
    public function afterDelete(ModelDeleteEvent $event): bool
160
    {
161
        $this->trigger(self::EVENT_AFTER_DELETE, $event);
162
        return $event->isValid;
163
    }
164
165
    /**
166
     * @inheritdoc
167
     */
168
    public function beforeSave(ModelSaveEvent $event): bool
169
    {
170
        $this->trigger(self::EVENT_BEFORE_SAVE, $event);
171
        return $event->isValid;
172
    }
173
174
    /**
175
     * @inheritdoc
176
     */
177
    public function afterSave(ModelSaveEvent $event): bool
178
    {
179
        $this->trigger(self::EVENT_AFTER_SAVE, $event);
180
        return $event->isValid;
181
    }
182
}
183