<?php

Yii::import('application.models._base.BaseMzgtpublicaciones');

class Mzgtpublicaciones extends BaseMzgtpublicaciones
{
	public static function model($className=__CLASS__) {
		return parent::model($className);
	}
        
        public static function label($n = 1) {
		return Yii::t('app', 'Publicación|Publicaciones', $n);
	}
        
        public static function representingColumn() {
		return 'MZGTPUBLICACIONES_NOMBREARTICULO';
	}
        
        public function attributeLabels() {
		return array(
			'PK_MZGTPUBLICACIONES' => Yii::t('app', 'Publicación'),
			'FK1_MZGTPUBLICACIONES_INV_MZGTINSTITUCIONES_PK_' => null,
			'FK2_MZGTPUBLICACIONES_INV_MZGTCAMPAMPLIOSCINE_PK' => null,
			'FK3_MZGTPUBLICACIONES_INV_MZGTCAMPESPECIFICOSCINE_PK' => null,
			'FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK' => null,
			'FK5_MZGTPUBLICACIONES_INV_MZGTBASESDATOSINDEXADA_PK' => Yii::t('app', 'Bases de datos indexada'),
			'FK6_MZGTPUBLICACIONES_INV_MZGTLINEASINVESTIGACION_PK' => null,
			'FK7_MZGTPUBLICACIONES_INV_MZGTPROYECTOS_PK' => null,
			'MZGTPUBLICACIONES_CODIGOISSN' => Yii::t('app', 'Código ISSN'),
			'MZGTPUBLICACIONES_CODIGOISBN' => Yii::t('app', 'Código ISBN'),
			'MZGTPUBLICACIONES_NOMBREREVISTA' => Yii::t('app', 'Nombre de la revista'),
			'MZGTPUBLICACIONES_NUMEROREVISTA' => Yii::t('app', 'Número de la revista'),
			'MZGTPUBLICACIONES_PAIS' => Yii::t('app', 'País'),
			'MZGTPUBLICACIONES_CIUDAD' => Yii::t('app', 'Ciudad'),
			'MZGTPUBLICACIONES_NOMBREARTICULO' => Yii::t('app', 'Nombre del artículo'),
			'MZGTPUBLICACIONES_NOMBREEVENTO' => Yii::t('app', 'Nombre del evento'),
			'MZGTPUBLICACIONES_DIAPUBLICACION' => Yii::t('app', 'Día'),
			'MZGTPUBLICACIONES_MESPUBLICACION' => Yii::t('app', 'Mes'),
			'MZGTPUBLICACIONES_ANIOPUBLICACION' => Yii::t('app', 'Año'),
			'MZGTPUBLICACIONES_FECHAPUBLICACION' => Yii::t('app', 'Fecha de publicación'),
			'MZGTPUBLICACIONES_CEDULAAUTOR' => Yii::t('app', 'Mzgtpublicaciones Cedulaautor'),
			'MZGTPUBLICACIONES_PRIMERNOMBREAUTOR' => Yii::t('app', 'Mzgtpublicaciones Primernombreautor'),
			'MZGTPUBLICACIONES_SEGUNDONOMBREAUTOR' => Yii::t('app', 'Mzgtpublicaciones Segundonombreautor'),
			'MZGTPUBLICACIONES_APELLIDOPATERNOAUTOR' => Yii::t('app', 'Mzgtpublicaciones Apellidopaternoautor'),
			'MZGTPUBLICACIONES_APELLIDOMATERNOAUTOR' => Yii::t('app', 'Mzgtpublicaciones Apellidomaternoautor'),
			'MZGTPUBLICACIONES_DEPARTAMENTO' => Yii::t('app', 'Departamento'),
			'MZGTPUBLICACIONES_CARRERA' => Yii::t('app', 'Carrera'),
			'MZGTPUBLICACIONES_EVIDENCIA' => Yii::t('app', 'Evidencia'),
			'MZGTPUBLICACIONES_DOI' => Yii::t('app', 'DOI'),
			'MZGTPUBLICACIONES_OTROTIPOSPUBLICACIONES' => Yii::t('app', 'Otro tipo de publicación'),
			'MZGTPUBLICACIONES_OTRABASEINDEXADA' => Yii::t('app', 'Otra Base Indexada'),
			'MZGTPUBLICACIONES_FACTORIMPACTO' => Yii::t('app', 'Factor de impacto'),
			'MZGTPUBLICACIONES_VOLUMEN' => Yii::t('app', 'Volumen'),
			'MZGTPUBLICACIONES_NUMEROISSUE' => Yii::t('app', 'Número/ISSUE'),
			'MZGTPUBLICACIONES_ENLACE' => Yii::t('app', 'Enlace'),
			'MZGTPUBLICACIONES_TITULOMEMORIAPROCEEDING' => Yii::t('app', 'Título de memoria/proceeding'),
			'MZGTPUBLICACIONES_NUMEROPAGINAS' => Yii::t('app', 'Número de páginas'),
                        'MZGTPUBLICACIONES_PAGINAS' => Yii::t('app', 'Páginas'),
			'MZGTPUBLICACIONES_FECHAINICIO' => Yii::t('app', 'Fecha de inicio del evento'),
			'MZGTPUBLICACIONES_FECHAFIN' => Yii::t('app', 'Fecha de fin del evento'),
			'mzgtbancoautores' => null,
			'fK1MZGTPUBLICACIONESINVMZGTINSTITUCIONESPK' => null,
			'fK2MZGTPUBLICACIONESINVMZGTCAMPAMPLIOSCINEPK' => null,
			'fK3MZGTPUBLICACIONESINVMZGTCAMPESPECIFICOSCINEPK' => null,
			'fK4MZGTPUBLICACIONESINVMZGTTIPOSPUBLICACIONESPK' => null,
			'fK6MZGTPUBLICACIONESINVMZGTLINEASINVESTIGACIONPK' => null,
			'fK7MZGTPUBLICACIONESINVMZGTPROYECTOSPK' => null,
		);
	}
        
