- 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
198 lines
7.8 KiB
PHP
198 lines
7.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Modelo del usuario
|
|
*
|
|
* Propiedades
|
|
*
|
|
* The followings are the available columns in table 'tbl_usuario':
|
|
* @property integer $id
|
|
* @property string $username
|
|
* @property string $password
|
|
* @property string $email
|
|
* @property string $clave_activacion
|
|
* @property datetime $fecha_registro
|
|
* @property datetime $fecha_borrado
|
|
* @property datetime $ultima_visita
|
|
* @property integer $superusuario
|
|
* @property integer $estado
|
|
*/
|
|
class Usuario extends CActiveRecord {
|
|
|
|
const ESTADO_NOACTIVO = 0;
|
|
const ESTADO_ACTIVO = 1;
|
|
const ESTADO_BLOQUEADO = -1;
|
|
const ESTADO_BORRADO = 2;
|
|
|
|
/**
|
|
* 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')->tablaUsuarios;
|
|
}
|
|
|
|
/**
|
|
* @return array validation rules for model attributes.
|
|
*/
|
|
public function rules() {
|
|
$rules = array();
|
|
|
|
$rules[] = array('username, email, password, fecha_registro, estado, superusuario', 'required');
|
|
|
|
$rules[] = array('username', 'unique', 'message' => UsuarioModule::t("This user's name already exists."));
|
|
$rules[] = array('username', 'length', 'max' => 20, 'min' => 3, 'message' => UsuarioModule::t("Incorrect username (length between 3 and 20 characters)."));
|
|
$rules[] = array('username', 'match', 'pattern' => '/^[A-Za-z0-9_]+$/u', 'message' => UsuarioModule::t("Incorrect symbols (A-z0-9)."));
|
|
|
|
$rules[] = array('password', 'length', 'max' => 128, 'min' => 4, 'message' => UsuarioModule::t("Incorrect password (minimal length 4 symbols)."));
|
|
|
|
$rules[] = array('email', 'email');
|
|
$rules[] = array('email', 'unique', 'message' => UsuarioModule::t("This user's email address already exists."));
|
|
|
|
$rules[] = array('superusuario', 'in', 'range' => array(0, 1));
|
|
$rules[] = array('superusuario, estado', 'numerical', 'integerOnly' => true);
|
|
|
|
$rules[] = array('estado', 'in', 'range' => array(self::ESTADO_NOACTIVO, self::ESTADO_ACTIVO, self::ESTADO_BLOQUEADO, self::ESTADO_BORRADO));
|
|
|
|
$rules[] = array('fecha_registro', 'default', 'value' => date('Y-m-d H:i:s'), 'setOnEmpty' => true, 'on' => 'insert');
|
|
$rules[] = array('fecha_borrado', 'default', 'value' => '0000-00-00 00:00:00', 'setOnEmpty' => true, 'on' => 'insert');
|
|
$rules[] = array('ultima_visita', 'default', 'value' => '0000-00-00 00:00:00', 'setOnEmpty' => true, 'on' => 'insert');
|
|
|
|
$rules[] = array('id, username, email, fecha_registro, fecha_borrado, ultima_visita, superusuario, estado', 'safe', 'on' => 'search');
|
|
|
|
return $rules;
|
|
}
|
|
|
|
protected function beforeSave() {
|
|
if (($this->estado === self::ESTADO_BORRADO) && ($this->fecha_borrado === NULL))
|
|
$this->fecha_borrado = date("Y-m-d H:i:s");
|
|
return parent::beforeSave();
|
|
}
|
|
|
|
/**
|
|
* @return array relational rules.
|
|
*/
|
|
public function relations() {
|
|
$relations = Yii::app()->getModule('usuario')->relations;
|
|
if (!isset($relations['perfil']))
|
|
$relations['perfil'] = array(self::HAS_ONE, 'Perfil', 'usuario_id');
|
|
return $relations;
|
|
}
|
|
|
|
/**
|
|
* @return array customized attribute labels (name=>label)
|
|
*/
|
|
public function attributeLabels() {
|
|
return array(
|
|
'id' => UsuarioModule::t("Id"),
|
|
'username' => UsuarioModule::t("Usuario"),
|
|
'password' => UsuarioModule::t("Contraseña"),
|
|
'confirmacion_password' => UsuarioModule::t("Confirmación de contraseña"),
|
|
'email' => UsuarioModule::t("E-mail"),
|
|
'codigo_verificacion' => UsuarioModule::t("Código de verificación"),
|
|
'clave_activacion' => UsuarioModule::t("Clave de activación"),
|
|
'fecha_registro' => UsuarioModule::t("Fecha de registro"),
|
|
'fecha_borrado' => UsuarioModule::t("Fecha de baja"),
|
|
'ultima_visita' => UsuarioModule::t("Última visita"),
|
|
'superusuario' => UsuarioModule::t("Superusuario"),
|
|
'estado' => UsuarioModule::t("Estado"),
|
|
);
|
|
}
|
|
|
|
public function scopes() {
|
|
return array(
|
|
'activo' => array(
|
|
'condition' => 'estado=' . self::ESTADO_ACTIVO,
|
|
),
|
|
'inactivo' => array(
|
|
'condition' => 'estado=' . self::ESTADO_NOACTIVO,
|
|
),
|
|
'bloqueado' => array(
|
|
'condition' => 'estado=' . self::ESTADO_BLOQUEADO,
|
|
),
|
|
'superusuario' => array(
|
|
'condition' => 'superusuario=1',
|
|
),
|
|
'notsafe' => array(
|
|
'select' => 'id, username, password, email, clave_activacion, fecha_registro, fecha_borrado, ultima_visita, superusuario, estado',
|
|
),
|
|
);
|
|
}
|
|
|
|
public function defaultScope() {
|
|
return CMap::mergeArray(Yii::app()->getModule('usuario')->defaultScope, array(
|
|
'alias' => 'usuario',
|
|
'select' => 'usuario.id, usuario.username, usuario.email, usuario.fecha_registro, usuario.fecha_borrado, usuario.ultima_visita, usuario.superusuario, usuario.estado',
|
|
));
|
|
}
|
|
|
|
public static function itemAlias($type, $code = NULL) {
|
|
$_items = array(
|
|
'UserStatus' => array(
|
|
self::ESTADO_NOACTIVO => UsuarioModule::t('Inactivo'),
|
|
self::ESTADO_ACTIVO => UsuarioModule::t('Activo'),
|
|
self::ESTADO_BLOQUEADO => UsuarioModule::t('Bloqueado'),
|
|
),
|
|
'AdminStatus' => array(
|
|
'0' => UsuarioModule::t('No'),
|
|
'1' => UsuarioModule::t('Sí'),
|
|
),
|
|
);
|
|
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('username', $this->username, true);
|
|
$criteria->compare('password', $this->password);
|
|
$criteria->compare('email', $this->email, true);
|
|
$criteria->compare('clave_activacion', $this->clave_activacion);
|
|
$criteria->compare('fecha_registro', $this->fecha_registro);
|
|
$criteria->compare('fecha_borrado', $this->fecha_borrado);
|
|
$criteria->compare('ultima_visita', $this->ultima_visita);
|
|
$criteria->compare('superusuario', $this->superusuario);
|
|
$criteria->compare('estado', $this->estado);
|
|
|
|
return new CActiveDataProvider(get_class($this), array(
|
|
'criteria' => $criteria,
|
|
'pagination' => array(
|
|
'pageSize' => Yii::app()->getModule('usuario')->user_page_size,
|
|
),
|
|
));
|
|
}
|
|
|
|
public function getFechaRegistro() {
|
|
return strtotime($this->fecha_registro);
|
|
}
|
|
|
|
public function getUltimaVisita() {
|
|
return strtotime($this->ultima_visita);
|
|
}
|
|
|
|
public function afterSave() {
|
|
if (get_class(Yii::app()) == 'CWebApplication' && Perfil::$regMode == false) {
|
|
Yii::app()->user->updateSession();
|
|
}
|
|
return parent::afterSave();
|
|
}
|
|
|
|
} |