getModule('usuario')->tablaPerfiles; } /** * @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'] = UsuarioModule::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'] = UsuarioModule::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'] = UsuarioModule::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'] = UsuarioModule::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'] = UsuarioModule::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'] = UsuarioModule::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( 'usuario' => array(self::HAS_ONE, 'Usuario', 'id'), ); if (isset(Yii::app()->getModule('usuario')->profileRelations)) $relations = array_merge($relations, Yii::app()->getModule('usuario')->profileRelations); return $relations; } /** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { $labels = array( 'usuario_id' => UsuarioModule::t('ID Usuario'), ); $model = self::getFields(); foreach ($model as $field) $labels[$field->varname] = ((Yii::app()->getModule('usuario')->fieldsMessage) ? UsuarioModule::t($field->title, array(), Yii::app()->getModule('usuario')->fieldsMessage) : UsuarioModule::t($field->title)); return $labels; } private function rangeRules($str) { $rules = explode(';', $str); for ($i = 0; $i < count($rules); $i++) $rules[$i] = current(explode("==", $rules[$i])); return $rules; } static public function range($str, $fieldValue = NULL) { $rules = explode(';', $str); $array = array(); for ($i = 0; $i < count($rules); $i++) { $item = explode("==", $rules[$i]); if (isset($item[0])) $array[$item[0]] = ((isset($item[1])) ? $item[1] : $item[0]); } if (isset($fieldValue)) if (isset($array[$fieldValue])) return $array[$fieldValue]; else return ''; else return $array; } public function widgetAttributes() { $data = array(); $model = self::getFields(); foreach ($model as $field) { if ($field->widget) $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(); } }