Blame view

common/models/Language.php 2.38 KB
ab4d7cb1   andryeyev   Page + Языковая в...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  <?php
  
  namespace common\models;
  
  use Yii;
  
  /**
   * This is the model class for table "language".
   *
   * @property integer $language_id
   * @property string $lang_code
   */
  class Language extends \yii\db\ActiveRecord
  {
18ac4398   Yarik   Добавлен блог (ча...
15
  
ab4d7cb1   andryeyev   Page + Языковая в...
16
17
      //Переменная, для хранения текущего объекта языка
      static $current = null;
18ac4398   Yarik   Добавлен блог (ча...
18
  
ab4d7cb1   andryeyev   Page + Языковая в...
19
20
21
      //Получение текущего объекта языка
      static function getCurrent()
      {
18ac4398   Yarik   Добавлен блог (ча...
22
          if (self::$current === null) {
ab4d7cb1   andryeyev   Page + Языковая в...
23
24
25
26
27
              self::$current = self::getDefaultLang();
          }
  
          return self::$current;
      }
18ac4398   Yarik   Добавлен блог (ча...
28
  
ab4d7cb1   andryeyev   Page + Языковая в...
29
      //Установка текущего объекта языка и локаль пользователя
18ac4398   Yarik   Добавлен блог (ча...
30
      static function setCurrent($lang_code = null)
ab4d7cb1   andryeyev   Page + Языковая в...
31
      {
18ac4398   Yarik   Добавлен блог (ча...
32
          $language = self::getLangByUrl($lang_code);
ab4d7cb1   andryeyev   Page + Языковая в...
33
34
35
          self::$current = ($language === null) ? self::getDefaultLang() : $language;
          // задаем
          Yii::$app->language = self::$current->lang_code;
0769f724   Yarik   Изменен метод уст...
36
          Yii::$app->params['lang_id'] = self::$current->language_id;
ab4d7cb1   andryeyev   Page + Языковая в...
37
      }
18ac4398   Yarik   Добавлен блог (ча...
38
  
ab4d7cb1   andryeyev   Page + Языковая в...
39
40
41
      //Получения объекта языка по умолчанию
      static function getDefaultLang()
      {
b15a9aec   Yarik   Добавил языки, ад...
42
          return Language::find()->where('is_default = :default', [':default' => 1])->one();
ab4d7cb1   andryeyev   Page + Языковая в...
43
      }
18ac4398   Yarik   Добавлен блог (ча...
44
  
ab4d7cb1   andryeyev   Page + Языковая в...
45
      //Получения объекта языка по буквенному идентификатору
18ac4398   Yarik   Добавлен блог (ча...
46
      static function getLangByUrl($lang_code = null)
ab4d7cb1   andryeyev   Page + Языковая в...
47
      {
18ac4398   Yarik   Добавлен блог (ча...
48
          if ($lang_code === null) {
ab4d7cb1   andryeyev   Page + Языковая в...
49
              return null;
18ac4398   Yarik   Добавлен блог (ча...
50
51
52
          } else {
              $language = Language::find()->where('lang_code = :what', [':what' => $lang_code])->one();
              return $language === null ? null : $language;
ab4d7cb1   andryeyev   Page + Языковая в...
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
          }
      }
  
      /**
       * @inheritdoc
       */
      public static function tableName()
      {
          return 'language';
      }
  
      /**
       * @inheritdoc
       */
      public function rules()
      {
          return [
              [['lang_code'], 'required'],
              [['lang_code'], 'string', 'max' => 4]
          ];
      }
  
      /**
       * @inheritdoc
       */
      public function attributeLabels()
      {
          return [
              'language_id' => Yii::t('app/Lang', 'Language ID'),
              'lang_code' => Yii::t('app/Lang', 'Lang Code'),
          ];
      }
18ac4398   Yarik   Добавлен блог (ча...
85
86
87
88
89
90
  
      public static function getActiveLanguages()
      {
          return Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1])->orderBy('is_default DESC')->indexBy('language_id')->all();
      }
  
ab4d7cb1   andryeyev   Page + Языковая в...
91
  }