<?php

namespace app\models;
use app\common\components\FormElements;
use Yii;

/**
 * This is the model class for table "{{%content_model_field}}".
 *
 * @property int $field_id ID
 * @property int|null $model_id 模型ID
 * @property string $field 字段名称
 * @property string $name 别名
 * @property string|null $tips 录入提示
 * @property string $css 样式
 * @property int $min_length 最小长度
 * @property int $max_length 最大长度
 * @property string $pattern 正则验证规则
 * @property string $error_tips 错误提示
 * @property string $form_type 表单类型
 * @property string|null $setting 设置
 * @property string $form_attribute 表单属性
 * @property string $unset_group_ids 禁止设置字段值的会员组
 * @property string $unset_role_ids 禁止设置字段值的角色
 * @property int $is_core 内部字段
 * @property int $is_system 系统字段
 * @property int $is_unique 值唯一
 * @property int $is_base 基础信息
 * @property int $is_search 作为搜索条件
 * @property int $is_order 作为排序条件
 * @property int $is_add 前台投稿中显示
 * @property int $is_add_admin 后台投稿中显示
 * @property int $is_fullsearch 作为全站搜索信息
 * @property int $is_position 在推荐位标签中调用 
 * @property int $is_omnipotent 作为万能字段的附属字段
 * @property int $list_order 排序
 * @property int $disabled 状态
 */
class ContentModelField extends \app\common\models\EActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return '{{%content_model_field}}';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['model_id', 'min_length', 'max_length', 'is_core', 'is_system', 'is_unique', 'is_base', 'is_search', 'is_order', 'is_add', 'is_add_admin', 'is_fullsearch', 'is_position', 'is_omnipotent', 'is_listshow', 'list_order', 'disabled'], 'integer'],
            [['field', 'name','form_type'], 'required'],
            [['tips', 'setting'], 'string'],
            [['field', 'form_type'], 'string', 'max' => 20],
            [['name', 'css'], 'string', 'max' => 30],
            [['pattern', 'error_tips', 'form_attribute', 'unset_group_ids', 'unset_role_ids'], 'string', 'max' => 255],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'field_id' => Yii::t('attr','content_model_field.field_id'),
            'model_id' => Yii::t('attr','content_model_field.model_id'),
            'field' => Yii::t('attr','content_model_field.field'),
            'name' => Yii::t('attr','content_model_field.name'),
            'tips' => Yii::t('attr','content_model_field.tips'),
            'css' => Yii::t('attr','content_model_field.css'),
            'min_length' => Yii::t('attr','content_model_field.min_length'),
            'max_length' => Yii::t('attr','content_model_field.max_length'),
            'pattern' => Yii::t('attr','content_model_field.pattern'),
            'error_tips' => Yii::t('attr','content_model_field.error_tips'),
            'form_type' => Yii::t('attr','content_model_field.form_type'),
            'setting' => Yii::t('attr','content_model_field.setting'),
            'form_attribute' => Yii::t('attr','content_model_field.form_attribute'),
            'unset_group_ids' => Yii::t('attr','content_model_field.unset_group_ids'),
            'unset_role_ids' => Yii::t('attr','content_model_field.unset_role_ids'),
            'is_core' => Yii::t('attr','content_model_field.is_core'),
            'is_system' => Yii::t('attr','content_model_field.is_system'),
            'is_unique' => Yii::t('attr','content_model_field.is_unique'),
            'is_base' => Yii::t('attr','content_model_field.is_base'),
            'is_search' =>Yii::t('attr','content_model_field.is_search'),
            'is_order' => Yii::t('attr','content_model_field.is_order'),
            'is_add' => Yii::t('attr','content_model_field.is_add'),
            'is_add_admin' => Yii::t('attr','content_model_field.is_add_admin'),
            'is_fullsearch' => Yii::t('attr','content_model_field.is_fullsearch'),
            'is_position' => Yii::t('attr','content_model_field.is_position'),
            'is_omnipotent' => Yii::t('attr','content_model_field.is_omnipotent'),
            'is_listshow' => Yii::t('attr','content_model_field.is_listshow'),
            'list_order' => Yii::t('attr','content_model_field.list_order'),
            'disabled' => Yii::t('attr','content_model_field.disabled'),
        ];
    }

    /*返回可选择的字段类型
   * $_GET['id'] 不为空时是在修改字段
  */
    public function getFormTypes()
    {
        $all_field = array();
        $model_id = intval(Yii::$app->request->get('model_id'));
        if(empty($model_id))return;
        $f_datas = ContentModelField::find()->where("model_id=:model_id",[':model_id'=>$model_id])->orderBy(['list_order' => SORT_ASC])->all();;
        if(is_array($f_datas))foreach($f_datas as $o) {
            $exists_field[] = $o->field;
        }
        $all_field = array();
        $fields = FormElements::getFieldsInfo('types');
        $not_allow_fields = FormElements::getFieldsInfo('not_allow_fields');
        $unique_fields = FormElements::getFieldsInfo('unique_fields');
        if(empty($_GET['id']))
        {
            foreach($fields as $_k=>$_v) {
                if((is_array($not_allow_fields)&&in_array($_k,$not_allow_fields)) || (is_array($exists_field)&&in_array($_k,$exists_field)) && (is_array($unique_fields)&&in_array($_k,$unique_fields))) continue;
                $all_field[$_k] = $_v;
            }
        }
        else
        {
            foreach($fields as $_k=>$_v) {

                $all_field[$_k] = $_v;
            }
        }
        return $all_field;
    }
}