Language.php 2.22 KB
<?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
{
    
    //Переменная, для хранения текущего объекта языка
    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->lang_code;
        Yii::$app->lang_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('lang_code = :what', [':what' => $lang_code])->one(); 
            return $language === null ? null : $language; 
        }
    }

    /**
     * @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'),
        ];
    }
}