git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_PROFIND_Web/trunk@51 3fe1ab16-cfe0-e34b-8c9f-7d8c168d430d
235 lines
7.2 KiB
PHP
235 lines
7.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Modelo del usuario
|
|
*
|
|
* Propiedades
|
|
* @property integer $id
|
|
* @property integer $id_empresa
|
|
* @property string $estado
|
|
* @property string $email
|
|
* @property string $nombre
|
|
* @property string $apellidos
|
|
* @property string $password
|
|
* @property string $tipo
|
|
* @property string $titulo
|
|
* @property string $localidad
|
|
* @property string $telefono
|
|
* @property string $last_login_time
|
|
* @property string $clave_seguridad
|
|
* @property string $descripcion
|
|
* @property string $ficheroFotografia
|
|
* @property FotografiaPerfil $fotografia
|
|
*
|
|
* Relaciones
|
|
* @property Empresa $empresa
|
|
*/
|
|
class Usuario extends CActiveRecord {
|
|
|
|
const ESTADO_NOACTIVO = 0;
|
|
const ESTADO_ACTIVO = 1;
|
|
const ESTADO_BORRADO = 2;
|
|
const ESTADO_DENEGADO = 3;
|
|
|
|
const TIPO_USUARIO_COORDINADOR = 'C';
|
|
const TIPO_USUARIO_AGENTE = 'A';
|
|
|
|
public $ficheroFotografia;
|
|
public $fotografia;
|
|
|
|
public function getEstaActivo() {
|
|
return ($this->estado == self::ESTADO_ACTIVO);
|
|
}
|
|
|
|
/**
|
|
* Returns the static model of the specified AR class.
|
|
* @param string $className active record class name.
|
|
* @return Usuario 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 'tbl_usuarios';
|
|
}
|
|
|
|
/**
|
|
* @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('email, password', 'required'),
|
|
array('estado', 'length', 'max' => 1),
|
|
array('email', 'email'),
|
|
array('email', 'unique'),
|
|
array('descripcion', 'safe'),
|
|
array('tipo', 'default', 'value' => self::TIPO_USUARIO_COORDINADOR),
|
|
array('email, nombre, apellidos, password, tipo, titulo, localidad, telefono', 'length', 'max' => 255),
|
|
array('ficheroFotografia', 'file',
|
|
'types' => 'jpg',
|
|
'maxSize' => 1024 * 1024 * 1, // 1MB como máximo
|
|
'tooLarge' => Yii::t('profind', 'La imagen es demasiado pesada. Elija otra fotografía más pequeña.'),
|
|
'wrongType' => Yii::t('profind', 'Sólo se permiten imágenes en formato JPG.'),
|
|
'allowEmpty' => 'true',
|
|
),
|
|
array('id, id_empresa, estado, email, nombre, apellidos, tipo, titulo, localidad, telefono, descripcion', '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(
|
|
'empresa' => array(self::BELONGS_TO, 'Empresa', 'id_empresa'),
|
|
);
|
|
}
|
|
|
|
public function scopes() {
|
|
return array(
|
|
'equipo' => array(
|
|
'condition' => 'id_empresa = :id_empresa and id <> :id',
|
|
'params' => array(
|
|
'id_empresa' => Yii::app()->user->id_empresa,
|
|
'id' => Yii::app()->user->id
|
|
)
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return array customized attribute labels (name=>label)
|
|
*/
|
|
public function attributeLabels() {
|
|
return array(
|
|
'id' => 'ID',
|
|
'ficheroFotografia' => 'Fotografía',
|
|
'estado' => 'Estado',
|
|
'email' => 'Email',
|
|
'nombre' => 'Nombre',
|
|
'apellidos' => 'Apellidos',
|
|
'password' => 'Password',
|
|
'tipo' => 'Tipo',
|
|
'titulo' => 'Título',
|
|
'localidad' => 'Localidad',
|
|
'telefono' => 'Teléfono',
|
|
'descripcion' => 'Descripción',
|
|
);
|
|
}
|
|
|
|
/**
|
|
* 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() {
|
|
$criteria = new CDbCriteria;
|
|
|
|
$criteria->compare('id', $this->id);
|
|
$criteria->compare('id_empresa', $this->id_empresa);
|
|
$criteria->compare('estado', $this->estado, true);
|
|
$criteria->compare('email', $this->email, true);
|
|
$criteria->compare('nombre', $this->nombre, true);
|
|
$criteria->compare('apellidos', $this->apellidos, true);
|
|
$criteria->compare('tipo', $this->tipo, true);
|
|
$criteria->compare('titulo', $this->titulo, true);
|
|
$criteria->compare('localidad', $this->localidad, true);
|
|
$criteria->compare('telefono', $this->telefono, true);
|
|
$criteria->compare('last_login_time', $this->last_login_time, true);
|
|
$criteria->compare('descripcion', $this->descripcion, true);
|
|
|
|
return new CActiveDataProvider($this, array(
|
|
'criteria' => $criteria,
|
|
));
|
|
}
|
|
|
|
protected function afterFind() {
|
|
parent::afterFind();
|
|
$this->fotografia = new FotografiaPerfil();
|
|
$this->fotografia->modelo = $this;
|
|
}
|
|
|
|
protected function afterConstruct() {
|
|
parent::afterConstruct();
|
|
$this->fotografia = new FotografiaPerfil();
|
|
$this->fotografia->modelo = $this;
|
|
}
|
|
|
|
protected function afterSave() {
|
|
parent::afterSave();
|
|
if ($this->isNewRecord)
|
|
$this->createUploadDir();
|
|
}
|
|
|
|
protected function afterDelete() {
|
|
parent::afterDelete();
|
|
$this->deleteUploadDir();
|
|
}
|
|
|
|
/*
|
|
* Devuelve la ruta con los ficheros del usuario.
|
|
* Incluye el separador de directorios al final de la ruta.
|
|
* @return string ruta
|
|
*/
|
|
public function getUploadPath() {
|
|
return Yii::getPathOfAlias('application.uploads.usuarios') . DIRECTORY_SEPARATOR . $this->id . DIRECTORY_SEPARATOR;
|
|
}
|
|
|
|
/*
|
|
* Devuelve el nombre del fichero por defecto cuando no se tiene imagen
|
|
* @return string ruta
|
|
*/
|
|
public function getImagenDefault() {
|
|
return 'user_photo.jpg';
|
|
}
|
|
|
|
/*
|
|
* Crea un directorio para almacenar ficheros del usuario
|
|
* @return boolean
|
|
*/
|
|
private function createUploadDir() {
|
|
$upload = $this->getUploadPath();
|
|
|
|
if(!is_dir($upload)) {
|
|
return mkdir($upload);
|
|
}
|
|
else return false;
|
|
}
|
|
|
|
/*
|
|
* Elimina el directorio del usuario y todos sus ficheros
|
|
* @return boolean
|
|
*/
|
|
private function deleteUploadDir() {
|
|
$upload = $this->getUploadPath();
|
|
|
|
if(is_dir($upload)) {
|
|
require_once( Yii::getPathOfAlias('application.helpers') . DIRECTORY_SEPARATOR . 'recursive_remove_directory.php');
|
|
return recursive_remove_directory($upload);
|
|
}
|
|
else return false;
|
|
}
|
|
|
|
/*
|
|
* Función para cifrar la contraseña del usuario (temporal)
|
|
* @return string contraseña cifrada
|
|
*/
|
|
public function encrypt($value) {
|
|
return md5($value);
|
|
}
|
|
|
|
public function getNombreCompleto() {
|
|
$cadena = $this->nombre;
|
|
if ($this->apellidos) $cadena .= ' ' . $this->apellidos;
|
|
return $cadena;
|
|
}
|
|
|
|
}
|