<?php 

class Funciones extends CApplicationComponent{

	public $someconfig='somedefault';

	public function init() {
        // Init this component
    }

    public function cortarString($string, $largo){
	   $marca = "<!--corte-->";

	   if (strlen($string) > $largo) {
		   
		   $string = wordwrap($string, $largo, $marca);
		   $string = explode($marca, $string);
		   $string = $string[0];
		   
		   return $string.'...';
	   }else{
			return $string;
	   }
	}

	public function listaCategorias1($id){

		if(!empty($id)){
			$model = Categorias::model()->findAll(array("condition"=>"activo = 1 AND id_categoria <> ".$id, "order"=>"nombre ASC"));
		}else{
			$model = Categorias::model()->findAll(array("condition"=>"activo = 1", "order"=>"nombre ASC"));
		}
		
		$returnArr = array();
		
		foreach($model as $item){
			$returnArr[$item->id_categoria] = $item->nombre;
		}

		return $returnArr;
	}

	public function listaCategorias(){

		$model = Categorias::model()->findAll(array("condition"=>"activo = 1 AND parent_id IS NULL", "order"=>"nombre ASC"));
		
		$returnArr = array();
		
		foreach($model as $item){
			$returnArr[$item->id_categoria] = $item->nombre;
		}

		return $returnArr;

	}public function listaSubcategorias($id){

		$model = Categorias::model()->findAll(array("condition"=>"activo = 1 AND parent_id = ".$id, "order"=>"nombre ASC"));
		
		$returnArr = array();
		
		foreach($model as $item){
			$returnArr[$item->id_categoria] = $item->nombre;
		}

		return $returnArr;
	}

	/*public function listaCategorias(){

		$model = Categorias::model()->findAll(array("condition"=>"activo = 1 AND parent_id IS NULL", "order"=>"nombre ASC"));
		
		$returnArr = array();
		
		foreach($model as $item){
			$returnArr[$item->id_categoria] = $item->nombre;
		}

		return $returnArr;
	}*/

	public function getNivelesCategorias(){
		
		$niveles = array();

		$criteria = new CDbCriteria;
		$criteria->select='t.nivel';
		$criteria->condition = 'activo = 1';
		$criteria->order = "nivel";
		$criteria->distinct=true;
		//Apply To Model
		$model = Categorias::model()->findAll($criteria);

		foreach ($model as $nivel) {
			$niveles[] = $nivel->nivel;
		}

		return $niveles;
	}

	public function getCategoriasObs($nivel, $id){
		$model = Categorias::model()->findAll(array("condition"=>"activo = 1 and parent_id = ".$id, "order"=>"nombre ASC"));
		$returnArr = array();
		
		foreach($model as $item){
			$returnArr[$item->id_categoria] = $item->nombre;
		}

		return $returnArr;
	}

	public function listaBaseCategorias($id){

		$modelCategorias = BasesCategorias::model()->findAll(array('condition'=>'id_base_encuesta = '.$id));

		$returnArr = array();
		
		foreach($modelCategorias as $item){
			$model = Categorias::model()->findByPk($item->id_categoria);
			$returnArr[$model->id_categoria] = $model->nombre;
		}

		return $returnArr;
	}

	public function listaTiposDocumentos(){

		$model = TiposDocumentos::model()->findAll();

		$returnArr = array();
		
		foreach($model as $item){
			$returnArr[$item->id_tipo_documento] = $item->nombre;
		}

		return $returnArr;
	}

	public function listaColaboradores(){

		$model = Colaboladores::model()->findAll(array('condition' => 'activo = 1', 'order' => 'nombre_completo ASC'));

		$returnArr = array();
		
		foreach($model as $item){
			$returnArr[$item->id_colaborador] = $item->nombre_completo;
		}

		return $returnArr;
	}

	public function listaTipoArchivos(){
		$model = TiposArchivos::model()->findAll();

		$returnArr = array();
		
		foreach($model as $item){
			$returnArr[$item->id_tipo_archivo] = $item->nombre;
		}

		return $returnArr;
	}

	public function eliminarHtml($cadena){
		
		$return = strip_tags($cadena);
				
		return $return;
		
	}

