Blame view

backend/models/AdminMenu.php 4.75 KB
14adae3b   Yarik   Коммит админ меню
1
2
3
4
5
6
7
8
9
  <?php
  
  namespace backend\models;
  
  use Yii;
  
  /**
   * This is the model class for table "admin_menu".
   *
e3105834   Yarik   Стандартизация
10
11
12
   * @property integer $admin_menu_id
   * @property integer $admin_menu_pid
   * @property integer $status
14adae3b   Yarik   Коммит админ меню
13
14
15
16
   * @property integer $hide_min
   * @property integer $sort
   * @property string $name
   * @property string $path
e3105834   Yarik   Стандартизация
17
   * @property string $param
14adae3b   Yarik   Коммит админ меню
18
19
20
21
22
23
24
25
   *
   * @property AdminMenu $parent
   * @property AdminMenu[] $adminMenus
   * @property AdminMenuAccessGroup[] $adminMenuAccessGroups
   * @property AdminMenuAccessUser[] $adminMenuAccessUsers
   */
  class AdminMenu extends \yii\db\ActiveRecord
  {
5dfa349e   Yarik   Коммит последний ...
26
27
  
      public $parentt;
14adae3b   Yarik   Коммит админ меню
28
29
30
31
32
33
34
35
36
37
38
39
40
41
      /**
       * @inheritdoc
       */
      public static function tableName()
      {
          return 'admin_menu';
      }
  
      /**
       * @inheritdoc
       */
      public function rules()
      {
          return [
e3105834   Yarik   Стандартизация
42
              [['admin_menu_pid', 'status', 'hide_min', 'sort'], 'integer'],
14adae3b   Yarik   Коммит админ меню
43
              [['name'], 'required'],
e3105834   Yarik   Стандартизация
44
              [['name', 'path', 'param','parentt'], 'string']
14adae3b   Yarik   Коммит админ меню
45
46
47
48
49
50
51
52
53
          ];
      }
  
      /**
       * @inheritdoc
       */
      public function attributeLabels()
      {
          return [
e3105834   Yarik   Стандартизация
54
55
56
              'admin_menu_id' => Yii::t('app', 'Admin menu ID'),
              'admin_menu_pid' => Yii::t('app', 'Admin menu parent ID'),
              'status' => Yii::t('app', 'Status'),
14adae3b   Yarik   Коммит админ меню
57
58
59
60
              'hide_min' => Yii::t('app', 'Hide Min'),
              'sort' => Yii::t('app', 'Sort'),
              'name' => Yii::t('app', 'Name'),
              'path' => Yii::t('app', 'Path'),
e3105834   Yarik   Стандартизация
61
              'param' => Yii::t('app', 'Params'),
5dfa349e   Yarik   Коммит последний ...
62
              'parentt' => Yii::t('app', 'Parent item')
14adae3b   Yarik   Коммит админ меню
63
64
65
66
67
68
69
70
          ];
      }
  
      /**
       * @return \yii\db\ActiveQuery
       */
      public function getParent()
      {
e3105834   Yarik   Стандартизация
71
          return $this->hasOne(AdminMenu::className(), ['admin_menu_id' => 'admin_menu_pid']);
14adae3b   Yarik   Коммит админ меню
72
73
74
75
76
77
78
      }
  
      /**
       * @return \yii\db\ActiveQuery
       */
      public function getAdminMenus()
      {
e3105834   Yarik   Стандартизация
79
          return $this->hasMany(AdminMenu::className(), ['admin_menu_pid' => 'admin_menu_id']);
14adae3b   Yarik   Коммит админ меню
80
81
82
83
84
85
86
      }
  
      /**
       * @return \yii\db\ActiveQuery
       */
      public function getAdminMenuAccessGroups()
      {
e3105834   Yarik   Стандартизация
87
          return $this->hasMany(AdminMenuAccessGroup::className(), ['admin_menu_id' => 'admin_menu_id']);
14adae3b   Yarik   Коммит админ меню
88
89
90
91
92
93
94
      }
  
      /**
       * @return \yii\db\ActiveQuery
       */
      public function getAdminMenuAccessUsers()
      {
e3105834   Yarik   Стандартизация
95
          return $this->hasMany(AdminMenuAccessUser::className(), ['admin_menu_id' => 'admin_menu_id']);
14adae3b   Yarik   Коммит админ меню
96
97
98
99
100
      }
  
      public static function buildMenu($withValues = false)
      {
          $result = [];
e3105834   Yarik   Стандартизация
101
          $roots = self::find()->where(['admin_menu_pid' => NULL])->with(['adminMenus'])->all();
14adae3b   Yarik   Коммит админ меню
102
103
          foreach($roots as $root) {
              if($root->adminMenus) {
e3105834   Yarik   Стандартизация
104
                  $result[] = ['label' => Yii::t('app', $root->name), 'id' => $root->admin_menu_id, 'options' => ['class' => 'header']];
14adae3b   Yarik   Коммит админ меню
105
106
107
108
                  foreach($root->adminMenus as $submenu) {
                      if($submenu->adminMenus) {
                          $items = [];
                          foreach($submenu->adminMenus as $item) {
e3105834   Yarik   Стандартизация
109
                              $items[] = ['label' => Yii::t('app', $item->name), 'id' => $item->admin_menu_id, 'icon' => 'fa fa-circle-o', 'url' => array_merge([$item->path], \common\models\Tools::parseUrlParams($item->param))];
14adae3b   Yarik   Коммит админ меню
110
                          }
e3105834   Yarik   Стандартизация
111
                          $result[] = ['label' => Yii::t('app', $submenu->name), 'id' => $submenu->admin_menu_id, 'icon' => 'fa fa-circle-o', 'url' => '#', 'items' => $items];
14adae3b   Yarik   Коммит админ меню
112
113
                          unset($items);
                      } else {
e3105834   Yarik   Стандартизация
114
                          $result[] = ['label' => Yii::t('app', $submenu->name), 'id' => $submenu->admin_menu_id, 'icon' => 'fa fa-circle-o', 'url' => array_merge([$submenu->path], \common\models\Tools::parseUrlParams($submenu->param))];
14adae3b   Yarik   Коммит админ меню
115
116
117
118
119
120
121
122
123
124
                      }
                  }
              }
          }
          return $result;
      }
  
      public static function buildMenuSelect()
      {
          $result = [];
e3105834   Yarik   Стандартизация
125
          $roots = self::find()->where(['admin_menu_pid' => NULL])->with(['adminMenus'])->all();
14adae3b   Yarik   Коммит админ меню
126
127
128
129
          foreach($roots as $root) {
              if($root->adminMenus) {
                  $items = [];
                  foreach($root->adminMenus as $submenu) {
e3105834   Yarik   Стандартизация
130
                      $items[] = ['label' => Yii::t('app', $submenu->name), 'id' => $submenu->admin_menu_id];
14adae3b   Yarik   Коммит админ меню
131
                  }
e3105834   Yarik   Стандартизация
132
                  $result[] = ['label' => Yii::t('app', $root->name), 'id' => $root->admin_menu_id, 'items' => $items];
14adae3b   Yarik   Коммит админ меню
133
134
                  unset($items);
              } else {
e3105834   Yarik   Стандартизация
135
                  $result[] = ['label' => Yii::t('app', $root->name), 'id' => $root->admin_menu_id];
14adae3b   Yarik   Коммит админ меню
136
137
138
139
              }
          }
          return $result;
      }
5dfa349e   Yarik   Коммит последний ...
140
141
142
143
  
      public function beforeSave($insert)
      {
          if (parent::beforeSave($insert)) {
e3105834   Yarik   Стандартизация
144
145
              if(!$this->admin_menu_pid) {
                  $this->admin_menu_pid = NULL;
5dfa349e   Yarik   Коммит последний ...
146
147
148
149
150
151
              }
              return true;
          } else {
              return false;
          }
      }
14adae3b   Yarik   Коммит админ меню
152
  }