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/yii-user-master/models/ProfileField.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

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',
),
));
}
}