- Registro, activación y entrada de usuarios git-svn-id: https://192.168.0.254/svn/Rodax.factuges_web/trunk@2 e455b18d-f7fe-5245-9c43-e2c35af70a32
202 lines
7.9 KiB
PHP
202 lines
7.9 KiB
PHP
<?php
|
|
|
|
class Perfil extends CActiveRecord {
|
|
|
|
/**
|
|
* The followings are the available columns in table 'perfiles':
|
|
* @var integer $user_id
|
|
* @var boolean $regMode
|
|
*/
|
|
public static $regMode = false;
|
|
private static $_model;
|
|
private static $_modelReg;
|
|
private static $_rules = array();
|
|
|
|
/**
|
|
* Returns the static model of the specified AR class.
|
|
* @return CActiveRecord the static model class
|
|
*/
|
|
public static function model($className = __CLASS__) {
|
|
return parent::model($className);
|
|
}
|
|
|
|
/**
|
|
* @return string the associated database table name
|
|
*/
|
|
public function tableName() {
|
|
return Yii::app()->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 == CampoPerfil::REQUIRED_YES_NOT_SHOW_REG || $field->required == CampoPerfil::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 = CampoPerfil::model()->forRegistration()->findAll();
|
|
return self::$_modelReg;
|
|
} else {
|
|
if (!self::$_model)
|
|
self::$_model = CampoPerfil::model()->forOwner()->findAll();
|
|
return self::$_model;
|
|
}
|
|
}
|
|
|
|
public function afterSave() {
|
|
if (get_class(Yii::app()) == 'CWebApplication' && Perfil::$regMode == false) {
|
|
Yii::app()->user->updateSession();
|
|
}
|
|
return parent::afterSave();
|
|
}
|
|
|
|
} |