Blame view

common/models/Catalog.php 3.66 KB
e3ec491c   andryeyev   + Catalog в backe...
1
2
3
  <?php
  
  namespace common\models;
e130021e   andryeyev   + термины и меню ...
4
   
e3ec491c   andryeyev   + Catalog в backe...
5
  use Yii;
e130021e   andryeyev   + термины и меню ...
6
7
  use yii\base\Model;
  use yii\db\Query;
e3ec491c   andryeyev   + Catalog в backe...
8
9
  
  /**
e130021e   andryeyev   + термины и меню ...
10
   * Signup form
e3ec491c   andryeyev   + Catalog в backe...
11
   */
e130021e   andryeyev   + термины и меню ...
12
13
  class Catalog extends Model
  { 
e3ec491c   andryeyev   + Catalog в backe...
14
      /**
e130021e   andryeyev   + термины и меню ...
15
       * весь список терминов
e3ec491c   andryeyev   + Catalog в backe...
16
       */
e130021e   andryeyev   + термины и меню ...
17
      static function get ()
e3ec491c   andryeyev   + Catalog в backe...
18
      {
e130021e   andryeyev   + термины и меню ...
19
20
21
22
23
24
25
          return yii::$app->db->createCommand('
              SELECT 
                  termin_structure.termin_id,
                  termin_structure.termin_pid,
                  termin_lang.termin_title 
              FROM termin_structure  
                  INNER JOIN termin_lang ON termin_lang.termin_id = termin_structure.termin_id
f1ea4c01   andryeyev   lang_id => langua...
26
                      AND termin_lang.language_id = '.Yii::$app->params['language_id'].' 
e130021e   andryeyev   + термины и меню ...
27
28
              ORDER BY termin_structure.termin_id ASC, termin_structure.termin_pid ASC
          ')->queryAll();
e3ec491c   andryeyev   + Catalog в backe...
29
      }
e130021e   andryeyev   + термины и меню ...
30
      
e3ec491c   andryeyev   + Catalog в backe...
31
      /**
3fe15343   andryeyev   + новая версия (d...
32
       * Выполняет поиск по параметрам
f1ea4c01   andryeyev   lang_id => langua...
33
       * @param array $param принимает [catalog_id, language_id, return_one, return_field, show_all]
94ea562b   andryeyev   + редактирование ...
34
35
36
37
38
39
       * @return array one | array all | string значение масива
       */
      public function finInfo (array $params = [])
      {
          Tools::ifNotExist ($params, array (
              'catalog_id' => false,
f1ea4c01   andryeyev   lang_id => langua...
40
              'language_id' => false,
94ea562b   andryeyev   + редактирование ...
41
42
43
44
              'return_one' => false,
              'return_field' => false,
              'show_all' => false,
              'to_array' => true,
e130021e   andryeyev   + термины и меню ...
45
46
          ));
      
94ea562b   andryeyev   + редактирование ...
47
          $model = new Catalog();
e130021e   andryeyev   + термины и меню ...
48
49
50
51
52
      
          $query = $model->find()->select('*');
      
          $query->joinWith(['relationCatalogLang']);
      
94ea562b   andryeyev   + редактирование ...
53
          $WHERE = array ();
e130021e   andryeyev   + термины и меню ...
54
55
      
          if ($params['catalog_id'])
94ea562b   andryeyev   + редактирование ...
56
57
58
          {
              $WHERE['catalog.catalog_id'] = $params['catalog_id'];
          }
e130021e   andryeyev   + термины и меню ...
59
      
f1ea4c01   andryeyev   lang_id => langua...
60
          if ($params['language_id'])
94ea562b   andryeyev   + редактирование ...
61
          {
f1ea4c01   andryeyev   lang_id => langua...
62
              $WHERE['catalog_i18n.language_id'] = $params['language_id'];
94ea562b   andryeyev   + редактирование ...
63
          }
e130021e   andryeyev   + термины и меню ...
64
      
94ea562b   andryeyev   + редактирование ...
65
          if (! empty ($WHERE))
e130021e   andryeyev   + термины и меню ...
66
          {
94ea562b   andryeyev   + редактирование ...
67
68
              $query->where($WHERE);
          }
e130021e   andryeyev   + термины и меню ...
69
70
      
          if ($params['to_array'])
94ea562b   andryeyev   + редактирование ...
71
72
73
          {
              $query = $query->asArray();
          }
e130021e   andryeyev   + термины и меню ...
74
75
76
77
78
79
80
      
          if ($params['return_one'] || $params['return_field'])
          {
      
              $result = $params['return_field'] ? $query->one($params['return_field']) : $query->one();
          }
          else
94ea562b   andryeyev   + редактирование ...
81
          {
e130021e   andryeyev   + термины и меню ...
82
83
84
85
86
87
88
89
90
              $result = $query->all();
          }
      
          return $result;
      }
  
      // ===================
      // ==== STRUCTURE ====
      // ===================
94ea562b   andryeyev   + редактирование ...
91
      
e130021e   andryeyev   + термины и меню ...
92
93
94
95
96
97
98
      var $mass = array (); 
   
      public function build ()
      {
          if ($this->mass = self::get ())
          {
              return $this->getRecrusive (8);
94ea562b   andryeyev   + редактирование ...
99
          }
e130021e   andryeyev   + термины и меню ...
100
101
102
103
104
105
106
      }
  
      public function findChild ($id)
      {
          $mass = array ();
      
          foreach ($this->mass as $row)
94ea562b   andryeyev   + редактирование ...
107
          {
e130021e   andryeyev   + термины и меню ...
108
109
110
111
              if ($row['termin_pid'] == $id)
              {
                  $mass[] = $row;
              }
94ea562b   andryeyev   + редактирование ...
112
          }
e130021e   andryeyev   + термины и меню ...
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
      
          return $mass;
      }
      
      public function getRecrusive ($menu_id)
      { 
          $items = $this->findChild($menu_id);
  
          if (! empty ($items))
          { 
              echo '<ul>';
          
              foreach ($items as $row) 
              { 
                  echo '<li>'.$row['termin_title'].'</li>';
                  
                  if ($row['termin_pid'] != 0)
                  {
                      $this->getRecrusive($row['termin_id']);
                  }
              }
94ea562b   andryeyev   + редактирование ...
134
   
e130021e   andryeyev   + термины и меню ...
135
136
137
              echo '</ul>';
          }
  
94ea562b   andryeyev   + редактирование ...
138
      }
e130021e   andryeyev   + термины и меню ...
139
140
      
      // =====
e3ec491c   andryeyev   + Catalog в backe...
141
142
143
144
  
      /**
       * @return \yii\db\ActiveQuery
       */
94ea562b   andryeyev   + редактирование ...
145
      public function getRelationCatalogLangPlus()
e130021e   andryeyev   + термины и меню ...
146
      {
f1ea4c01   andryeyev   lang_id => langua...
147
          return $this->getRelationCatalogLang()->where(['language_id' => yii::$app->params['language_id']]);
94ea562b   andryeyev   + редактирование ...
148
      }
e130021e   andryeyev   + термины и меню ...
149
      
94ea562b   andryeyev   + редактирование ...
150
151
152
      /**
       * @return \yii\db\ActiveQuery
       */
e130021e   andryeyev   + термины и меню ...
153
      public function getRelationCatalogLang()
e3ec491c   andryeyev   + Catalog в backe...
154
      {
94ea562b   andryeyev   + редактирование ...
155
          return $this->hasOne(CatalogLang::className(), ['catalog_id' => 'catalog_id']);
e3ec491c   andryeyev   + Catalog в backe...
156
      }
94ea562b   andryeyev   + редактирование ...
157
  
e130021e   andryeyev   + термины и меню ...
158
  }