Issues (213)

src/forms/ServerForm.php (1 issue)

1
<?php
2
/**
3
 * Server module for HiPanel
4
 *
5
 * @link      https://github.com/hiqdev/hipanel-module-server
6
 * @package   hipanel-module-server
7
 * @license   BSD-3-Clause
8
 * @copyright Copyright (c) 2015-2019, HiQDev (http://hiqdev.com/)
9
 */
10
11
namespace hipanel\modules\server\forms;
12
13
use hipanel\helpers\StringHelper;
14
use hipanel\modules\server\models\Server;
15
use hipanel\modules\server\validators\MacValidator;
16
use yii\helpers\ArrayHelper;
17
18
/**
19
 * Class ServerForm represent create/update form.
20
 */
21
class ServerForm extends Server
22
{
23
    use \hipanel\base\ModelTrait;
24
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public static function tableName()
29
    {
30
        return 'server';
31
    }
32
33
    /**
34
     * Create ServerForm model from Server model.
35
     *
36
     * @param Server $server
37
     * @return ServerForm
38
     */
39
    public static function fromServer(Server $server): ServerForm
40
    {
41
        return new self(array_merge($server->getAttributes(), ['server' => $server->name, 'scenario' => 'update'], [
42
            'ips' => implode(',', ArrayHelper::getColumn($server->ips, 'ip')),
0 ignored issues
show
Bug Best Practice introduced by
The property ips does not exist on hipanel\modules\server\models\Server. Since you implemented __get, consider adding a @property annotation.
Loading history...
43
        ]));
44
    }
45
46
    /**
47
     * {@inheritdoc}
48
     */
49 1
    public function rules()
50
    {
51 1
        return array_merge(parent::rules(), [
52
            // Create/update servers
53 1
            [['server', 'type', 'state'], 'required', 'on' => ['create', 'update']],
54
            [['server', 'dc'], 'unique', 'on' => ['create']],
55
            [
56 1
                ['server'], 'unique', 'on' => ['update'], 'when' => function ($model) {
57
                    if ($model->isAttributeChanged('server')) {
58
                        return self::findOne($model->id)->name !== $model->server;
59
                    }
60
61
                    return false;
62 1
                },
63
            ],
64
            [
65 1
                ['dc'], 'unique', 'on' => ['update'], 'when' => function ($model) {
66
                    if ($model->isAttributeChanged('dc')) {
67
                        return self::findOne($model->id)->dc !== $model->dc;
68
                    }
69
70
                    return false;
71 1
                },
72
            ],
73
            [['name', 'dc', 'label', 'order_no', 'hwsummary'], 'string', 'on' => ['create', 'update']],
74
            [['mac'], MacValidator::class, 'on' => ['create', 'update']],
75
            [
76 1
                ['ips'], 'filter',
77 1
                'filter' => function ($value) {
78
                    return (mb_strlen($value) > 0) ? StringHelper::mexplode($value) : '';
79 1
                },
80
                'on' => ['create', 'update'],
81
            ],
82
            [['ips'], 'each', 'rule' => ['ip'], 'on' => ['create', 'update']],
83
        ]);
84
    }
85
}
86