This repository has been archived on 2024-12-01. You can view files and clone it, but cannot push or open issues or pull requests.
factuges_web/www/protected/modules/usuario/models/Perfil.php
david e93adbdd4e - Importación inicial
- 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
2013-06-13 16:04:48 +00:00

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();
}
}