        public function relations() {
		return array(
			'mzgtbancoautores' => array(self::MANY_MANY, 'Mzgtbancoautores', 'mzgtautores(PK_MZGTPUBLICACIONES, PK_MZGTBANCOAUTORES)'),
			'fK1MZGTPUBLICACIONESINVMZGTINSTITUCIONESPK' => array(self::BELONGS_TO, 'Mzgtinstituciones', 'FK1_MZGTPUBLICACIONES_INV_MZGTINSTITUCIONES_PK_'),
			'fK2MZGTPUBLICACIONESINVMZGTCAMPAMPLIOSCINEPK' => array(self::BELONGS_TO, 'Mzgtcampamplioscine', 'FK2_MZGTPUBLICACIONES_INV_MZGTCAMPAMPLIOSCINE_PK'),
			'fK3MZGTPUBLICACIONESINVMZGTCAMPESPECIFICOSCINEPK' => array(self::BELONGS_TO, 'Mzgtcampespecificoscine', 'FK3_MZGTPUBLICACIONES_INV_MZGTCAMPESPECIFICOSCINE_PK'),
			'fK4MZGTPUBLICACIONESINVMZGTTIPOSPUBLICACIONESPK' => array(self::BELONGS_TO, 'Mzgttipospublicaciones', 'FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK'),
                        'fK5MZGTPUBLICACIONESINVMZGTBASESDATOSINDEXADAPK' => array(self::BELONGS_TO, 'Mzgtbasesdatosindexada', 'FK5_MZGTPUBLICACIONES_INV_MZGTBASESDATOSINDEXADA_PK'),
			'fK6MZGTPUBLICACIONESINVMZGTLINEASINVESTIGACIONPK' => array(self::BELONGS_TO, 'Mzgtlineasinvestigacion', 'FK6_MZGTPUBLICACIONES_INV_MZGTLINEASINVESTIGACION_PK'),
			'fK7MZGTPUBLICACIONESINVMZGTPROYECTOSPK' => array(self::BELONGS_TO, 'Mzgtproyectos', 'FK7_MZGTPUBLICACIONES_INV_MZGTPROYECTOS_PK'),
		);
	}
        
