Incam_PROFIND_Web/www/protected/models/Empresa.php
david df138cf8bb - Revisión del código en general
- Tarea #1099 -> Mejorar la encriptación de las contraseñas
- Tarea #1104 -> Guardar en el usuario la fecha de creación y del último login
- Tarea #1125 -> Quitar la máscara en el campo 'teléfono' del usuario

git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_PROFIND_Web/trunk@57 3fe1ab16-cfe0-e34b-8c9f-7d8c168d430d
2012-10-09 11:44:12 +00:00

182 lines
5.6 KiB
PHP

<?php
/**
* This is the model class for table "tbl_empresas".
*
* The followings are the available columns in table 'tbl_empresas':
* @property integer $id
* @property string $cif
* @property string $nombre
* @property string $email
* @property string $pagina_web
* @property integer $empleados
* @property string $direccion
* @property string $descripcion
* @property string $ficheroLogotipo
* @property FotografiaPerfil $logotipo
*
* The followings are the available model relations:
* @property Usuario $usuarios
*/
class Empresa extends CActiveRecord {
public $ficheroLogotipo;
public $logotipo;
/**
* Returns the static model of the specified AR class.
* @param string $className active record class name.
* @return Empresa 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_empresas';
}
/**
* @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('empleados, cif, nombre, email, pagina_web, direccion', 'length', 'max' => 255),
array('pagina_web', 'url', 'defaultScheme' => 'http'),
array('email', 'email'),
array('descripcion', 'safe'),
array('ficheroLogotipo', 'file',
'types' => 'jpg',
'maxSize' => 1024 * 1024 * 1, // 1MB como máximo
'tooLarge' => Yii::t('profind', 'La imagen es demasiado pesada. Elija otra más pequeña.'),
'wrongType' => Yii::t('profind', 'Sólo se permiten imágenes en formato JPG.'),
'allowEmpty' => 'true',
),
array('id, cif, nombre, email, pagina_web, empleados, direccion, 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(
'usuarios' => array(self::HAS_MANY, 'Usuario', 'id_empresa'),
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels() {
return array(
'id' => 'ID',
'ficheroLogotipo' => 'Logotipo',
'cif' => 'CIF',
'nombre' => 'Nombre',
'email2' => 'Email',
'pagina_web' => 'Página web',
'empleados' => 'Nº de empleados',
'direccion' => 'Dirección',
'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() {
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria = new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('cif',$this->cif,true);
$criteria->compare('nombre',$this->nombre,true);
$criteria->compare('email',$this->email,true);
$criteria->compare('pagina_web',$this->pagina_web,true);
$criteria->compare('empleados',$this->empleados);
$criteria->compare('direccion',$this->direccion,true);
$criteria->compare('descripcion',$this->descripcion,true);
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
));
}
protected function afterFind() {
parent::afterFind();
$this->logotipo = new FotografiaPerfil();
$this->logotipo->modelo = $this;
}
protected function afterConstruct() {
parent::afterConstruct();
$this->logotipo = new FotografiaPerfil();
$this->logotipo->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 de la empresa.
* Incluye el separador de directorios al final de la ruta.
* @return string ruta
*/
public function getUploadPath() {
return Yii::getPathOfAlias('application.uploads.empresas') . 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 'company_photo.jpg';
}
/*
* Crea un directorio para almacenar ficheros de la empresa
* @return boolean
*/
private function createUploadDir() {
$upload = $this->getUploadPath();
if(!is_dir($upload)) {
return mkdir($upload);
}
else return false;
}
/*
* Elimina el directorio de la empresa y todos sus ficheros
* @return boolean
*/
private function deleteUploadDir() {
$upload = $this->getUploadPath();
if(is_dir($upload))
return GHelper::recursiveRemoveDirectory($upload);
else return false;
}
}