Language.php 2.2 KB
<?php

namespace backend\modules\sys\models;

use Yii;
use yii\helpers\{
    ArrayHelper, Inflector
};
use yii\behaviors\AttributeBehavior;
//
use thread\app\base\models\ActiveRecord;
use thread\actions\fileapi\UploadBehavior;

/**
 * Class Language
 *
 * @package backend\modules\sys\models
 * @author FilamentV <vortex.filament@gmail.com>
 * @copyright (c), Thread
 */
class Language extends \thread\modules\sys\models\Language
{
    /**
     * @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);
                },
            ],
            'uploadBehavior' => [
                'class' => UploadBehavior::class,
                'unlinkOnDelete' => false,
                'attributes' => [
                    'img_flag' => [
                        'getBaseUploadPathOwner' => 'getBaseUploadPath',
                        'getBaseUploadUrlOwner' => 'getBaseUploadUrl',
                    ],
                ]
            ],
        ]);
    }

    /**
     * @param $params
     * @return \yii\data\ActiveDataProvider
     */
    public function search($params)
    {
        return (new search\Language())->search($params);
    }

    /**
     * @param $params
     * @return \yii\data\ActiveDataProvider
     */
    public function trash($params)
    {
        return (new search\Language())->trash($params);
    }

    /**
     * @param $insert
     * @return mixed
     * @throws \yii\db\Exception
     */
    public function beforeSave($insert)
    {
        if ($this->by_default == self::STATUS_KEY_ON) {
            self::getDb()->createCommand()->update(self::tableName(), ['by_default' => self::STATUS_KEY_OFF], 'id <> '.$this->id)->execute();
            $this->deleted = self::STATUS_KEY_OFF;
            $this->published = self::STATUS_KEY_ON;
        }
        return parent::beforeSave($insert);
    }
}