'/^[A-Za-z_0-9]+$/u','message' => "La cadena debe contener los caracteres A-z, 0-9, guion bajo, empezar con letras."), array('varname', 'unique', 'message' => "El campo ya ha sido registrado anteriormente."), array('varname, field_type', 'length', 'max'=>50), array('field_size_min, required, position, visible', 'numerical', 'integerOnly'=>true), array('field_size', 'match', 'pattern' => '/^\s*[-+]?[0-9]*\,*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/'), array('title, match, error_message, other_validator, default, widget', 'length', 'max'=>255), array('range, widgetparams', 'length', 'max'=>5000), array('id, varname, title, field_type, field_size, field_size_min, required, match, range, error_message, other_validator, default, widget, widgetparams, position, visible', 'safe', 'on'=>'search'), ); } /** * @return array relational rules. */ public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( ); } /** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { return array( 'id' => 'Id', 'varname' => 'Variable name', 'title' => 'Title', 'field_type' => 'Field Type', 'field_size' => 'Field Size', 'field_size_min' => 'Field Size min', 'required' => 'Required', 'match' => 'Match', 'range' => 'Range', 'error_message' =>'Error Message', 'other_validator' => 'Other Validator', 'default' => 'Default', 'widget' => 'Widget', 'widgetparams' =>'Widget parameters', 'position' => 'Position', 'visible' => 'Visible', ); } public function scopes() { return array( 'forAll'=>array( 'condition'=>'visible='.self::VISIBLE_ALL, 'order'=>'position', ), 'forUser'=>array( 'condition'=>'visible>='.self::VISIBLE_REGISTER_USER, 'order'=>'position', ), 'forOwner'=>array( 'condition'=>'visible>='.self::VISIBLE_ONLY_OWNER, 'order'=>'position', ), 'forRegistration'=>array( 'condition'=>'required='.self::REQUIRED_NO_SHOW_REG.' OR required='.self::REQUIRED_YES_SHOW_REG, 'order'=>'position', ), 'sort'=>array( 'order'=>'position', ), ); } /** * @param $value * @return formated value (string) */ public function widgetView($model) { if ($this->widget && class_exists($this->widget)) { $widgetClass = new $this->widget; $arr = $this->widgetparams; if ($arr) { $newParams = $widgetClass->params; $arr = (array)CJavaScript::jsonDecode($arr); foreach ($arr as $p=>$v) { if (isset($newParams[$p])) $newParams[$p] = $v; } $widgetClass->params = $newParams; } if (method_exists($widgetClass,'viewAttribute')) { return $widgetClass->viewAttribute($model,$this); } } return false; } public function widgetEdit($model,$params=array()) { if ($this->widget && class_exists($this->widget)) { $widgetClass = new $this->widget; $arr = $this->widgetparams; if ($arr) { $newParams = $widgetClass->params; $arr = (array)CJavaScript::jsonDecode($arr); foreach ($arr as $p=>$v) { if (isset($newParams[$p])) $newParams[$p] = $v; } $widgetClass->params = $newParams; } if (method_exists($widgetClass,'editAttribute')) { return $widgetClass->editAttribute($model,$this,$params); } } return false; } public static function itemAlias($type,$code=NULL) { $_items = array( 'field_type' => array( 'INTEGER' => 'INTEGER', 'VARCHAR' => 'VARCHAR', 'TEXT'=> 'TEXT', 'DATE'=> 'DATE', 'FLOAT'=> 'FLOAT', 'DECIMAL'=> 'DECIMAL', 'BOOL'=> 'BOOL', 'BLOB'=> 'BLOB', 'BINARY'=> 'BINARY', ), 'required' => array( self::REQUIRED_NO => 'No', self::REQUIRED_NO_SHOW_REG => 'No, but show on registration form', self::REQUIRED_YES_SHOW_REG => 'Yes and show on registration form', self::REQUIRED_YES_NOT_SHOW_REG => 'Yes', ), 'visible' => array( self::VISIBLE_ALL => UserModule::t('For all'), self::VISIBLE_REGISTER_USER => UserModule::t('Registered users'), self::VISIBLE_ONLY_OWNER => UserModule::t('Only owner'), self::VISIBLE_NO => UserModule::t('Hidden'), ), ); if (isset($code)) return isset($_items[$type][$code]) ? $_items[$type][$code] : false; else return isset($_items[$type]) ? $_items[$type] : false; } /** * Retrieves a list of models based on the current search/filter conditions. * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. */ public function search() { // Warning: Please modify the following code to remove attributes that // should not be searched. $criteria=new CDbCriteria; $criteria->compare('id',$this->id); $criteria->compare('varname',$this->varname,true); $criteria->compare('title',$this->title,true); $criteria->compare('field_type',$this->field_type,true); $criteria->compare('field_size',$this->field_size); $criteria->compare('field_size_min',$this->field_size_min); $criteria->compare('required',$this->required); $criteria->compare('match',$this->match,true); $criteria->compare('range',$this->range,true); $criteria->compare('error_message',$this->error_message,true); $criteria->compare('other_validator',$this->other_validator,true); $criteria->compare('default',$this->default,true); $criteria->compare('widget',$this->widget,true); $criteria->compare('widgetparams',$this->widgetparams,true); $criteria->compare('position',$this->position); $criteria->compare('visible',$this->visible); return new CActiveDataProvider(get_class($this), array( 'criteria'=>$criteria, 'pagination'=>array( 'pageSize'=>Yii::app()->controller->module->fields_page_size, ), 'sort'=>array( 'defaultOrder'=>'position', ), )); } }