- 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
247 lines
8.0 KiB
PHP
247 lines
8.0 KiB
PHP
<?php
|
|
|
|
class ProfileField extends CActiveRecord
|
|
{
|
|
const VISIBLE_ALL=3;
|
|
const VISIBLE_REGISTER_USER=2;
|
|
const VISIBLE_ONLY_OWNER=1;
|
|
const VISIBLE_NO=0;
|
|
|
|
const REQUIRED_NO = 0;
|
|
const REQUIRED_YES_SHOW_REG = 1;
|
|
const REQUIRED_NO_SHOW_REG = 2;
|
|
const REQUIRED_YES_NOT_SHOW_REG = 3;
|
|
|
|
/**
|
|
* The followings are the available columns in table 'profiles_fields':
|
|
* @var integer $id
|
|
* @var string $varname
|
|
* @var string $title
|
|
* @var string $field_type
|
|
* @var integer $field_size
|
|
* @var integer $field_size_mix
|
|
* @var integer $required
|
|
* @var integer $match
|
|
* @var string $range
|
|
* @var string $error_message
|
|
* @var string $other_validator
|
|
* @var string $default
|
|
* @var integer $position
|
|
* @var integer $visible
|
|
*/
|
|
|
|
/**
|
|
* 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('user')->tableProfileFields;
|
|
}
|
|
|
|
/**
|
|
* @return array validation rules for model attributes.
|
|
*/
|
|
public function rules()
|
|
{
|
|
// NOTE: you should only define rules for those attributes that
|
|
// will receive user inputs.
|
|
return array(
|
|
array('varname, title, field_type', 'required'),
|
|
array('varname', 'match', 'pattern' => '/^[A-Za-z_0-9]+$/u','message' => UserModule::t("Variable name may consist of A-z, 0-9, underscores, begin with a letter.")),
|
|
array('varname', 'unique', 'message' => UserModule::t("This field already exists.")),
|
|
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' => UserModule::t('Id'),
|
|
'varname' => UserModule::t('Variable name'),
|
|
'title' => UserModule::t('Title'),
|
|
'field_type' => UserModule::t('Field Type'),
|
|
'field_size' => UserModule::t('Field Size'),
|
|
'field_size_min' => UserModule::t('Field Size min'),
|
|
'required' => UserModule::t('Required'),
|
|
'match' => UserModule::t('Match'),
|
|
'range' => UserModule::t('Range'),
|
|
'error_message' => UserModule::t('Error Message'),
|
|
'other_validator' => UserModule::t('Other Validator'),
|
|
'default' => UserModule::t('Default'),
|
|
'widget' => UserModule::t('Widget'),
|
|
'widgetparams' => UserModule::t('Widget parametrs'),
|
|
'position' => UserModule::t('Position'),
|
|
'visible' => UserModule::t('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' => UserModule::t('INTEGER'),
|
|
'VARCHAR' => UserModule::t('VARCHAR'),
|
|
'TEXT'=> UserModule::t('TEXT'),
|
|
'DATE'=> UserModule::t('DATE'),
|
|
'FLOAT'=> UserModule::t('FLOAT'),
|
|
'DECIMAL'=> UserModule::t('DECIMAL'),
|
|
'BOOL'=> UserModule::t('BOOL'),
|
|
'BLOB'=> UserModule::t('BLOB'),
|
|
'BINARY'=> UserModule::t('BINARY'),
|
|
),
|
|
'required' => array(
|
|
self::REQUIRED_NO => UserModule::t('No'),
|
|
self::REQUIRED_NO_SHOW_REG => UserModule::t('No, but show on registration form'),
|
|
self::REQUIRED_YES_SHOW_REG => UserModule::t('Yes and show on registration form'),
|
|
self::REQUIRED_YES_NOT_SHOW_REG => UserModule::t('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',
|
|
),
|
|
));
|
|
}
|
|
} |