Issues (213)

src/models/Config.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\models;
12
13
use hipanel\base\Model;
14
use hipanel\base\ModelTrait;
15
use hipanel\modules\server\models\query\ConfigQuery;
16
use Yii;
17
use yii\helpers\ArrayHelper;
18
19
class Config extends Model
20
{
21
    use ModelTrait;
22
23
    const SCENARIO_CREATE = 'create';
24
25
    const SCENARIO_UPDATE = 'update';
26
27
    const SCENARIO_DELETE = 'delete';
28
29
    const SCENARIO_ENABLE = 'enable';
30
31
    const SCENARIO_DISABLE = 'disable';
32
33
    const LOCATION_NL = 'nl';
34
35
    const LOCATION_US = 'us';
36
37
    /**
38
     * {@inheritdoc}
39
     */
40
    public function rules()
41
    {
42
        return array_merge(parent::rules(), [
43
            [[
44
                'id', 'client_id', 'seller_id', 'type_id', 'state_id',
45
                'us_tariff_id', 'nl_tariff_id', 'servers_num',
46
            ], 'integer'],
47
            [['server_ids', 'servers', 'profile_ids', 'profiles'], 'safe'],
48
            [['nl_old_price', 'us_old_price'], 'number', 'on' => [self::SCENARIO_CREATE, self::SCENARIO_UPDATE]],
49
            [['nl_low_limit', 'us_low_limit'], 'integer', 'on' => [self::SCENARIO_CREATE, self::SCENARIO_UPDATE]],
50
            [['nl_server_ids', 'nl_servers', 'us_server_ids', 'us_servers'], 'safe'],
51
            [['name', 'client', 'seller', 'state', 'state_label', 'type', 'type_label'], 'string'],
52
            [['sort_order'], 'integer', 'min' => 0],
53
            [
54
                [
55
                    'data',
56
                    'name',
57
                    'label',
58
                    'us_tariff',
59
                    'nl_tariff',
60
                    'cpu',
61
                    'ram',
62
                    'hdd',
63
                    'ssd',
64
                    'traffic',
65
                    'lan',
66
                    'raid',
67
                    'descr',
68
                ], 'string'],
69
            [
70
                ['client_id', 'name', 'label', 'cpu', 'ram'],
71
                'required', 'on' => [self::SCENARIO_CREATE, self::SCENARIO_UPDATE],
72
            ],
73
74
            ['id', 'required', 'on' => [
75
                self::SCENARIO_DELETE,
76
                self::SCENARIO_ENABLE,
77
                self::SCENARIO_DISABLE,
78
            ]],
79
        ]);
80
    }
81
82
    public function attributeLabels()
83
    {
84
        return array_merge(parent::attributeLabels(), [
85
            'servers' => Yii::t('hipanel:server:config', 'All servers'),
86
            'server_ids' => Yii::t('hipanel:server:config', 'Servers'),
87
            'profile_ids' => Yii::t('hipanel:server:config', 'Profiles'),
88
            'us_tariff_id' => Yii::t('hipanel:server:config', 'US tariff'),
89
            'nl_tariff_id' => Yii::t('hipanel:server:config', 'NL tariff'),
90
            'us_old_price' => Yii::t('hipanel:server:config', 'US old price'),
91
            'nl_old_price' => Yii::t('hipanel:server:config', 'NL old price'),
92
            'us_tariff' => Yii::t('hipanel:server:config', 'US tariff'),
93
            'nl_tariff' => Yii::t('hipanel:server:config', 'NL tariff'),
94
            'us_servers_id' => Yii::t('hipanel:server:config', 'US servers'),
95
            'nl_servers_id' => Yii::t('hipanel:server:config', 'NL servers'),
96
            'us_servers' => Yii::t('hipanel:server:config', 'US servers'),
97
            'nl_servers' => Yii::t('hipanel:server:config', 'NL servers'),
98
            'us_low_limit' => Yii::t('hipanel:server:config', 'US low limit'),
99
            'nl_low_limit' => Yii::t('hipanel:server:config', 'NL low limit'),
100
            'label' => Yii::t('hipanel:server:config', 'Subname'),
101
            'cpu' => Yii::t('hipanel:server:config', 'CPU'),
102
            'ram' => Yii::t('hipanel:server:config', 'RAM'),
103
            'hdd' => Yii::t('hipanel:server:config', 'HDD'),
104
            'ssd' => Yii::t('hipanel:server:config', 'SSD'),
105
            'lan' => Yii::t('hipanel:server:config', 'Ethernet'),
106
            'raid' => Yii::t('hipanel:server:config', 'RAID'),
107
            'sort_order' => Yii::t('hipanel:server:config', 'Sort order'),
108
            'state_label' => Yii::t('hipanel', 'State'),
109
        ]);
110
    }
111
112
    public function getPrices()
113
    {
114
        return $this->hasMany(ConfigPrice::class, ['config_id' => 'id'])->indexBy('location');
115
    }
116
117
    /**
118
     * {@inheritdoc}
119
     * @return ConfigQuery
120
     */
121
    public static function find($options = [])
122
    {
123
        return new ConfigQuery(get_called_class(), [
124
            'options' => $options,
125
        ]);
126
    }
127
128
    public function getProfileOptions(): array
129
    {
130
        $profiles = Yii::$app->get('cache')->getOrSet([__METHOD__, Yii::$app->user->identity->id], function (): array {
0 ignored issues
show
Accessing id on the interface yii\web\IdentityInterface suggest that you code against a concrete implementation. How about adding an instanceof check?
Loading history...
131
            return ConfigProfile::find()->where(['class' => 'config', 'hide_default' => true])->limit(-1)->all();
132
        }, 1800); // 30 min
133
134
        return ArrayHelper::map($profiles, 'id', 'name');
135
    }
136
}
137