        public function rules() {
		return array(
                        //unique
                        //array('MZGTPUBLICACIONES_DOI', 'unique'),
                        //array('MZGTPUBLICACIONES_CODIGOISSN', 'unique'),
                        //array('MZGTPUBLICACIONES_CODIGOISBN', 'unique'),
                        //patterns
                        array('MZGTPUBLICACIONES_CODIGOISSN', 'match', 'pattern'=>'/([0-9]{4})+-([0-9 A-Z a-z]{4})/', 'message'=>Yii::t('app','ISSN:Debe seguir el formato especificado, puede utilizar números y un guión (-).')),
                        array('MZGTPUBLICACIONES_CODIGOISBN', 'match', 'pattern'=>'/([0-9]{3})+-([0-9]{2})+-([0-9]{5})+-([0-9]{2})+-([0-9]{1})/', 'message'=>Yii::t('app','ISBN:Debe seguir el formato especificado, puede utilizar números y un guión (-).')),
                        array('MZGTPUBLICACIONES_DOI', 'match', 'pattern'=>'/([0-9]{2})+.([0-9]{4})+\/([a-z A-Z 0-9])/', 'message'=>Yii::t('app','DOI:Debe seguir el formato especificado, puede utilizar letras, números y (/ .)')),
                        //numerical = Integer only
			array('FK1_MZGTPUBLICACIONES_INV_MZGTINSTITUCIONES_PK_, FK2_MZGTPUBLICACIONES_INV_MZGTCAMPAMPLIOSCINE_PK, FK3_MZGTPUBLICACIONES_INV_MZGTCAMPESPECIFICOSCINE_PK, FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK, FK5_MZGTPUBLICACIONES_INV_MZGTBASESDATOSINDEXADA_PK, FK6_MZGTPUBLICACIONES_INV_MZGTLINEASINVESTIGACION_PK, FK7_MZGTPUBLICACIONES_INV_MZGTPROYECTOS_PK', 'numerical', 'integerOnly'=>true),
                        //max length = 255
			array('MZGTPUBLICACIONES_NOMBREREVISTA, MZGTPUBLICACIONES_NUMEROREVISTA, MZGTPUBLICACIONES_PAIS, MZGTPUBLICACIONES_CIUDAD, MZGTPUBLICACIONES_NOMBREARTICULO, MZGTPUBLICACIONES_NOMBREEVENTO, MZGTPUBLICACIONES_CEDULAAUTOR, MZGTPUBLICACIONES_PRIMERNOMBREAUTOR, MZGTPUBLICACIONES_SEGUNDONOMBREAUTOR, MZGTPUBLICACIONES_APELLIDOPATERNOAUTOR, MZGTPUBLICACIONES_APELLIDOMATERNOAUTOR, MZGTPUBLICACIONES_DEPARTAMENTO, MZGTPUBLICACIONES_CARRERA, MZGTPUBLICACIONES_EVIDENCIA, MZGTPUBLICACIONES_DOI, MZGTPUBLICACIONES_OTROTIPOSPUBLICACIONES, MZGTPUBLICACIONES_OTRABASEINDEXADA', 'length', 'max'=>255),
                        //length max 9 min 9
                        array('MZGTPUBLICACIONES_CODIGOISSN', 'length', 'max'=>9, 'min'=>9),
                        //length max 17 min 17
                        array('MZGTPUBLICACIONES_CODIGOISBN', 'length', 'max'=>17, 'min'=>17),
                        //max length = 2
			array('MZGTPUBLICACIONES_DIAPUBLICACION, MZGTPUBLICACIONES_MESPUBLICACION', 'length', 'max'=>2),
                        //max length = 4
			array('MZGTPUBLICACIONES_ANIOPUBLICACION', 'length', 'min'=>4, 'max'=>4),
                        //max length = 10
			array('MZGTPUBLICACIONES_FACTORIMPACTO', 'length', 'max'=>10),
                        //max length = 200
			array('MZGTPUBLICACIONES_VOLUMEN, MZGTPUBLICACIONES_NUMEROISSUE, MZGTPUBLICACIONES_NUMEROPAGINAS', 'length', 'max'=>200),
			//max length = 1000
                        array('MZGTPUBLICACIONES_ENLACE', 'length', 'max'=>1000),
                        //'url' | 'defaultScheme' => 'http'
                        array('MZGTPUBLICACIONES_ENLACE', 'url', 'defaultScheme' => 'http'),
                        //max length = 2000
			array('MZGTPUBLICACIONES_TITULOMEMORIAPROCEEDING', 'length', 'max'=>2000),
                        //safe
			array('MZGTPUBLICACIONES_FECHAPUBLICACION', 'safe'),
                        //Validacion personalizada: Nombre evento
                        array('MZGTPUBLICACIONES_NOMBREEVENTO','validacionNombreEvento'),
                        //Validacion personalizada: Numero paginas
                        array('MZGTPUBLICACIONES_NUMEROPAGINAS','validacionNumeroPaginas'),
                        //Validacion personalizada: Numero paginas
                        array('MZGTPUBLICACIONES_PAGINAS','validacionPaginas'),
                        //'setOnEmpty' => true | 'value' => null
			array('FK7_MZGTPUBLICACIONES_INV_MZGTPROYECTOS_PK, MZGTPUBLICACIONES_CODIGOISSN, MZGTPUBLICACIONES_CODIGOISBN, '
                            . 'MZGTPUBLICACIONES_NOMBREEVENTO, MZGTPUBLICACIONES_DIAPUBLICACION, MZGTPUBLICACIONES_MESPUBLICACION, '
                            . 'MZGTPUBLICACIONES_ANIOPUBLICACION, MZGTPUBLICACIONES_FECHAPUBLICACION, MZGTPUBLICACIONES_CEDULAAUTOR, '
                            . 'MZGTPUBLICACIONES_PRIMERNOMBREAUTOR, MZGTPUBLICACIONES_SEGUNDONOMBREAUTOR, MZGTPUBLICACIONES_APELLIDOPATERNOAUTOR, '
                            . 'MZGTPUBLICACIONES_APELLIDOMATERNOAUTOR, MZGTPUBLICACIONES_DEPARTAMENTO, MZGTPUBLICACIONES_CARRERA, '
                            . 'MZGTPUBLICACIONES_EVIDENCIA, MZGTPUBLICACIONES_DOI, MZGTPUBLICACIONES_OTROTIPOSPUBLICACIONES, '
                            . 'MZGTPUBLICACIONES_OTRABASEINDEXADA, MZGTPUBLICACIONES_FACTORIMPACTO, MZGTPUBLICACIONES_VOLUMEN, '
                            . 'MZGTPUBLICACIONES_NUMEROISSUE, MZGTPUBLICACIONES_ENLACE, MZGTPUBLICACIONES_TITULOMEMORIAPROCEEDING, '
                            . 'MZGTPUBLICACIONES_FECHAINICIO, '
                            . 'MZGTPUBLICACIONES_FECHAFIN, MZGTPUBLICACIONES_NUMEROREVISTA', 'default', 'setOnEmpty' => true, 'value' => null),
                        //required
                        array('FK1_MZGTPUBLICACIONES_INV_MZGTINSTITUCIONES_PK_, FK2_MZGTPUBLICACIONES_INV_MZGTCAMPAMPLIOSCINE_PK, '
                            . 'FK3_MZGTPUBLICACIONES_INV_MZGTCAMPESPECIFICOSCINE_PK, FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK, '
                            . 'FK5_MZGTPUBLICACIONES_INV_MZGTBASESDATOSINDEXADA_PK, FK6_MZGTPUBLICACIONES_INV_MZGTLINEASINVESTIGACION_PK, '
                            . 'MZGTPUBLICACIONES_NOMBREREVISTA, MZGTPUBLICACIONES_PAIS, MZGTPUBLICACIONES_NOMBREARTICULO', 'required'),
			//safe | 'on'=>'search'
                        array('PK_MZGTPUBLICACIONES, FK1_MZGTPUBLICACIONES_INV_MZGTINSTITUCIONES_PK_, FK2_MZGTPUBLICACIONES_INV_MZGTCAMPAMPLIOSCINE_PK, FK3_MZGTPUBLICACIONES_INV_MZGTCAMPESPECIFICOSCINE_PK, FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK, FK5_MZGTPUBLICACIONES_INV_MZGTBASESDATOSINDEXADA_PK, FK6_MZGTPUBLICACIONES_INV_MZGTLINEASINVESTIGACION_PK, FK7_MZGTPUBLICACIONES_INV_MZGTPROYECTOS_PK, MZGTPUBLICACIONES_CODIGOISSN, MZGTPUBLICACIONES_CODIGOISBN, MZGTPUBLICACIONES_NOMBREREVISTA, MZGTPUBLICACIONES_NUMEROREVISTA, MZGTPUBLICACIONES_PAIS, MZGTPUBLICACIONES_CIUDAD, MZGTPUBLICACIONES_NOMBREARTICULO, MZGTPUBLICACIONES_NOMBREEVENTO, MZGTPUBLICACIONES_DIAPUBLICACION, MZGTPUBLICACIONES_MESPUBLICACION, MZGTPUBLICACIONES_ANIOPUBLICACION, MZGTPUBLICACIONES_FECHAPUBLICACION, MZGTPUBLICACIONES_CEDULAAUTOR, MZGTPUBLICACIONES_PRIMERNOMBREAUTOR, MZGTPUBLICACIONES_SEGUNDONOMBREAUTOR, MZGTPUBLICACIONES_APELLIDOPATERNOAUTOR, MZGTPUBLICACIONES_APELLIDOMATERNOAUTOR, MZGTPUBLICACIONES_DEPARTAMENTO, MZGTPUBLICACIONES_CARRERA, MZGTPUBLICACIONES_EVIDENCIA, MZGTPUBLICACIONES_DOI, MZGTPUBLICACIONES_OTROTIPOSPUBLICACIONES, MZGTPUBLICACIONES_OTRABASEINDEXADA, MZGTPUBLICACIONES_FACTORIMPACTO, MZGTPUBLICACIONES_VOLUMEN, MZGTPUBLICACIONES_NUMEROISSUE, MZGTPUBLICACIONES_ENLACE, MZGTPUBLICACIONES_TITULOMEMORIAPROCEEDING, MZGTPUBLICACIONES_NUMEROPAGINAS', 'safe', 'on'=>'search'),
                        //Validación formato páginas: Ejemplo: 15-20
                        array('MZGTPUBLICACIONES_PAGINAS', 'match', 'pattern'=>'/([0-9])+-([0-9])+/', 'message'=>Yii::t('app','Debe seguir el formato especificado, puede utilizar el guión (-) y números.')),
                        //Validacion personalizada: Otra base indexada
                        array('MZGTPUBLICACIONES_DOI','validacionRevistaDOI'),
                        //Validacion personalizada: Enlace
                        //array('MZGTPUBLICACIONES_ENLACE','validacionEnlace'),
                        //Validacion personalizada: Factor de impacto
                        array('MZGTPUBLICACIONES_FACTORIMPACTO','validacionFatorImpacto'),
                        //Validacion personalizada: Volumen
                        //array('MZGTPUBLICACIONES_VOLUMEN','validacionVolumen'),
                        //Validacion personalizada: Número de revista
                        array('MZGTPUBLICACIONES_NUMEROREVISTA','validacionNumeroRevista'),
                        //Validacion personalizada: Ciudad
                        array('MZGTPUBLICACIONES_CIUDAD','validacionCiudad'),
		);
	}
        
