<?php session_start(); class ObservatorioController extends Controller { public $layout='//layouts/observatorio'; public function actionIndex(){ $this->render('index'); } public function actionCategorias($id){ $model = BasesCategorias::model()->findAll(array('condition'=>'id_categoria = '.$id, 'order'=>'id_base_categoria DESC')); $modelRecientes = BasesEncuestas::model()->findAll(array('condition'=>'activo = 1', 'order'=>'log DESC', 'limit'=>3)); $modelVistas = BasesEncuestas::model()->findAll(array('condition'=>'activo = 1', 'order'=>'vistas DESC', 'limit'=>3)); $this->render('categorias',array('model'=>$model, 'modelRecientes'=>$modelRecientes, 'modelVistas'=>$modelVistas, 'id_tipo' => $id)); } public function actionCategoriaSort(){ $returnArr = array(); $order = $_POST['order']; $sort = $_POST['sort']; $id_tipo = $_POST['id_tipo']; $returnArr['contenido'] = ''; $returnArr['check'] = 1; $criteria = new CDbCriteria; $criteria->select = 't.*'; $criteria->join = 'LEFT JOIN tbl_bases_categorias bc ON bc.id_base_encuesta = t.id_encuesta_base'; $criteria->addCondition('bc.id_categoria = '.$id_tipo); $criteria->addCondition('t.activo = 1'); switch ($order) { case 'recientes': $criteria->order = 't.log '.$sort; break; case 'visitados': $criteria->order = 't.vistas '.$sort; break; case 'alfabeto': $criteria->order = 't.encuesta '.$sort; break; } $model = BasesEncuestas::model()->findAll($criteria); /*$_SESSION['doc_order'] = $order_var; $_SESSION['doc_sort'] = $sort;*/ if(!empty($model)){ foreach ($model as $item) { $returnArr['contenido'].= '<div class="inner-results"><h3>'; if(!empty($item->licencia_uso)){ $returnArr['contenido'].= '<a class="mensajeLicencia" href="javascript:void(0)" data-id="'.$item->id_encuesta_base.'" >'; }else{ $returnArr['contenido'].= '<a href="'.Yii::app()->request->baseUrl.'/index.php/observatorio/grafica/id/'.$item->id_encuesta_base.'.html" data-id="'.$item->id_encuesta_base.'" >'; } $returnArr['contenido'].= $item->encuesta.'</a></h3><ul class="list-inline up-ul">'; $categorias = Yii::app()->funciones->listaBaseCategorias($item->id_encuesta_base); foreach ($categorias as $id => $nombre) { $returnArr['contenido'].= '<li><a href="'.$this->createUrl('categorias',array('id'=>$id)).'"><i class="fa fa-tag" style="margin-right:8px"></i>'.$nombre.'</a></li>'; } $returnArr['contenido'].= '</ul><div class="row"><div class="col-md-2"><center>'. '<img src="'.Yii::app()->request->baseUrl.'/images/icons/database.ico" />'. '</center></div><div class="col-md-10"><p>'.Yii::app()->funciones->cortarString($item->resumen,500).'</p></div></div><ul class="list-inline down-ul">'; if(!empty($item->fecha)){ $returnArr['contenido'].= '<li><i class="fa fa-calendar" style="margin-right:8px"></i>'.$item->fecha.'</li>'; } if(!empty($item->autor)){ $returnArr['contenido'].= '<li><i class="fa fa-pencil" style="margin-right:8px"></i>'.$item->autor.'</li>'; } $returnArr['contenido'].= '</ul></div><hr>'; } }else{ $returnArr['check'] = 0; } echo json_encode($returnArr); Yii::app()->end(); } public function actionEncuesta($id){ $model = BasesEncuestas::model()->findByPk($id); $tabla = 'enc_'.$model->tabla; $connection = Yii::app()->db; $dataReader = $connection->createCommand('SELECT * FROM '.$tabla.' WHERE mostrar = 1 ORDER BY id ASC')->query(); $columnas = array(); $clm_enc = array(); while(($row = $dataReader->read())!==false){ $columnas[] = $row; $clm_enc[] = $row['encabezado']; } $sql_select = implode(',', $clm_enc); $informacion = array(); $sql = 'SELECT '.$sql_select.' FROM '.$model->tabla.' LIMIT 200'; $dataReader=$connection->createCommand($sql)->query(); while(($row = $dataReader->read())!==false){ $informacion[] = $row; } $modelArchivos = BasesArchivos::model()->findByAttributes(array('id_base_encuesta' => $id, 'id_tipo_archivo' => 2)); if(!empty($modelArchivos)){ $libro_codigos = $modelArchivos->archivo; }else{ $libro_codigos = ''; } /*$model->vistas = $model->vistas + 1; $model->saveAttributes(array('vistas'=> $model->vistas));*/ $this->render('encuesta',array('model'=>$model, 'columnas'=>$columnas, 'informacion'=>$informacion, 'tabla'=>$model->tabla, 'id_encuesta' => $id, 'libro_codigos'=>$libro_codigos)); } public function actionGrafica($id){ $modelEnc = array(); $model = BasesEncuestas::model()->findByPk($id); $tbl = 'enc_'.$model->tabla; $connect = Yii::app()->db; $dataReader = $connect->createCommand('SELECT encabezado, nombre_corto, descripcion FROM '.$tbl.' WHERE mostrar = 1')->query(); while(($row = $dataReader->read())!==false){ $modelEnc[] = $row; } $model->vistas = $model->vistas + 1; $model->saveAttributes(array('vistas'=> $model->vistas)); $modelArchivos = BasesArchivos::model()->findByAttributes(array('id_base_encuesta' => $id, 'id_tipo_archivo' => 2)); if(!empty($modelArchivos)){ $libro_codigos = $modelArchivos->archivo; }else{ $libro_codigos = ''; } $this->render('grafica',array('model'=>$model, 'modelEnc'=>$modelEnc, 'libro_codigos' => $libro_codigos)); } public function actionMetadatos($id){ $model = BasesEncuestas::model()->findByPk($id); $modelBasesArchivos = BasesArchivos::model()->findAll(array('condition'=>'id_base_encuesta = '.$id)); $this->renderPartial('metadatos',array('model'=>$model, 'modelBasesArchivos' => $modelBasesArchivos)); } public function actionDescargables(){ $model = BasesEncuestas::model()->findAll(array('condition'=>'activo = 1 AND descargable = 1', 'order' => 'log DESC')); $modelRecientes = BasesEncuestas::model()->findAll(array('condition'=>'activo = 1', 'order'=>'log DESC', 'limit'=>3)); $modelVistas = BasesEncuestas::model()->findAll(array('condition'=>'activo = 1', 'order'=>'vistas DESC', 'limit'=>3)); $this->render('descargables',array('model'=>$model, 'modelRecientes'=>$modelRecientes, 'modelVistas'=>$modelVistas)); } public function actionMetaDescargables($id){ $model = BasesEncuestas::model()->findByPk($id); $modelBasesArchivos = BasesArchivos::model()->findAll(array('condition'=>'id_base_encuesta = '.$id)); $this->render('_metadatosDes',array('model'=>$model, 'modelBasesArchivos' => $modelBasesArchivos)); } public function actionRegistroLicencia(){ /*$returnArr = array(); $returnArr['check'] = 0;*/ if(isset($_POST['id_encuesta'])){ $id = $_POST['id_encuesta']; $nombre = $_POST['nombre']; $correo = $_POST['correo']; $tipo = $_POST['tipo']; $model = new BasesLicencias; $model->nombre = $nombre; $model->correo = $correo; $model->id_base_encuesta = $id; if($model->save()){ //$returnArr['check'] = 1; if($tipo == 1) $this->redirect(array('grafica', 'id'=>$id)); else $this->redirect(array('metaDescargables', 'id'=>$id)); } } /*echo json_encode($returnArr); Yii::app()->end();*/ } public function actionActualizarTabla(){ $tbl = $_POST['tabla']; $returnArr = array(); $inf = array(); $ocultar = array(); $maximo = array(); $minimo = array(); $suma = array(); $promedio = array(); $columnas = array(); $columnas1 = array(); $columnas_sql = array(); $tabla = ''; $encabezado = ''; $pr_id = ''; $where = ''; $agrupar = ''; $connection = Yii::app()->db; $informacion = array(); //CONSULTA TODAS LAS COLUMNAS DE LA BD $sql = 'SHOW COLUMNS FROM '.$tbl; $command = $connection->createCommand($sql); $dataReader=$command->query(); while(($row = $dataReader->read())!==false){ $columnas[] = $row['Field']; } //END CONSULTA TODAS LAS COLUMNAS DE LA BD //COMPRUEBA SI SE AGREGAN O QUITAN CHKS if($_POST['chk'] == 1){ $opcion = $_POST['id']; switch ($opcion) { case "agrupar": $_SESSION['group'] = $_POST['query']; break; case "ocultar": if(isset($_SESSION['ocultar'])){ $ocultar = $_SESSION['ocultar']; array_push($ocultar, $_POST['query']); $_SESSION['ocultar'] = $ocultar; }else{ array_push($ocultar, $_POST['query']); $_SESSION['ocultar'] = $ocultar; } break; case "maximo": if(isset($_SESSION['maximo'])){ $maximo = $_SESSION['maximo']; array_push($maximo, $_POST['query']); $_SESSION['maximo'] = $maximo; }else{ array_push($maximo, $_POST['query']); $_SESSION['maximo'] = $maximo; } break; case "minimo": if(isset($_SESSION['minimo'])){ $minimo = $_SESSION['minimo']; array_push($minimo, $_POST['query']); $_SESSION['minimo'] = $minimo; }else{ array_push($minimo, $_POST['query']); $_SESSION['minimo'] = $minimo; } break; case "promedio": if(isset($_SESSION['promedio'])){ $promedio = $_SESSION['promedio']; array_push($promedio, $_POST['query']); $_SESSION['promedio'] = $promedio; }else{ array_push($promedio, $_POST['query']); $_SESSION['promedio'] = $promedio; } break; case "suma": if(isset($_SESSION['suma'])){ $suma = $_SESSION['suma']; array_push($suma, $_POST['query']); $_SESSION['suma'] = $suma; }else{ array_push($suma, $_POST['query']); $_SESSION['suma'] = $suma; } break; default: // 0 => nombre_columna 1=>contenido $query = explode('-', $_POST['query']); $columna = $query[0]; $contenido = $query[1]; if (isset($_SESSION['query'])){ $inf = $_SESSION['query']; if(array_key_exists($columna, $inf)){ if(!in_array($contenido, $inf[$columna])){ array_push($inf[$columna], $contenido); $_SESSION['query'] = $inf; } }else{ $inf[$columna] = array($contenido); $_SESSION['query'] = $inf; } }else{ $inf[$columna] = array($contenido); $_SESSION['query'] = $inf; } } }else if($_POST['chk'] == 0){ $opcion = $_POST['id']; switch ($opcion) { case "agrupar": unset($_SESSION['group']); unset($_SESSION['maximo']); unset($_SESSION['minimo']); unset($_SESSION['promedio']); unset($_SESSION['suma']); break; case "ocultar": $ocultar = $_SESSION['ocultar']; if(in_array($_POST['query'],$ocultar)){ foreach ($ocultar as $id => $oculto) { if($oculto == $_POST['query']){ unset($ocultar[$id]); } } if(count($ocultar) == 0){ unset($_SESSION['ocultar']); }else{ $_SESSION['ocultar'] = $ocultar; } } break; case "maximo": $maximo = $_SESSION['maximo']; if(in_array($_POST['query'],$maximo)){ foreach ($maximo as $id => $max) { if($max == $_POST['query']){ unset($maximo[$id]); } } if(count($maximo) == 0){ unset($_SESSION['maximo']); }else{ $_SESSION['maximo'] = $maximo; } } break; case "minimo": $minimo = $_SESSION['minimo']; if(in_array($_POST['query'],$minimo)){ foreach ($minimo as $id => $min) { if($min == $_POST['query']){ unset($minimo[$id]); } } if(count($minimo) == 0){ unset($_SESSION['minimo']); }else{ $_SESSION['minimo'] = $minimo; } } break; case "promedio": $promedio = $_SESSION['promedio']; if(in_array($_POST['query'],$promedio)){ foreach ($promedio as $id => $prom) { if($prom == $_POST['query']){ unset($promedio[$id]); } } if(count($promedio) == 0){ unset($_SESSION['promedio']); }else{ $_SESSION['promedio'] = $promedio; } } break; case "suma": $suma = $_SESSION['suma']; if(in_array($_POST['query'],$suma)){ foreach ($suma as $id => $sum) { if($sum == $_POST['query']){ unset($suma[$id]); } } if(count($suma) == 0){ unset($_SESSION['suma']); }else{ $_SESSION['suma'] = $suma; } } break; default: $where = ''; // 0 => nombre_columna 1=>contenido $query = explode('-', $_POST['query']); $columna = $query[0]; $contenido = $query[1]; if (isset($_SESSION['query'])){ $inf = $_SESSION['query']; if(array_key_exists($columna, $inf)){ if(in_array($contenido, $inf[$columna])){ $temp = array(); $aux = ''; $otro_query = array(); $temp = $inf[$columna]; //AQUI ME QUEDE count($inf)>1 //print_r($temp); if(count($temp) > 1){ foreach ($temp as $id => $valor) { if($contenido != $valor){ $aux = $valor; }else{ $aux = ''; } if($aux != ''){$otro_query[] = $aux;} } $inf[$columna] = $otro_query; }else{ unset($inf[$columna]); } } if(count($inf)>0){ $_SESSION['query'] = $inf; }else{ unset($_SESSION['query']); } //end if } //enf if array_key_exists }// end if isset($_SESSION['query']) } } //END COMPRUEBA SI SE AGREGAN O QUITAN CHKS //SE LLENAN LOS ARRAYS DE LAS OPERACIONES if(isset($_SESSION['maximo'])){ $maximo = $_SESSION['maximo']; } if(isset($_SESSION['minimo'])){ $minimo = $_SESSION['minimo']; } if(isset($_SESSION['promedio'])){ $promedio = $_SESSION['promedio']; } if(isset($_SESSION['suma'])){ $suma = $_SESSION['suma']; } //SE CREAN LAS SENTENCIAS SQL PARA AGRUPAR Y/O OCULTAR DATOS if(isset($_SESSION['ocultar']) && isset($_SESSION['group'])){ //Se revisa si es columna de numeros o string if(Yii::app()->funciones->checkBD($tbl,$_SESSION['group']) == 1){ $order = ' ORDER BY '.$_SESSION['group'].' * 1'; }else{ $order = ' ORDER BY '.$_SESSION['group'].' ASC'; } $agrupar = ' GROUP BY '.$_SESSION['group'].$order; $ocultar = $_SESSION['ocultar']; foreach ($columnas as $id => $columna) { $temp = ''; foreach ($ocultar as $id => $oculto) { if($columna == $oculto){ $temp = ''; break; }else{ $temp = $columna; } } if($temp != ''){ $columnas_sql[] = $temp; $columnas1[] = $temp;} } if(count($maximo)>0){ foreach ($columnas_sql as $id => $columna) { foreach ($maximo as $key => $max) { if($max == $columna){ $columnas_sql[$id] = 'MAX('.$columna.')'; break; }else{ $columnas_sql[$id] = $columna; } }//end foreach maximo }//end foreach columnas_sql }//en if maximo if(count($minimo)>0){ foreach ($columnas_sql as $id => $columna) { foreach ($minimo as $key => $min) { if($min == $columna){ $columnas_sql[$id] = 'MIN('.$columna.')'; break; }else{ $columnas_sql[$id] = $columna; } }//end foreach minimo }//end foreach columnas_sql }//en if minimo if(count($promedio)>0){ foreach ($columnas_sql as $id => $columna) { foreach ($promedio as $key => $prom) { if($prom == $columna){ $columnas_sql[$id] = 'AVG('.$columna.')'; break; }else{ $columnas_sql[$id] = $columna; } }//end foreach promedio }//end foreach columnas_sql }//en if promedio if(count($suma)>0){ foreach ($columnas_sql as $id => $columna) { foreach ($suma as $key => $sum) { if($sum == $columna){ $columnas_sql[$id] = 'SUM('.$columna.')'; break; }else{ $columnas_sql[$id] = $columna; } }//end foreach suma }//end foreach columnas_sql }//end if suma } else if(isset($_SESSION['group'])){ //Se revisa si es columna de numeros o string if(Yii::app()->funciones->checkBD($tbl,$_SESSION['group']) == 1){ $order = ' ORDER BY '.$_SESSION['group'].' * 1'; }else{ $order = ' ORDER BY '.$_SESSION['group'].' ASC'; } $agrupar = ' GROUP BY '.$_SESSION['group'].$order; $columnas1 = $columnas; $columnas_sql = $columnas; if(count($maximo)>0){ foreach ($columnas_sql as $id => $columna) { foreach ($maximo as $key => $max) { if($max == $columna){ $columnas_sql[$id] = 'MAX('.$columna.')'; break; }else{ $columnas_sql[$id] = $columna; } }//end foreach maximo }//end foreach columnas_sql }//en if maximo if(count($minimo)>0){ foreach ($columnas_sql as $id => $columna) { foreach ($minimo as $key => $min) { if($min == $columna){ $columnas_sql[$id] = 'MIN('.$columna.')'; break; }else{ $columnas_sql[$id] = $columna; } }//end foreach minimo }//end foreach columnas_sql }//en if minimo if(count($promedio)>0){ foreach ($columnas_sql as $id => $columna) { foreach ($promedio as $key => $prom) { if($prom == $columna){ $columnas_sql[$id] = 'AVG('.$columna.')'; break; }else{ $columnas_sql[$id] = $columna; } }//end foreach promedio }//end foreach columnas_sql }//en if promedio if(count($suma)>0){ foreach ($columnas_sql as $id => $columna) { foreach ($suma as $key => $sum) { if($sum == $columna){ $columnas_sql[$id] = 'SUM('.$columna.')'; break; }else{ $columnas_sql[$id] = $columna; } }//end foreach suma }//end foreach columnas_sql }//end if suma } else if(isset($_SESSION['ocultar'])){ $ocultar = $_SESSION['ocultar']; foreach ($columnas as $id => $columna) { $temp = ''; foreach ($ocultar as $key => $oculto) { if($columna == $oculto){ $temp = ''; break; }else{ $temp = $columna; } } if($temp != ''){$columnas_sql[] = $temp; $columnas1[] = $temp;} } }else{ $columnas_sql = $columnas; $columnas1 = $columnas; } //END SE CREAN LAS SENTENCIAS SQL PARA AGRUPAR Y/O OCULTAR DATOS //SE REALIZAN LAS CONSULTAS A LAS BASES DE DATOS CON LOS DATOS DADOS if(isset($_SESSION['query'])){ $inf = $_SESSION['query']; foreach ($inf as $columna => $contenido) { $pr_id = $columna; $condicion = array(); foreach ($contenido as $id => $info) { if(!is_numeric($info)){ $info = '"'.$info.'"'; } $condicion[]= $pr_id.' LIKE '.$info; } $where .= '('.implode(' OR ',$condicion).') AND '; }// end foreach $where = substr($where, 0, -4); $where = ' WHERE '.$where; $str_columnas = implode(', ', $columnas1); $sql = 'SELECT '.$str_columnas.' FROM '.$tbl.$where; $command = $connection->createCommand($sql); $dataReader=$command->query(); while(($row = $dataReader->read())!==false){ $informacion[] = $row; } }else{ $str_columnas = implode(', ', $columnas_sql); if($agrupar != ''){ $sql = 'SELECT '.$str_columnas.' FROM '.$tbl.$agrupar; }else{ $sql = 'SELECT '.$str_columnas.' FROM '.$tbl.' LIMIT 200'; } $command = $connection->createCommand($sql); $dataReader=$command->query(); while(($row = $dataReader->read())!==false){ $informacion[] = $row; } } //END SE REALIZAN LAS CONSULTAS A LAS BASES DE DATOS CON LOS DATOS DADOS //SE CREA EL ENCABEZADO DE LA TABLA if( count($maximo)>0 || count($minimo)>0 || count($promedio)>0 || count($suma)>0 || count($ocultar)>0 ){ $encabezado .= '<tr>'; foreach ($columnas_sql as $id => $columna) { $encabezado .= '<th nowrap>'.$columna.' <div class="dropdownc"> <i class="fa fa-caret-down"></i> <span class="dropdownc-content">'; if($agrupar != ''){ if($_SESSION['group'] == $columna){ $encabezado .= '<input type="checkbox" name="agrupar" id="agrupar-'.$columnas1[$id].'" value="'.$columnas1[$id].'" checked> Agrupar <br>'. '<input type="checkbox" name="ocultar" id="ocultar-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Ocultar <br> <hr style="margin: 10px 0 !important;">'. '<input type="checkbox" name="maximo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Máximo <br>'. '<input type="checkbox" name="minimo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Mínimo <br>'. '<input type="checkbox" name="suma" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Sumar <br>'. '<input type="checkbox" name="promedio" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Promedio <br> <hr style="margin: 10px 0 !important;">'; }else{ $encabezado .= '<input type="checkbox" name="agrupar" id="agrupar-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Agrupar <br>'. '<input type="checkbox" name="ocultar" id="ocultar-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Ocultar <br> <hr style="margin: 10px 0 !important;">'; if(in_array($columnas1[$id], $maximo)){ $chk_max = ' checked '; }else{ $chk_max = ''; } if(in_array($columnas1[$id], $minimo)){ $chk_min = ' checked '; }else{ $chk_min = ''; } if(in_array($columnas1[$id], $suma)){ $chk_sum = ' checked '; }else{ $chk_sum = ''; } if(in_array($columnas1[$id], $promedio)){ $chk_prom = ' checked '; }else{ $chk_prom = ''; } $encabezado .= '<input type="checkbox" name="maximo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'"'.$chk_max.'> Máximo <br>'. '<input type="checkbox" name="minimo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'"'.$chk_min.'> Mínimo <br>'. '<input type="checkbox" name="suma" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'"'.$chk_sum.'> Sumar <br>'. '<input type="checkbox" name="promedio" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'"'.$chk_prom.'> Promedio <br> <hr style="margin: 10px 0 !important;">'; } }else{ $encabezado .= '<input type="checkbox" name="agrupar" id="agrupar-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Agrupar <br>'. '<input type="checkbox" name="ocultar" id="ocultar-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Ocultar <br> <hr style="margin: 10px 0 !important;">'. '<input type="checkbox" name="maximo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Máximo <br>'. '<input type="checkbox" name="minimo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Mínimo <br>'. '<input type="checkbox" name="suma" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Sumar <br>'. '<input type="checkbox" name="promedio" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Promedio <br> <hr style="margin: 10px 0 !important;">'; } if(Yii::app()->funciones->checkBD($tbl,$columnas1[$id]) == 1){ $order = ' ORDER BY '.$columnas1[$id].' * 1'; }else{ $order = ' ORDER BY '.$columnas1[$id].' ASC'; } $sql_dif = 'SELECT DISTINCT '.$columnas1[$id].' FROM '.$tbl.$order; $command = $connection->createCommand($sql_dif); $dataReader=$command->query(); while(($row = $dataReader->read())!==false){ $encabezado .= '<input type="checkbox" name="respuestas" id="respuestas" value="'.$columnas1[$id].'-'.$row[$columnas1[$id]].'"> '.$row[$columnas1[$id]].'<br>'; } $encabezado .= '</span></div></th>'; } $encabezado .= '</tr>'; }else{ $encabezado .= '<tr>'; foreach ($columnas_sql as $id => $columna) { $encabezado .= '<th nowrap>'.$columna.' <div class="dropdownc"> <i class="fa fa-caret-down"></i> <span class="dropdownc-content">'; if($agrupar != ''){ if($_SESSION['group'] == $columnas1[$id]){ $encabezado .= '<input type="checkbox" name="agrupar" id="agrupar-'.$columnas1[$id].'" value="'.$columnas1[$id].'" checked> Agrupar <br>'. '<input type="checkbox" name="ocultar" id="ocultar-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Ocultar <br> <hr style="margin: 10px 0 !important;">'. '<input type="checkbox" name="maximo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Máximo <br>'. '<input type="checkbox" name="minimo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Mínimo <br>'. '<input type="checkbox" name="suma" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Sumar <br>'. '<input type="checkbox" name="promedio" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Promedio <br> <hr style="margin: 10px 0 !important;">'; }else{ $encabezado .= '<input type="checkbox" name="agrupar" id="agrupar-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Agrupar <br>'. '<input type="checkbox" name="ocultar" id="ocultar-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Ocultar <br> <hr style="margin: 10px 0 !important;">'. '<input type="checkbox" name="maximo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Máximo <br>'. '<input type="checkbox" name="minimo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Mínimo <br>'. '<input type="checkbox" name="suma" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Sumar <br>'. '<input type="checkbox" name="promedio" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Promedio <br> <hr style="margin: 10px 0 !important;">'; } }else{ $encabezado .= '<input type="checkbox" name="ocultar" id="ocultar-'.$columnas1[$id].'" value="'.$columnas1[$id].'"> Ocultar <br> <hr style="margin: 10px 0 !important;">'. '<input type="checkbox" name="maximo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Máximo <br>'. '<input type="checkbox" name="minimo" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Mínimo <br>'. '<input type="checkbox" name="suma" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Sumar <br>'. '<input type="checkbox" name="promedio" id="operaciones-'.$columnas1[$id].'" value="'.$columnas1[$id].'" disabled> Promedio <br> <hr style="margin: 10px 0 !important;">'; } if(Yii::app()->funciones->checkBD($tbl,$columnas1[$id]) == 1){ $order = ' ORDER BY '.$columnas1[$id].' * 1'; }else{ $order = ' ORDER BY '.$columnas1[$id].' ASC'; } $sql_dif = 'SELECT DISTINCT '.$columnas1[$id].' FROM '.$tbl.$order; $command = $connection->createCommand($sql_dif); $dataReader=$command->query(); while(($row = $dataReader->read())!==false){ $encabezado .= '<input type="checkbox" name="respuestas" id="respuestas" value="'.$columnas1[$id].'-'.$row[$columnas1[$id]].'"> '.$row[$columnas1[$id]].'<br>'; } $encabezado .= '</span></div></th>'; } $encabezado .= '</tr>'; } //END SE CREA EL ENCABEZADO DE LA TABLA //SE CREA EL CUERPO DE LA TABLA foreach ($informacion as $id => $valor) { $tabla .= '<tr>'; foreach($columnas_sql as $id => $columna){ $tabla .= '<td>'.$valor[$columna].'</td>'; } $tabla .= '</tr>'; } //END SE CREA EL CUERPO DE LA TABLA $returnArr['informacion'] = $sql; $returnArr['tabla'] = $tabla; $returnArr['encabezado'] = $encabezado; echo json_encode($returnArr); Yii::app()->end(); } /*public function actionCrearCSV(){ $returnArr = array(); $returnArr['error'] = ''; $returnArr['url'] = ''; $maximo = array(); $minimo = array(); $suma = array(); $promedio = array(); if(isset($_POST['eje_x']) && isset($_POST['eje_y'])){ $where = ''; $agrupar = ''; $tabla = $_POST['tabla']; $eje_x = $_POST['eje_x']; $eje_y = $_POST['eje_y']; if(isset($_SESSION['group'])){ if(Yii::app()->funciones->checkBD($tabla,$_SESSION['group']) == 1){ $order = ' ORDER BY '.$_SESSION['group'].' * 1'; }else{ $order = ' ORDER BY '.$_SESSION['group'].' ASC'; } $agrupar = ' GROUP BY '.$_SESSION['group'].$order; } if(isset($_SESSION['maximo'])){ $maximo = $_SESSION['maximo']; } if(isset($_SESSION['minimo'])){ $minimo = $_SESSION['minimo']; } if(isset($_SESSION['promedio'])){ $promedio = $_SESSION['promedio']; } if(isset($_SESSION['suma'])){ $suma = $_SESSION['suma']; } if(isset($_SESSION['query'])){ $inf = $_SESSION['query']; foreach ($inf as $columna => $contenido) { $pr_id = $columna; $condicion = array(); foreach ($contenido as $id => $info) { if(!is_numeric($info)){ $info = '"'.$info.'"'; } $condicion[]= $pr_id.' LIKE '.$info; } $where .= '('.implode(' OR ',$condicion).') AND '; }// end foreach $where = substr($where, 0, -4); $where = ' WHERE '.$where; } $connection = Yii::app()->db; $informacion = array(); if($agrupar != ''){ if($_SESSION['group'] == $eje_x){ if(in_array($eje_y, $maximo)){ $sql_y = ' MAX('.$eje_y.') AS '.$eje_y; } else if (in_array($eje_y, $minimo)) { $sql_y = ' MIN('.$eje_y.') AS '.$eje_y; } else if (in_array($eje_y, $suma)) { $sql_y = ' SUM('.$eje_y.') AS '.$eje_y; } else if (in_array($eje_y, $promedio)) { $sql_y = ' AVG('.$eje_y.') AS '.$eje_y; } else{ $sql_y = $eje_y; } //$sql_y = ' SUM('.$eje_y.') AS '.$eje_y; $sql_x = $eje_x; }else if($_SESSION['group'] == $eje_y){ if(in_array($eje_x, $maximo)){ $sql_y = ' MAX('.$eje_x.') AS '.$eje_x; } else if (in_array($eje_x, $minimo)) { $sql_y = ' MIN('.$eje_x.') AS '.$eje_x; } else if (in_array($eje_x, $suma)) { $sql_y = ' SUM('.$eje_x.') AS '.$eje_x; } else if (in_array($eje_x, $promedio)) { $sql_y = ' AVG('.$eje_x.') AS '.$eje_x; } else{ $sql_x = $eje_x; } //$sql_x = ' SUM('.$eje_x.') AS '.$eje_x; $sql_y = $eje_y; }/*else if ($_SESSION['group'] != $eje_x && $_SESSION['group'] != $eje_y){ $sql_x = ' SUM('.$eje_x.') AS '.$eje_x; $sql_y = ' SUM('.$eje_y.') AS '.$eje_y; }//else{ //$sql_x = $eje_x; //$sql_y = $eje_y; //} } //CONSULTA A LA BD $sql = 'SELECT '.$sql_x.','.$sql_y.' FROM '.$tabla.$where.$agrupar; $command = $connection->createCommand($sql); $dataReader=$command->query(); while(($row = $dataReader->read())!==false){ $informacion[] = $row; } $file = date('Ymd_His'); $filename = $_SERVER['DOCUMENT_ROOT'].'/RIR/R/Files/'.$file.'.csv'; //$filename = dirname(__FILE__).'/R/files/id.csv'; $handler = fopen($filename, "w"); fputcsv($handler,array($eje_x,$eje_y),';'); foreach ($informacion as $array) { $x = $array[$eje_x]; $y = $array[$eje_y]; fputcsv($handler,array($x,$y),';'); } if(fclose($handler)){ $url = 'http://datanlab.com/RIR/R/wsGraph.php?ID='.$file.'&Type=0Graph&Params=0'; if (!function_exists('curl_init')){ die('Sorry cURL is not installed!'); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); if ($error = curl_error($ch)) { $returnArr['error'] = $error; $returnArr['chk'] = 0; }else{ $returnArr['url'] = $result; $returnArr['chk'] = 1; } curl_close($ch); } echo json_encode($returnArr); Yii::app()->end(); } }*/ public function actionChartUpdate(){ $returnArr = array(); $connect = Yii::app()->db; $informacion = array(); $inf = array(); $diccionario = array(); $chartData = array(); $eje_y = array(); if(isset($_POST['eje_x']) && isset($_POST['eje_y'])){ foreach ($_POST['eje_y'] as $key => $value) { $eje_y[] = $value; } $eje_x = $_POST['eje_x']; $tabla = $_POST['tbl']; $option_y = $_POST['optiony']; $tbl_enc = 'enc_'.$tabla; $returnArr['chartInfo'] = array(); $bandx = 0; $bandy = 0; if(Yii::app()->funciones->checkBD($tabla,$eje_x) == 1){ $order = ' ORDER BY '.$eje_x.' * 1'; }else{ $order = ' ORDER BY '.$eje_x.' ASC'; } /* *Aqui empieza lo de los diccionarios */ $id_diccionario = $connect->createCommand('SELECT id_diccionario FROM '.$tbl_enc.' WHERE encabezado = "'.$eje_x.'"')->queryScalar(); if($eje_x != 'municipio'){ switch ($option_y) { case 'suma': $op_suma = ''; foreach ($eje_y as $key => $value) { $op_suma .= 'SUM(IF('.$value.' != "9999", '.$value.'*1,0)) AS '.$value.','; } $sql = 'SELECT '.$op_suma.$eje_x.' FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'max': $op_max = ''; foreach ($eje_y as $key => $value) { $op_max .= 'MAX(IF('.$value.' = "9999", 0, '.$value.'*1)) AS '.$value.','; } $sql = 'SELECT '.$op_max.$eje_x.' FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'min': $op_min = ''; foreach ($eje_y as $key => $value) { $op_min .= 'MIN(IF('.$value.' != "9999", '.$value.'*1,0)) AS '.$value.','; } $sql = 'SELECT '.$op_min.$eje_x.' FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'prom': $op_prom = ''; foreach ($eje_y as $key => $value) { $op_prom .= 'AVG(IF('.$value.' != "9999", '.$value.'*1,0)) AS '.$value.','; } $sql = 'SELECT '.$op_prom.$eje_x.' FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'contar': $op_cont = ''; $wh_cont = ''; foreach ($eje_y as $key => $value) { //$op_cont .= 'COUNT(IF('.$value.' != 9999, '.$value.',0)) AS '.$value.','; $op_cont .= 'COUNT('.$value.') AS '.$value.','; $wh_cont .= $value.'<> "9999" AND '; } $wh_cont = substr($wh_cont,0,-4); $sql = 'SELECT '.$op_cont.$eje_x.' FROM '.$tabla.' WHERE '.$wh_cont.' GROUP BY '.$eje_x.$order; break; /*default: $sql = 'SELECT '.$eje_x.','.$eje_y.' FROM '.$tabla.' WHERE '.$eje_y.'<> 9999 GROUP BY '.$eje_x.$order; break;*/ } $dataReader = $connect->createCommand($sql)->query(); while(($row = $dataReader->read())!==false){ $informacion[] = $row; } if($id_diccionario != 0){ $modelDiccionario = Diccionarios::model()->findByPk($id_diccionario); $dataReader = $connect->createCommand('SELECT * FROM '.$modelDiccionario->tabla)->query(); while(($row = $dataReader->read())!==false){ $diccionario[$row['id']] = $row['nombre']; } $bandx = 1; } if(!empty($informacion)){ foreach ($informacion as $item) { if($bandx == 1){ $id_x = $item[$eje_x]; $category = $diccionario[$id_x]; }else{ $category = $item[$eje_x]; } if(count($eje_y) > 1){ $temp_arr = array(); $temp_arr = array('category' => $category); for ($i=0; $i < count($eje_y); $i++) { if($i == 0){ $value = 'value'; }else{ $value = 'value'.$i; } $temp_arr = array_merge($temp_arr, array( $value => $item[$eje_y[$i]])); } array_push($returnArr['chartInfo'], $temp_arr); }else{ array_push($returnArr['chartInfo'], array( 'category' => $category, 'value' => $item[$eje_y[0]])); } } } }else{ switch ($option_y) { case 'suma': $op_suma = ''; foreach ($eje_y as $key => $value) { $op_suma .= 'SUM(IF('.$value.' != "9999", '.$value.'*1,0)) AS '.$value.','; } $sql = 'SELECT '.$op_suma.$eje_x.',estado FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'max': $op_max = ''; foreach ($eje_y as $key => $value) { $op_max .= 'MAX(IF('.$value.' = "9999", 0, '.$value.'*1)) AS '.$value.','; } $sql = 'SELECT '.$op_max.$eje_x.',estado FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'min': $op_min = ''; foreach ($eje_y as $key => $value) { $op_min .= 'MIN(IF('.$value.' != "9999", '.$value.'*1,0)) AS '.$value.','; } $sql = 'SELECT '.$op_min.$eje_x.',estado FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'prom': $op_prom = ''; foreach ($eje_y as $key => $value) { $op_prom .= 'AVG(IF('.$value.' != "9999", '.$value.'*1,0)) AS '.$value.','; } $sql = 'SELECT '.$op_prom.$eje_x.',estado FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'contar': $op_cont = ''; $wh_cont = ''; foreach ($eje_y as $key => $value) { //$op_cont .= 'COUNT(IF('.$value.' != 9999, '.$value.',0)) AS '.$value.','; $op_cont .= 'COUNT('.$value.') AS '.$value.','; $wh_cont .= $value.'<> "9999" AND '; } $wh_cont = substr($wh_cont,0,-4); $sql = 'SELECT '.$op_cont.$eje_x.',estado FROM '.$tabla.' WHERE '.$wh_cont.' GROUP BY '.$eje_x.$order; break; /*default: $sql = 'SELECT '.$eje_x.','.$eje_y.' FROM '.$tabla.' WHERE '.$eje_y.'<> 9999 GROUP BY '.$eje_x.$order; break;*/ } $dataReader = $connect->createCommand($sql)->query(); while(($row = $dataReader->read())!==false){ $informacion[] = $row; } if($id_diccionario != 0){ $modelDiccionario = Diccionarios::model()->findByPk($id_diccionario); $dataReader = $connect->createCommand('SELECT * FROM '.$modelDiccionario->tabla)->query(); while(($row = $dataReader->read())!==false){ $diccionario[$row['id_estado']][$row['id_municipio']] = $row['municipio']; } $bandx = 1; } if(!empty($informacion)){ foreach ($informacion as $item) { if($bandx == 1){ $id_x = $item[$eje_x]; $id_edo = $item['estado']; $category = $diccionario[$id_edo][$id_x]; }else{ $category = $item[$eje_x]; } if(count($eje_y) > 1){ $temp_arr = array(); $temp_arr = array('category' => $category); for ($i=0; $i < count($eje_y); $i++) { if($i == 0){ $value = 'value'; }else{ $value = 'value'.$i; } $temp_arr = array_merge($temp_arr, array( $value => $item[$eje_y[$i]])); } array_push($returnArr['chartInfo'], $temp_arr); }else{ array_push($returnArr['chartInfo'], array( 'category' => $category, 'value' => $item[$eje_y[0]])); } } } } /* *Aqui termina lo de los diccionarios */ if(!empty($returnArr['chartInfo'])){ $returnArr['check'] = 1; }else{ $returnArr['check'] = 0; } //$returnArr['chartInfo'] = $chartData; } echo json_encode($returnArr); Yii::app()->end(); } public function actionPieUpdate(){ $returnArr = array(); if(isset($_POST['field'])){ $field = $_POST['field']; $tbl = $_POST['tbl']; $tbl_enc = 'enc_'.$tbl; $returnArr['chartInfo'] = array(); $diccionario = array(); $temp_arr = array(); $connect = Yii::app()->db; $id_diccionario = $connect->createCommand('SELECT id_diccionario FROM '.$tbl_enc.' WHERE encabezado = "'.$field.'"')->queryScalar(); $dataReader = $connect->createCommand('SELECT '.$field.', COUNT(*) AS total FROM '.$tbl.' GROUP BY '.$field)->query(); if($id_diccionario != 0){ $modelDiccionario = Diccionarios::model()->findByPk($id_diccionario); $dataReader = $connect->createCommand('SELECT * FROM '.$modelDiccionario->tabla)->query(); while(($row = $dataReader->read())!==false){ $diccionario[$row['id']] = $row['nombre']; } } while(($row = $dataReader->read())!==false){ if($id_diccionario != 0){ $category = $diccionario[$row[$field]]; }else{ $category = $row[$field]; } $temp_arr = array('category'=>$category, 'value'=>$row['total']); array_push($returnArr['chartInfo'], $temp_arr); }//end while if(count($returnArr['chartInfo'])>0){ $returnArr['check'] = 1; }else{ $returnArr['check'] = 0; }// end if count } //end if echo json_encode($returnArr); Yii::app()->end(); } public function actionChartInit(){ $returnArr = array(); $tabla = (isset($_POST['tbl']))? $_POST['tbl'] : ''; if($tabla == ''){ $returnArr['check'] = 0; }else{ $command = Yii::app()->db->createCommand('SELECT COUNT(*) AS total_clm FROM '.$tabla); $total_clm = $command->queryScalar(); $returnArr['registros'] = $total_clm; $returnArr['check'] = 1; } echo json_encode($returnArr); Yii::app()->end(); } public function actionMapUpdate(){ $returnArr = array(); $returnArr['chartInfo'] = array(); $returnArr['check'] = 0; $returnArr['minimo'] = 0; $returnArr['maximo'] = 0; $connect = Yii::app()->db; $informacion = array(); $valores = array(); $eje_x = ''; $option_y = $_POST['optiony']; $tabla = $_POST['tbl']; $eje_x = $_POST['eje_x']; $eje_y = $_POST['eje_y']; $tbl_enc = 'enc_'.$tabla; $id_diccionario = $connect->createCommand('SELECT id_diccionario FROM '.$tbl_enc.' WHERE encabezado = "'.$eje_x.'"')->queryScalar(); if($id_diccionario > 1){ $id_edo = array('MX-MEX','MX-JAL','MX-SIN','MX-NAY'); }else{ $id_edo = array('MX-AGU','MX-BCN','MX-BCS','MX-CAM','MX-COA','MX-COL','MX-CHP','MX-CHH', 'MX-DIF','MX-DUR','MX-GUA','MX-GRO','MX-HID','MX-JAL','MX-MEX','MX-MIC', 'MX-MOR','MX-NAY','MX-NLE','MX-OAX','MX-PUE','MX-QUE','MX-ROO','MX-SLP', 'MX-SIN','MX-SON','MX-TAB','MX-TAM','MX-TLA','MX-VER','MX-YUC','MX-ZAC'); } if(Yii::app()->funciones->checkBD($tabla,$eje_x) == 1){ $order = ' ORDER BY '.$eje_x.' * 1'; }else{ $order = ' ORDER BY '.$eje_x.' ASC'; } switch ($option_y) { case 'suma': $sql = 'SELECT SUM(IF('.$eje_y.' = 9999, 0, '.$eje_y.')) AS '.$eje_y.', '.$eje_x.' FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'max': $sql = 'SELECT MAX(IF('.$eje_y.' = 9999, 0, '.$eje_y.')) AS '.$eje_y.', '.$eje_x.' FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'min': $sql = 'SELECT MIN(IF('.$eje_y.' = 9999, 0, '.$eje_y.')) AS '.$eje_y.', '.$eje_x.' FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'prom': $sql = 'SELECT AVG(IF('.$eje_y.' = 9999, 0, '.$eje_y.')) AS '.$eje_y.', '.$eje_x.' FROM '.$tabla.' GROUP BY '.$eje_x.$order; break; case 'contar': $sql = 'SELECT COUNT('.$eje_y.') AS '.$eje_y.', '.$eje_x.' FROM '.$tabla.' WHERE '.$eje_y.'<> 9999 GROUP BY '.$eje_x.$order; break; } $dataReader = $connect->createCommand($sql)->query(); while(($row = $dataReader->read())!==false){ $informacion[] = $row; } if(!empty($informacion)){ foreach ($informacion as $item) { $edo = $item[$eje_x] - 1; $id = $id_edo[$edo]; array_push($returnArr['chartInfo'], array('id' => $id, 'value' => $item[$eje_y])); $valores[] = $item[$eje_y]; } $tmp_min = min($valores); $tmp_max = max($valores); $returnArr['minimo'] = $tmp_min; $returnArr['maximo'] = $tmp_max; $returnArr['check'] = 1; } echo json_encode($returnArr); Yii::app()->end(); } public function actionObtenerTexto(){ $returnArr = array(); $model = BasesEncuestas::model()->findByPk($_POST['id']); if(!empty($model)){ $returnArr['check'] = 1; $returnArr['texto'] = $model->licencia_uso; }else{ $returnArr['check'] = 0; } echo json_encode($returnArr); Yii::app()->end(); } public function actionObtenerResumen(){ $returnArr = array(); $model = BasesEncuestas::model()->findByPk($_POST['id']); if(!empty($model)){ $returnArr['check'] = 1; $returnArr['resumen'] = $model->resumen; }else{ $returnArr['check'] = 0; } echo json_encode($returnArr); Yii::app()->end(); } // Uncomment the following methods and override them if needed /* public function filters() { // return the filter configuration for this controller, e.g.: return array( 'inlineFilterName', array( 'class'=>'path.to.FilterClass', 'propertyName'=>'propertyValue', ), ); } public function actions() { // return external action classes, e.g.: return array( 'action1'=>'path.to.ActionClass', 'action2'=>array( 'class'=>'path.to.AnotherActionClass', 'propertyName'=>'propertyValue', ), ); } */ }