Blame view

common/modules/language/models/Language.php 4.68 KB
d8c1a2e0   Yarik   Big commit artbox
1
2
3
4
5
6
7
8
9
  <?php
      
      namespace common\modules\language\models;
      
      use Yii;
      use yii\db\ActiveRecord;
      
      /**
       * This is the model class for table "language".
8af13427   Yarik   For leha commit.
10
11
       *
       * @property integer $id
d8c1a2e0   Yarik   Big commit artbox
12
13
14
15
       * @property string  $url
       * @property string  $local
       * @property string  $name
       * @property boolean $default
8af13427   Yarik   For leha commit.
16
17
       * @property integer $created_at
       * @property integer $updated_at
d8c1a2e0   Yarik   Big commit artbox
18
       */
5c2eb7c8   Yarik   Big commit almost...
19
      class Language extends ActiveRecord
d8c1a2e0   Yarik   Big commit artbox
20
      {
5c2eb7c8   Yarik   Big commit almost...
21
          
e8ccb1b4   Yarik   Import beta
22
23
24
          /**
           * @var null|self
           */
8af13427   Yarik   For leha commit.
25
          public static $current = null;
d8c1a2e0   Yarik   Big commit artbox
26
27
28
29
30
31
32
33
          
          /**
           * @inheritdoc
           */
          public static function tableName()
          {
              return 'language';
          }
5c2eb7c8   Yarik   Big commit almost...
34
          
d8c1a2e0   Yarik   Big commit artbox
35
36
37
38
39
40
41
          /**
           * @inheritdoc
           */
          public function behaviors()
          {
              return [
                  'timestamp' => [
5c2eb7c8   Yarik   Big commit almost...
42
                      'class'      => 'yii\behaviors\TimestampBehavior',
d8c1a2e0   Yarik   Big commit artbox
43
44
                      'attributes' => [
                          ActiveRecord::EVENT_BEFORE_INSERT => [
8af13427   Yarik   For leha commit.
45
46
                              'created_at',
                              'updated_at',
d8c1a2e0   Yarik   Big commit artbox
47
48
                          ],
                          ActiveRecord::EVENT_BEFORE_UPDATE => [
8af13427   Yarik   For leha commit.
49
                              'updated_at',
d8c1a2e0   Yarik   Big commit artbox
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
                          ],
                      ],
                  ],
              ];
          }
          
          /**
           * @inheritdoc
           */
          public function rules()
          {
              return [
                  [
                      [
                          'url',
                          'local',
                          'name',
8af13427   Yarik   For leha commit.
67
68
                          'created_at',
                          'updated_at',
d8c1a2e0   Yarik   Big commit artbox
69
70
71
72
73
74
75
76
77
                      ],
                      'required',
                  ],
                  [
                      [ 'default' ],
                      'boolean',
                  ],
                  [
                      [
8af13427   Yarik   For leha commit.
78
79
                          'created_at',
                          'updated_at',
d8c1a2e0   Yarik   Big commit artbox
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
                      ],
                      'integer',
                  ],
                  [
                      [
                          'url',
                          'local',
                          'name',
                      ],
                      'string',
                      'max' => 255,
                  ],
              ];
          }
          
          /**
           * @inheritdoc
           */
          public function attributeLabels()
          {
              return [
8af13427   Yarik   For leha commit.
101
                  'id' => Yii::t('app', 'Language ID'),
d8c1a2e0   Yarik   Big commit artbox
102
103
104
105
                  'url'         => Yii::t('app', 'Url'),
                  'local'       => Yii::t('app', 'Local'),
                  'name'        => Yii::t('app', 'Name'),
                  'default'     => Yii::t('app', 'Default'),
8af13427   Yarik   For leha commit.
106
107
                  'created_at'  => Yii::t('app', 'Date Create'),
                  'updated_at'  => Yii::t('app', 'Date Update'),
d8c1a2e0   Yarik   Big commit artbox
108
109
              ];
          }
5c2eb7c8   Yarik   Big commit almost...
110
          
d8c1a2e0   Yarik   Big commit artbox
111
112
          /**
           * Get current language
8af13427   Yarik   For leha commit.
113
           *
d8c1a2e0   Yarik   Big commit artbox
114
115
116
117
           * @return null|Language
           */
          public static function getCurrent()
          {
8af13427   Yarik   For leha commit.
118
              if (self::$current === null) {
d8c1a2e0   Yarik   Big commit artbox
119
120
121
122
                  self::$current = self::getDefaultLanguage();
              }
              return self::$current;
          }
5c2eb7c8   Yarik   Big commit almost...
123
          
d8c1a2e0   Yarik   Big commit artbox
124
125
126
127
128
          /**
           * Set current language by Url param
           *
           * @param null|string $url Language url param
           */
8af13427   Yarik   For leha commit.
129
          public static function setCurrent($url = null)
5c2eb7c8   Yarik   Big commit almost...
130
          {
d8c1a2e0   Yarik   Big commit artbox
131
              $language = self::getLanguageByUrl($url);
8af13427   Yarik   For leha commit.
132
              self::$current = ( $language === null ) ? self::getDefaultLanguage() : $language;
d8c1a2e0   Yarik   Big commit artbox
133
134
              Yii::$app->language = self::$current->local;
          }
5c2eb7c8   Yarik   Big commit almost...
135
          
d8c1a2e0   Yarik   Big commit artbox
136
137
          /**
           * Get default language
8af13427   Yarik   For leha commit.
138
           *
d8c1a2e0   Yarik   Big commit artbox
139
140
           * @return null|Language
           */
5c2eb7c8   Yarik   Big commit almost...
141
142
          public static function getDefaultLanguage()
          {
d8c1a2e0   Yarik   Big commit artbox
143
144
145
              /**
               * @var null|Language $language
               */
5c2eb7c8   Yarik   Big commit almost...
146
147
148
              $language = self::find()
                              ->where([ 'default' => true ])
                              ->one();
d8c1a2e0   Yarik   Big commit artbox
149
150
              return $language;
          }
5c2eb7c8   Yarik   Big commit almost...
151
          
d8c1a2e0   Yarik   Big commit artbox
152
153
154
155
156
157
158
          /**
           * Get language by Url param
           *
           * @param null|string $url Language url param
           *
           * @return null|Language
           */
8af13427   Yarik   For leha commit.
159
          public static function getLanguageByUrl($url = null)
5c2eb7c8   Yarik   Big commit almost...
160
          {
8af13427   Yarik   For leha commit.
161
162
              if ($url === null) {
                  return null;
d8c1a2e0   Yarik   Big commit artbox
163
164
165
166
              } else {
                  /**
                   * @var null|Language $language
                   */
5c2eb7c8   Yarik   Big commit almost...
167
168
169
                  $language = self::find()
                                  ->where([ 'url' => $url ])
                                  ->one();
8af13427   Yarik   For leha commit.
170
171
                  if ($language === null) {
                      return null;
d8c1a2e0   Yarik   Big commit artbox
172
173
174
175
176
177
                  } else {
                      return $language;
                  }
              }
          }
      }