	/**
	 * Reemplaza todos los caracteres con acentos y tildes por sus equivalentes sin ellos
	 *
	 * @param $string
	 *  string la cadena a limpiar
	 *
	 * @return $string
	 *  string limpia
	 */
	public function cleanString($string)
	{	
	    return strtr($string,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ',
'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
	} //end function

/*	public function categoriasRecursivo(){
		//se declara la variable global $nivel para tener una referencia fuera de la función recursiva que indique el nivel de profundidad de subfamilia actual
		$nivel = "";
		global $nivel;
		///funcion recursiva que recorre el menu
		function recorrer_menu_familias($padre, $nivel_anterior){
		    //la consulta a la tabla familias busca los hijos del padre que entró como parametro a esta función
		    $sql="SELECT id_familia, padre, nivel, nombre_es FROM familias WHERE padre = $padre";
		    $result=mysql_query($sql);
		    while($row = mysql_fetch_array($result)){
		        if($GLOBALS&#91;'nivel'&#93;=="")
		            //si la goblal nivel está vacia es que acaba de empecar el ciclo recursivo
		            echo "<li>\n";
		        else{
		            //según la diferencia de nivel actual con el anterior guardada en $GLOBALS['nivel'] se cierran o abren etiquetas <Li>
		            $diferencia = $row['nivel'] - $GLOBALS['nivel'];
		            if($diferencia==0) echo "</li>\n<li>\n"; //no ha cambiado de nivel de subfamilia respecto al anterior
		            if($diferencia==1) echo "<ul>\n<li>\n"; //ha subido un nivel de subfamilia respecto al anterior
		            if($diferencia==-1) echo "</li>\n</ul>\n<li>\n"; //ha bajado un nivel de subfamilia respecto al anterior
		            if($diferencia < (-1)){
		                //baja varios niveles de subfamilia respecto al anterior
		                echo "</li>";
		                for($i=$diferencia;$i<0;$i++)
		                    echo "</ul>\n</li>\n";
		                echo "<li>\n";
		            }
		        }
		        //crea el enlace
		        echo "<a href='?fam=".$row&#91;'id_familia'&#93;."'>".$row['nombre_es']."</a>";
		        //actualiza $GLOBALS['nivel'] al nivel actual
		        $GLOBALS['nivel'] = $row['nivel'];
		        //se llama a si mismo para comprovar quienes son los hijos de la familia actual
		        recorrer_menu_familias($row['id_familia'],$row['nivel']);
		    }
		}
		//muestra menu
		function muestra_menu_familias(){
		    recorrer_menu_familias(0, "");
		    echo "</li>\n";
		    for($i=0;$i==$GLOBALS['nivel'];$i++)
		        echo "</ul>\n</li>\n";
		}
	}*/
	
	/********************** BASES DE DATOS *******************************/

	//CONECCION A LA BD
	public function connectDB(){
		
		/*$servername = "localhost";
		$username = "root";
		$password = "PkJXPQFykKLmS3cWhqmZKNYE";
		$dbname = "PPD";*/

		$servername = "localhost";
		$username = "root";
		$password = "";
		$dbname = "ppd";

		// Create connection
		$conn = new mysqli($servername, $username, $password, $dbname);
		$conn->set_charset("utf8");

		// Check connection
		if ($conn->connect_error) {
		    die("Connection failed: " . $conn->connect_error);
		}

		return $conn;
	}

	//CREAR UNA NUEVA TABLA
	public function createDB($tbl, $clmn){

		$conn = $this->connectDB();

		$sql = 'CREATE TABLE IF NOT EXISTS '.$tbl.'('.$clmn.' VARCHAR(5) ) ROW_FORMAT=COMPRESSED;';
		
		if ($conn->query($sql) !== TRUE) {
			echo "Error creating table: " . $conn->error;
		    //echo "Database created successfully";
		} 

		$conn->close();

		return true;
	}

	//INSERTAR DATOS EN LA TABLA
	public function insertDB($tbl, $clmn, $value){

		$conn = $this->connectDB();

		$sql = 'INSERT INTO '.$tbl.'('.$clmn.') values("'.$value.'")';
		
		if ($conn->query($sql) !== TRUE) {
			echo "Error insert into table ".$tbl.": ".$conn->error;
		   //echo "New record created successfully";
		}

		$conn->close();

		return true;
	}

	//VERIFICAR SI ES NUMERICO O STRING
	public function checkBD($tbl, $columna){

		$tipo = 0;
		$sql = 'SELECT SUM('.$columna.') AS total FROM '.$tbl;
		$total = Yii::app()->db->createCommand($sql)->queryScalar();

		if($total > 0){
			$tipo = 1;
		}

		return $tipo;
	}

	//VERIFICA SI YA EXISTE LA BD
	public function existsBD($tbl){

		$conn = $this->connectDB();
		$return = 0;

		$sql = 'SHOW TABLES LIKE '.$tbl;
		
		if ($result = $conn->query($sql)) {
			$return = $result->num_rows;  
		}

		$conn->close();

		return $return;
	}

	//ELIMINAR TABLA DE LA BD
	public function deleteBD($tbl){
		
		$return = false;
		$conn = $this->connectDB();
		$consulta = "DROP TABLE ".$tbl;

		$resultado = $conn -> query($consulta);

		if ($resultado){
			$return = true;
		}
		
		$conn->close();

		return $return;
	}

}
		

?>