<?php
class DocumentosController extends CrController{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column1';

	/**
	 * @return array action filters
	 */
	public function filters(){
		return array(
			'accessControl', // perform access control for CRUD operations
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules(){
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view','activo','series'),
				'users'=>array('@'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update','GeneratePdf','GenerateExcel'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id){
		$this->render('view',array('model'=>$this->loadModel($id),));
	}
	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate(){
		$model=new Documentos;
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		//echo "<pre>";print_r($_POST['Documentos']);print_r($_FILES);echo "<pre>";die();
		//echo "<pre>";print_r($_POST);print_r($_FILES);echo "<pre>";die();
		if(isset($_POST['Documentos'])){
			$model->attributes=$_POST['Documentos'];
			if(!empty($model->url_youtube)){
				$coincidencia = stripos($model->url_youtube, 'iframe');
				if($coincidencia === false){
					$ytarray=explode("/", $model->url_youtube);
					$ytendstring=end($ytarray);
					$ytendarray=explode("?v=", $ytendstring);
					$ytendstring=end($ytendarray);
					$ytendarray=explode("&", $ytendstring);
					$ytcode=$ytendarray[0];
					$model->url_youtube = '<iframe width="560" height="315" src="https://www.youtube.com/embed/'.$ytcode.'" frameborder="0" allowfullscreen></iframe>';
					//filtro los enlaces normales
					//$model->url_youtube = preg_replace("/((http|https|www)[^\s]+)/", '<iframe width="560" height="315" src="$1" frameborder="0" allowfullscreen></iframe>', $model->url_youtube);
					//miro si hay enlaces con solamente www, si es así le añado el http://
					//$model->url_youtube = preg_replace("/src=\"www/", 'src="http://www', $model->url_youtube);
				}
			}
			if(!empty($model->url_issuu)){
				$coincidencia = stripos($model->url_issuu, 'iframe');
				$coincidencia1 = stripos($model->url_issuu, 'div');
				if($coincidencia === false && $coincidencia1 === false){
					$model->url_issuu = '<iframe width="560" height="315" src="'.$model->url_issuu.'" frameborder="0" allowfullscreen></iframe>';
				}
			}
			if(isset($_FILES['archivo'])){
				if ($_FILES['archivo']['error'] == UPLOAD_ERR_OK) {
					$filename = $_FILES['archivo']['name'];
					$nombre = date('Ymd_His').'_'.Yii::app()->funciones->cleanText($filename);
					$model->archivo = $nombre;
					$nombre_tmp = $_FILES['archivo']['tmp_name'];
					move_uploaded_file($nombre_tmp, $_SERVER['DOCUMENT_ROOT'].Yii::app()->request->baseUrl.'/documentos/'.$nombre);
				}
			}
			if($model->save()){
				$this->redirect(array('index'));
			}	
		}
		$this->render('create',array('model'=>$model,));
	}
	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id){
		$model=$this->loadModel($id);
		$archivo = $model->archivo;
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		if(isset($_POST['Documentos'])){
			$model->attributes=$_POST['Documentos'];
			if(!empty($model->url_youtube)){
				$coincidencia = stripos($model->url_youtube, 'iframe');
				if($coincidencia === false){
					$ytarray=explode("/", $model->url_youtube);
					$ytendstring=end($ytarray);
					$ytendarray=explode("?v=", $ytendstring);
					$ytendstring=end($ytendarray);
					$ytendarray=explode("&", $ytendstring);
					$ytcode=$ytendarray[0];
					$model->url_youtube = '<iframe width="560" height="315" src="https://www.youtube.com/embed/'.$ytcode.'" frameborder="0" allowfullscreen></iframe>';
					//filtro los enlaces normales
					//$model->url_youtube = preg_replace("/((http|https|www)[^\s]+)/", '<iframe width="560" height="315" src="$1" frameborder="0" allowfullscreen></iframe>', $model->url_youtube);
					//miro si hay enlaces con solamente www, si es así le añado el http://
					//$model->url_youtube = preg_replace("/src=\"www/", 'src="http://www', $model->url_youtube);
				}
			}
			if(!empty($model->url_issuu)){
				$coincidencia = stripos($model->url_issuu, 'iframe');
				$coincidencia1 = stripos($model->url_issuu, 'div');

				if($coincidencia === false && $coincidencia1 === false){
					$model->url_issuu = '<iframe width="560" height="315" src="'.$model->url_issuu.'" frameborder="0" allowfullscreen></iframe>';
				}
			}
			if(isset($_FILES['archivo'])){
				if ($_FILES['archivo']['error'] == UPLOAD_ERR_OK) {
					$filename = $_FILES['archivo']['name'];
					$nombre = date('Ymd_His').'_'.Yii::app()->funciones->cleanText($filename);
					$model->archivo = $nombre;
					$nombre_tmp = $_FILES['archivo']['tmp_name'];
					move_uploaded_file($nombre_tmp, $_SERVER['DOCUMENT_ROOT'].Yii::app()->request->baseUrl.'/documentos/'.$nombre);
				}
			}
			$model->last_update = date('Y-m-d');
			if($model->save()){
				$this->redirect(array('index'));			
			}
		}
		$this->render('update',array('model'=>$model,));
	}
	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id){
		//if(!isset($_GET['ajax']))return false;
		$data=array("check"=>"0");
		if($this->loadModel($id)->delete())$data=array("check"=>"1");
		echo json_encode($data);
		exit();
	}
	public function actionActivo($id){
		$model=$this->loadModel($id);
		//Importante tener declarado el campo activo
		//en el modelo de base de datos
		$activo=$model->activo;
		if($model->activo){
			$model->activo=0;
		}else{
			$model->activo=1;
		}
		$arrResp=array();
		if($model->saveAttributes(array('activo'=>$model->activo))){
			$arrResp=array(	'check'=>1,'activo'=>$model->activo);			
		}else{
			$arrResp=array(	'check'=>0,'activo'=>$activo);						
		}
		echo json_encode($arrResp);
		Yii::App()->end();
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex(){
		$model = Documentos::model()->findAll();
        $this->render('index',array('model'=>$model,));
	}
	/**
	 * Manages all models.
	 */
	public function actionAdmin(){
		$model=new Documentos('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Documentos'])) $model->attributes=$_GET['Documentos'];
		$this->render('admin',array('model'=>$model,));
	}
	public function actionSeries(){
		$returnArr = array();
		$maximo = Yii::app()->db->createCommand('SELECT MAX(serie) AS maximo FROM tbl_documentos')->queryScalar();
		if($maximo >= 0){
			$returnArr['valor'] = $maximo+1;
			$returnArr['check'] = 1;
		}else{
			$returnArr['check'] = 0;
		}
		echo json_encode($returnArr);
		Yii::app()->end();
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id){
		$model=Documentos::model()->findByPk($id);
		if($model===null) throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}
	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model){
		if(isset($_POST['ajax']) && $_POST['ajax']==='documentos-form'){
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
}
?>