* @copyright (c), Thread */ class Country extends ActiveRecord { /** * * @return string */ public static function getDb() { return LocationModule::getDb(); } /** * Table name * * @return string */ public static function tableName() { return '{{%location_country}}'; } /** * @inheritdoc * @return array */ public function behaviors() { return ArrayHelper::merge( parent::behaviors(), [ [ 'class' => AttributeBehavior::className(), 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => 'alias', ActiveRecord::EVENT_BEFORE_UPDATE => 'alias', ], 'value' => function ($event) { return Inflector::slug($this->alias); }, ], ] ); } /** * * @return array */ public function rules() { return [ [['alias'], 'required'], [['created_at', 'on_main', 'view_for_sanatorium', 'position', 'updated_at', 'iso', 'visa', 'visa_supply'], 'integer'], [['published', 'deleted'], 'in', 'range' => array_keys(static::statusKeyRange())], [['position'], 'default', 'value' => 0], [['alias'], 'string', 'max' => 128], [['default_title'], 'string', 'max' => 255], [['alpha2'], 'string', 'min' => 2, 'max' => 2], [['alpha3'], 'string', 'min' => 3, 'max' => 3], [['alias'], 'unique'], ]; } /** * * @return array */ public function scenarios() { return [ 'published' => ['published'], 'deleted' => ['deleted'], 'backend' => ['alias', 'alpha2', 'alpha3', 'iso', 'published', 'deleted', 'default_title'], ]; } /** * * @return array */ public function attributeLabels() { return [ 'id' => Yii::t('app', 'ID'), 'alias' => Yii::t('app', 'Alias'), 'alpha2' => Yii::t('location', 'alpha2'), 'alpha3' => Yii::t('location', 'alpha3'), 'iso' => Yii::t('location', 'iso'), 'created_at' => Yii::t('app', 'Create time'), 'updated_at' => Yii::t('app', 'Update time'), 'published' => Yii::t('app', 'Published'), 'deleted' => Yii::t('app', 'Deleted'), 'title' => Yii::t('app', 'Title'), 'default_title' => Yii::t('app', 'Default Title'), ]; } /** * @return \yii\db\ActiveQuery */ public function getLang() { return $this->hasOne(CountryLang::class, ['rid' => 'id']); } /** * @return string */ public function getTitle() { return (isset($this->lang->title)) ? $this->lang->title : "{{$this->default_title}}"; } /** * @return \yii\db\ActiveQuery */ public function getCurrencies() { return $this->hasMany(Currency::class, ['id' => 'currency_id'])->viaTable('%location_rel_country_currency', ['country_id' => 'id']); } /** * @return \yii\db\ActiveQuery */ public function getCities() { return $this->hasMany(City::class, ['country_id' => 'id']); } /** * @return int|string */ public function getCitiesCount() { return $this->getCities()->count(); } }