        public function validacionRevistaDOI(){
            if($this->FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK==1)
                if(($this->FK5_MZGTPUBLICACIONES_INV_MZGTBASESDATOSINDEXADA_PK==1)||($this->FK5_MZGTPUBLICACIONES_INV_MZGTBASESDATOSINDEXADA_PK==3))
                    if(empty($this->MZGTPUBLICACIONES_DOI))
                        $this->addError('MZGTPUBLICACIONES_DOI', 'Debe especificar el DOI');
        }
        
        public function validacionEnlace(){
            if($this->FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK==1)
                if(empty($this->MZGTPUBLICACIONES_ENLACE))
                    $this->addError('MZGTPUBLICACIONES_ENLACE', 'Debe especificar el enlace');
        }
        
        public function validacionFatorImpacto(){
            if(($this->FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK==1)&&(($this->FK5_MZGTPUBLICACIONES_INV_MZGTBASESDATOSINDEXADA_PK==1)||($this->FK5_MZGTPUBLICACIONES_INV_MZGTBASESDATOSINDEXADA_PK==3)))
                if(empty($this->MZGTPUBLICACIONES_FACTORIMPACTO))
                    $this->addError('MZGTPUBLICACIONES_FACTORIMPACTO', 'Debe especificar el factor de impacto');
        }
        
