Blame view

common/models/Language.php 2.94 KB
14a09168   Alex Savenko   init commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
  <?php

  

  namespace common\models;

  

  use Yii;

  

  /**

   * This is the model class for table "language".

   *

   * @property integer $language_id

   * @property string $language_code

   * @property string $is_default

   * @property string $language_name

   * @property string $status

   * @property string $country_code

   */

  class Language extends \yii\db\ActiveRecord

  {

  

      //Переменная, для хранения текущего объекта языка

      static $current = null;

  

      //Получение текущего объекта языка

      static function getCurrent()

      {

          if (self::$current === null) {

              self::$current = self::getDefaultLang();

          }

  

          return self::$current;

      }

  

      //Установка текущего объекта языка и локаль пользователя

      static function setCurrent($lang_code = null)

      {

          $language = self::getLangByUrl($lang_code);

          self::$current = ($language === null) ? self::getDefaultLang() : $language;

          // задаем

          Yii::$app->language = self::$current->language_code;

          Yii::$app->params['language_id'] = self::$current->language_id;

      }

  

      //Получения объекта языка по умолчанию

      static function getDefaultLang()

      {

          return Language::find()->where('is_default = :default', [':default' => 1])->one();

      }

  

      //Получения объекта языка по буквенному идентификатору

      static function getLangByUrl($lang_code = null)

      {

          if ($lang_code === null) {

              return null;

          } else {

              $language = Language::find()->where('language_code = :what', [':what' => $lang_code])->one();

              return $language === null ? null : $language;

          }

      }

  

      /**

       * @inheritdoc

       */

      public static function tableName()

      {

          return 'language';

      }

  

      /**

       * @inheritdoc

       */

      public function rules()

      {

          return [

              [['language_code', 'language_name', 'country_code'], 'required'],

              [['language_code', 'country_code'], 'string', 'max' => 4]

          ];

      }

  

      /**

       * @inheritdoc

       */

      public function attributeLabels()

      {

          return [

              'language_id' => Yii::t('app/Lang', 'Language ID'),

              'language_code' => Yii::t('app/Lang', 'Lang Code'),

              'is_default' => Yii::t('app/Lang', 'Default lang'),

              'language_name' => Yii::t('app/Lang', 'Language Name'),

              'status' => Yii::t('app/Lang', 'Language Status'),

              'country_code' => Yii::t('app/Lang', 'Country Code'),

          ];

      }

  

      public static function getActiveLanguages()

      {

          return Language::find()->where(['>=', 'language_id', 1])->andWhere(['status' => 1])->orderBy('is_default DESC')->indexBy('language_id')->all();

      }

  

  }