getModule('user')->tableProfiles; } /** * @return array validation rules for model attributes. */ public function rules() { if (!self::$_rules) { $required = array(); $numerical = array(); $float = array(); $decimal = array(); $rules = array(); $model=self::getFields(); foreach ($model as $field) { $field_rule = array(); if ($field->required==ProfileField::REQUIRED_YES_NOT_SHOW_REG||$field->required==ProfileField::REQUIRED_YES_SHOW_REG) array_push($required,$field->varname); if ($field->field_type=='FLOAT') array_push($float,$field->varname); if ($field->field_type=='DECIMAL') array_push($decimal,$field->varname); if ($field->field_type=='INTEGER') array_push($numerical,$field->varname); if ($field->field_type=='VARCHAR'||$field->field_type=='TEXT') { $field_rule = array($field->varname, 'length', 'max'=>$field->field_size, 'min' => $field->field_size_min); if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message); array_push($rules,$field_rule); } if ($field->other_validator) { if (strpos($field->other_validator,'{')===0) { $validator = (array)CJavaScript::jsonDecode($field->other_validator); foreach ($validator as $name=>$val) { $field_rule = array($field->varname, $name); $field_rule = array_merge($field_rule,(array)$validator[$name]); if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message); array_push($rules,$field_rule); } } else { $field_rule = array($field->varname, $field->other_validator); if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message); array_push($rules,$field_rule); } } elseif ($field->field_type=='DATE') { if ($field->required) $field_rule = array($field->varname, 'date', 'format' => array('yyyy-mm-dd')); else $field_rule = array($field->varname, 'date', 'format' => array('yyyy-mm-dd','0000-00-00'), 'allowEmpty'=>true); if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message); array_push($rules,$field_rule); } if ($field->match) { $field_rule = array($field->varname, 'match', 'pattern' => $field->match); if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message); array_push($rules,$field_rule); } if ($field->range) { $field_rule = array($field->varname, 'in', 'range' => self::rangeRules($field->range)); if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message); array_push($rules,$field_rule); } } array_push($rules,array(implode(',',$required), 'required')); array_push($rules,array(implode(',',$numerical), 'numerical', 'integerOnly'=>true)); array_push($rules,array(implode(',',$float), 'type', 'type'=>'float')); array_push($rules,array(implode(',',$decimal), 'match', 'pattern' => '/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/')); self::$_rules = $rules; } return self::$_rules; } /** * @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. $relations = array( 'user'=>array(self::HAS_ONE, 'User', 'id'), ); if (isset(Yii::app()->getModule('user')->profileRelations)) $relations = array_merge($relations,Yii::app()->getModule('user')->profileRelations); return $relations; } /** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { $labels = array( 'user_id' => UserModule::t('User ID'), ); $model=self::getFields(); foreach ($model as $field) $labels[$field->varname] = ((Yii::app()->getModule('user')->fieldsMessage)?UserModule::t($field->title,array(),Yii::app()->getModule('user')->fieldsMessage):UserModule::t($field->title)); return $labels; } private function rangeRules($str) { $rules = explode(';',$str); for ($i=0;$iwidget) $data[$field->varname]=$field->widget; } return $data; } public function widgetParams($fieldName) { $data = array(); $model=self::getFields(); foreach ($model as $field) { if ($field->widget) $data[$field->varname]=$field->widgetparams; } return $data[$fieldName]; } public static function getFields() { if (self::$regMode) { if (!self::$_modelReg) self::$_modelReg=ProfileField::model()->forRegistration()->findAll(); return self::$_modelReg; } else { if (!self::$_model) self::$_model=ProfileField::model()->forOwner()->findAll(); return self::$_model; } } public function afterSave() { if (get_class(Yii::app())=='CWebApplication'&&Profile::$regMode==false) { Yii::app()->user->updateSession(); } return parent::afterSave(); } }