        public function validacionVolumen(){
            if($this->FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK==1)
                if(empty($this->MZGTPUBLICACIONES_VOLUMEN))
                    $this->addError('MZGTPUBLICACIONES_VOLUMEN', 'Debe especificar el volumen');
        }
        
        public function validacionNumeroRevista(){
            if($this->FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK==1)
                if(empty($this->MZGTPUBLICACIONES_NUMEROREVISTA))
                    $this->addError('MZGTPUBLICACIONES_NUMEROREVISTA', 'Debe especificar el número de la revista');
        }
        
        public function validacionCiudad(){
            if($this->FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK==2)
                if(empty($this->MZGTPUBLICACIONES_CIUDAD))
                    $this->addError('MZGTPUBLICACIONES_CIUDAD', 'Debe especificar la ciudad');
        }
        
        public function validacionNombreEvento(){
            if($this->FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK==2)
                if(empty($this->MZGTPUBLICACIONES_NOMBREEVENTO))
                    $this->addError('MZGTPUBLICACIONES_NOMBREEVENTO', 'Debe especificar el nombre del evento');
        }
        
        public function validacionNumeroPaginas(){
            if($this->FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK==1)
                if(empty($this->MZGTPUBLICACIONES_NUMEROPAGINAS))
                    $this->addError('MZGTPUBLICACIONES_NUMEROPAGINAS', 'Debe especificar el número de páginas');
        }
        
        public function validacionPaginas(){
            if($this->FK4_MZGTPUBLICACIONES_INV_MZGTTIPOSPUBLICACIONES_PK==1)
                if(empty($this->MZGTPUBLICACIONES_PAGINAS))
                    $this->addError('MZGTPUBLICACIONES_PAGINAS', 'Debe especificar el rango de páginas');
        }
        
}