User   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
eloc 33
c 1
b 0
f 0
dl 0
loc 75
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A rules() 0 35 1
A attributeLabels() 0 4 1
A beforeSave() 0 9 3
1
<?php
2
3
namespace modules\admin\models;
4
5
use yii\helpers\ArrayHelper;
6
use modules\admin\Module;
7
8
/**
9
 * Class User
10
 * @package modules\admin\models
11
 *
12
 * @property string $password Password
13
 */
14
class User extends \modules\users\models\User
15
{
16
    const SCENARIO_ADMIN_CREATE = 'adminCreate';
17
18
    public $password;
19
20
    /**
21
     * @return array
22
     */
23
    public function rules()
24
    {
25
        return [
26
            [['username', 'email', 'status'], 'required'],
27
            [['password'], 'required', 'on' => [self::SCENARIO_ADMIN_CREATE]],
28
29
            ['username', 'match', 'pattern' => '#^[\w_-]+$#i'],
30
            [
31
                'username', 'unique',
32
                'targetClass' => self::class,
33
                'message' => Module::t('users', 'This username is already taken.'),
34
                'on' => [self::SCENARIO_ADMIN_CREATE]
35
            ],
36
            ['username', 'string', 'min' => 2, 'max' => 255],
37
38
            ['email', 'email'],
39
            [
40
                'email',
41
                'unique',
42
                'targetClass' => self::class,
43
                'message' => Module::t('users', 'This email is already taken.'),
44
                'on' => [self::SCENARIO_ADMIN_CREATE]
45
            ],
46
            ['email', 'string', 'max' => 255],
47
48
            [['first_name', 'last_name'], 'string', 'max' => 45],
49
50
            ['status', 'default', 'value' => self::STATUS_WAIT],
51
            ['status', 'in', 'range' => array_keys(self::getStatusesArray())],
52
53
            [
54
                'password',
55
                'string',
56
                'min' => self::LENGTH_STRING_PASSWORD_MIN,
57
                'max' => self::LENGTH_STRING_PASSWORD_MAX
58
            ],
59
        ];
60
    }
61
62
    /**
63
     * @inheritdoc
64
     * @return array
65
     */
66
    public function attributeLabels()
67
    {
68
        return ArrayHelper::merge(parent::attributeLabels(), [
69
            'password' => Module::t('users', 'Password'),
70
        ]);
71
    }
72
73
    /**
74
     * Actions before saving
75
     *
76
     * @param bool $insert
77
     * @return bool
78
     * @throws \yii\base\Exception
79
     */
80
    public function beforeSave($insert)
81
    {
82
        if (parent::beforeSave($insert)) {
83
            if (!empty($this->password)) {
84
                $this->setPassword($this->password);
85
            }
86
            return true;
87
        }
88
        return false;
89
    }
90
}
91