function DemoVista_SOPA_Facebook($EntradasFaceBook) { global $MULTILANG_IrEscritorio; //Abre un contenedor (Opcional) abrir_ventana('Prueba de SO.PA. - (SocialParser by Practico)', 'panel-primary'); //Encabezados de la tabla echo '<h1>Entradas encontradas: <strong>' . count($EntradasFaceBook) . '</strong></h1> <table class="table table-hover table-striped table-bordered"> <thead> <tr> <th>Titulo</td> <th>Descripcion</td> <th>Fecha</td> </tr> </thead> <tbody>'; foreach ($EntradasFaceBook as $fila) { echo ' <tr> <td>' . $fila['Titulo'] . '</td> <td>' . $fila['Descripcion'] . '</td> <td>' . $fila['Fecha'] . '</td> </tr>'; } echo ' </tbody> </table>'; //Crea una barra de estado (opcional) abrir_barra_estado(); echo '<button type="button" class="btn btn-danger" OnClick="document.core_ver_menu.submit();">' . $MULTILANG_IrEscritorio . '</button>'; cerrar_barra_estado(); //Cierra el contenedor (Obligatorio si se ha abierto alguno) cerrar_ventana(); }
<button type="submit" class="btn btn-success btn-xs">' . $MULTILANG_UsrReset . ' <i class="fa fa-refresh"></i></button> </span> </div> </form> </td> </tr>'; $i++; } echo '</tbody> </table>'; } // Fin sino filtro echo ' <form action="' . $ArchivoCORE . '" method="POST" name="ver_auditoria_general" style="display:inline; height: 0px; border-width: 0px; width: 0px; padding: 0; margin: 0;"> <input type="hidden" name="PCO_Accion" value="ver_seguimiento_general"> </form> <form action="' . $ArchivoCORE . '" method="POST" name="ver_auditoria_monitoreo" style="display:inline; height: 0px; border-width: 0px; width: 0px; padding: 0; margin: 0;"> <input type="hidden" name="PCO_Accion" value="ver_seguimiento_monitoreo"> </form> '; abrir_barra_estado(); echo '<div align=center> <a class="btn btn-default " href="javascript:document.core_ver_menu.submit();"><i class="fa fa-home"></i> ' . $MULTILANG_IrEscritorio . '</a> <a class="btn btn-success " href="javascript:document.form_crear_usuario.submit();"><i class="fa fa-file-o"></i> ' . $MULTILANG_UsrAgregar . '</a> <a class="btn btn-warning " href="javascript:document.ver_auditoria_general.submit();"><i class="fa fa-file-text"></i> ' . $MULTILANG_UsrVerAudit . '</a> <a class="btn btn-info " href="javascript:document.ver_auditoria_monitoreo.submit();"><i class="fa fa-file-text"></i> ' . $MULTILANG_UsrAudMonit . '</a> </div>'; cerrar_barra_estado(); cerrar_ventana(); } //$VerNavegacionIzquierdaResponsive=1; //Habilita la barra de navegacion izquierda por defecto
function cargar_informe($informe, $en_ventana = 1, $formato = "htm", $estilo = "Informes", $embebido = 0) { global $ConexionPDO, $ArchivoCORE, $TablasCore, $Nombre_Aplicacion, $PCO_ValorBusquedaBD, $PCO_CampoBusquedaBD; // Carga variables de sesion por si son comparadas en alguna condicion. De todas formas pueden ser cargadas por el usuario en el diseno del informe global $PCOSESS_LoginUsuario, $Nombre_usuario, $Descripcion_usuario, $Nivel_usuario, $Correo_usuario, $LlaveDePasoUsuario, $PCO_FechaOperacion; // Carga variables de definicion de tablas global $ListaCamposSinID_informe, $ListaCamposSinID_informe_campos, $ListaCamposSinID_informe_tablas, $ListaCamposSinID_informe_condiciones, $ListaCamposSinID_informe_boton; global $MULTILANG_TotalRegistros, $MULTILANG_ContacteAdmin, $MULTILANG_ObjetoNoExiste, $MULTILANG_ErrorTiempoEjecucion, $MULTILANG_Informes, $MULTILANG_IrEscritorio, $MULTILANG_ErrorDatos, $MULTILANG_InfErrTamano, $MULTILANG_MonCommSQL; global $IdiomaPredeterminado; global $PCO_InformesDataTable; global $ModoDepuracion; // Busca datos del informe $consulta_informe = ejecutar_sql("SELECT id," . $ListaCamposSinID_informe . " FROM " . $TablasCore . "informe WHERE id=? ", "{$informe}"); $registro_informe = $consulta_informe->fetch(); $Identificador_informe = $registro_informe["id"]; //Si no encuentra informe presenta error if ($registro_informe["id"] == "") { mensaje($MULTILANG_ErrorTiempoEjecucion, $MULTILANG_ObjetoNoExiste . " " . $MULTILANG_ContacteAdmin . "<br>(" . $MULTILANG_Informes . " {$informe})", '', 'fa fa-times fa-5x icon-red texto-blink', 'alert alert-danger alert-dismissible'); } //Identifica si el informe requiere un formulario de filtrado previo if ($registro_informe["formulario_filtrado"] != "") { //Determina si solicita el informe desde el formulario de filtrado apropiado, sino redirecciona a este global $PCO_FormularioActivo; if ($registro_informe["formulario_filtrado"] != $PCO_FormularioActivo) { echo '<form name="precarga_form_filtro" action="' . $ArchivoCORE . '" method="POST"> <input type="Hidden" name="PCO_Accion" value="cargar_objeto"> <input type="Hidden" name="PCO_InformeFiltro" value="' . $registro_informe["id"] . '"> <input type="Hidden" name="objeto" value="frm:' . $registro_informe["formulario_filtrado"] . ':1"> <input type="Hidden" name="Presentar_FullScreen" value="' . @$Presentar_FullScreen . '"> <input type="Hidden" name="Precarga_EstilosBS" value="' . @$Precarga_EstilosBS . '"> <script type="" language="JavaScript"> document.precarga_form_filtro.submit(); </script>'; die; } } //Si hay variables de filtro definidas busca su valor en el contexto global if ($registro_informe["variables_filtro"] != "") { $arreglo_variables_filtro = @explode(",", $registro_informe["variables_filtro"]); //Busca y convierte cada variable recibida en global foreach ($arreglo_variables_filtro as $nombre_variable_filtro) { //if (isset($$nombre_variable_filtro)) // {Deprecated} global ${$nombre_variable_filtro}; } } // Inicia CONSTRUCCION DE CONSULTA DINAMICA $numero_columnas = 0; //Busca los CAMPOS definidos para el informe $consulta = "SELECT "; $consulta_campos = ejecutar_sql("SELECT id," . $ListaCamposSinID_informe_campos . " FROM " . $TablasCore . "informe_campos WHERE informe=? ORDER BY peso", "{$informe}"); $PCO_ColumnasOcultas[] = "ArregloDeCamposOcultos"; while ($registro_campos = $consulta_campos->fetch()) { //Si tiene alias definido lo agrega $posfijo_campo = ""; if ($registro_campos["valor_alias"] != "") { $posfijo_campo = " as " . $registro_campos["valor_alias"]; } //Agrega el campo a la consulta $consulta .= $registro_campos["valor_campo"] . $posfijo_campo . ","; //Crea un arreglo con los campos marcados como ocultos para filtrarlos luego if ($registro_campos["visible"] == 0) { $PCO_ColumnasOcultas[] = $registro_campos["valor_campo"] . $posfijo_campo; //Lleva el campo oculto despues del punto $PCO_PartesCampo = explode(".", $registro_campos["valor_campo"] . $posfijo_campo); $PCO_ColumnasOcultas[] = $PCO_PartesCampo[1]; //Lleva el campo oculto si es un alias $PCO_PartesCampo = explode(" as ", $registro_campos["valor_campo"] . $posfijo_campo); $PCO_ColumnasOcultas[] = $PCO_PartesCampo[1]; } } // Elimina la ultima coma en el listado de campos $consulta = substr($consulta, 0, strlen($consulta) - 1); //Busca las TABLAS definidas para el informe $consulta .= " FROM "; $consulta_tablas = ejecutar_sql("SELECT id," . $ListaCamposSinID_informe_tablas . " FROM " . $TablasCore . "informe_tablas WHERE informe=? ", "{$informe}"); while ($registro_tablas = $consulta_tablas->fetch()) { //Si tiene alias definido lo agrega $posfijo_tabla = ""; if ($registro_tablas["valor_alias"] != "") { $posfijo_tabla = " as " . $registro_tablas["valor_alias"]; } //Agrega tabla a la consulta $consulta .= $registro_tablas["valor_tabla"] . $posfijo_tabla . ","; } // Elimina la ultima coma en el listado de tablas $consulta = substr($consulta, 0, strlen($consulta) - 1); // Busca las CONDICIONES para el informe $consulta .= " WHERE "; $consulta_condiciones = ejecutar_sql("SELECT id," . $ListaCamposSinID_informe_condiciones . " FROM " . $TablasCore . "informe_condiciones WHERE informe=? ORDER BY peso", "{$informe}"); $hay_condiciones = 0; while ($registro_condiciones = $consulta_condiciones->fetch()) { //Agrega condicion a la consulta $valor_izquierdo = $registro_condiciones["valor_izq"]; $valor_derecho = $registro_condiciones["valor_der"]; // CONVIERTE VARIABLES DE SESION PHP A VALORES PARA EL QUERY Cuando el primer simbolos es un PESOS ($), es decir, solo se ingreso una variable //LADO IZQUIERDO DE LA CONDICION //Si el valor Izquierdo a comparar inicia por signo pesos y es una variable PHP la usa como tal if (@$valor_izquierdo[0] == "\$") { //Quita el signo pesos inicial para buscar la variable $variable_a_buscar = substr($valor_izquierdo, 1, strlen($valor_izquierdo)); // Si la variable esta definida toma su valor encerrado entre comillas para el query y evitar conflictos de variables con espacios y demas. if (@isset($variable_a_buscar)) { $valor_izquierdo = "'" . ${$variable_a_buscar} . "'"; } } //Evalua casos donde se tienen variables PHP escapadas por llaves. Ej "%{$Variable}%" si fuera para un LIKE, por ejemplo. if (strpos($valor_izquierdo, "{") !== FALSE && strrpos($valor_izquierdo, "}") !== FALSE) { //Determina las posiciones de las llaves en la cadena $PosLlaveIzquierda = strpos($valor_izquierdo, "{"); $PosLlaveDerecha = strrpos($valor_izquierdo, "}"); //Toma solo el pedazo entre llaves para intentar ubicar el valor de la variable por su nombre $NombreVariable = substr($valor_izquierdo, $PosLlaveIzquierda + 2, $PosLlaveDerecha - $PosLlaveIzquierda - 2); //Si la variable no esta definida la busca en el entorno global global ${$NombreVariable}; if (@isset($NombreVariable)) { $ValorVariable = ${$NombreVariable}; //Reemplaza el valor encontrado en la cadena de valor original $valor_izquierdo = str_replace('{$' . $NombreVariable . '}', $ValorVariable, $valor_izquierdo); } } //LADO DERECHO DE LA CONDICION //Si el valor Derecho a comparar inicia por signo pesos y es una variable PHP la usa como tal if (@$valor_derecho[0] == "\$") { //Quita el signo pesos inicial para buscar la variable $variable_a_buscar = substr($valor_derecho, 1, strlen($valor_derecho)); // Si la variable esta definida toma su valor encerrado entre comillas para el query y evitar conflictos de variables con espacios y demas. if (@isset($variable_a_buscar)) { $valor_derecho = "'" . ${$variable_a_buscar} . "'"; } } //Evalua casos donde se tienen variables PHP escapadas por llaves. Ej "%{$Variable}%" si fuera para un LIKE, por ejemplo. if (strpos($valor_derecho, "{") !== FALSE && strrpos($valor_derecho, "}") !== FALSE) { //Determina las posiciones de las llaves en la cadena $PosLlaveIzquierda = strpos($valor_derecho, "{"); $PosLlaveDerecha = strrpos($valor_derecho, "}"); //Toma solo el pedazo entre llaves para intentar ubicar el valor de la variable por su nombre $NombreVariable = substr($valor_derecho, $PosLlaveIzquierda + 2, $PosLlaveDerecha - $PosLlaveIzquierda - 2); //Si la variable no esta definida la busca en el entorno global global ${$NombreVariable}; if (@isset($NombreVariable)) { $ValorVariable = ${$NombreVariable}; //Reemplaza el valor encontrado en la cadena de valor original $valor_derecho = str_replace('{$' . $NombreVariable . '}', $ValorVariable, $valor_derecho); } } $consulta .= " " . $valor_izquierdo . " " . $registro_condiciones["operador"] . " " . $valor_derecho . " "; $hay_condiciones = 1; } if (!$hay_condiciones) { $consulta .= " 1 "; } if (@$registro_informe["agrupamiento"] != "") { $campoagrupa = $registro_informe["agrupamiento"]; $consulta .= " GROUP BY {$campoagrupa}"; } if (@$registro_informe["ordenamiento"] != "") { $campoorden = $registro_informe["ordenamiento"]; $consulta .= " ORDER BY {$campoorden}"; } // Si el informe tiene formato_final = T (tabla de datos) if ($registro_informe["formato_final"] == "T") { $SalidaFinalInforme = ''; $SalidaFinalInformePDF = ''; if ($en_ventana) { //Cuando es embebido (=1) no imprime el boton de retorno pues se asume dentro de un formulario if (!$embebido) { echo '<div align=center><button type="Button" onclick="document.core_ver_menu.submit()" class="btn btn-warning"><i class="fa fa-home fa-fw"></i> ' . $MULTILANG_IrEscritorio . '</button></div><br>'; } //Carga la ventana con el informe abrir_ventana($Nombre_Aplicacion . ' - ' . $registro_informe["titulo"], 'panel panel-info', $registro_informe["ancho"]); } // Si se ha definido un tamano fijo entonces crea el marco if ($registro_informe["ancho"] != "" && $registro_informe["alto"] != "") { echo '<DIV style="DISPLAY: block; OVERFLOW: auto; POSITION: relative; WIDTH: ' . $registro_informe["ancho"] . '; HEIGHT: ' . $registro_informe["alto"] . '">'; } //Genera enlace al PDF cuando se detecta el modulo y ademas el informe lo tiene activado if (@file_exists("mod/pdf") && $registro_informe["genera_pdf"] == 'S') { echo '<div align=right><a href="tmp/Inf_' . $Identificador_informe . '-' . $PCOSESS_LoginUsuario . '.pdf" target="_BLANK"><i class="fa fa-file-pdf-o"></i> PDF </a></div>'; } // Crea encabezado por tipo de formato: 1=html 2=Excel if ($formato == "htm") { echo ' <html> <body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0" style="font-size: 12px; font-family: Arial, Verdana, Tahoma;">'; } if ($formato == "xls") { $fecha = date("d-m-Y"); $tituloinforme = trim($registro_informe["titulo"]); $tituloinforme = "Informe"; $nombrearchivo = $tituloinforme . "_" . $fecha; header('Content-type: application/vnd.ms-excel'); header("Content-Disposition: attachment; filename={$nombrearchivo}.xls"); header("Pragma: no-cache"); header("Expires: 0"); } if ($formato == "htm") { //Si el informe va a soportar datatable entonces lo agrega a las tablas que deben ser convertidas en el pageonload if ($registro_informe["soporte_datatable"] == "S") { @($PCO_InformesDataTable .= "TablaInforme_" . $registro_informe["id"] . "|"); } $SalidaFinalInforme .= '<table class="table table-condensed table-hover table-striped table-unbordered ' . $estilo . '" id="TablaInforme_' . $registro_informe["id"] . '"><thead><tr>'; $SalidaFinalInformePDF .= '<table class="' . $estilo . '"><thead><tr>'; } if ($formato == "xls") { $SalidaFinalInforme .= '<table class="font-size: 11px; font-family: Verdana, Tahoma, Arial;"><thead><tr>'; $SalidaFinalInformePDF .= '<table class="font-size: 11px; font-family: Verdana, Tahoma, Arial;"><thead><tr>'; } // Busca si el informe tiene acciones (botones), los cuenta y prepara dentro de un arreglo para repetir en cada registro $consulta_botones = ejecutar_sql("SELECT id," . $ListaCamposSinID_informe_boton . " FROM " . $TablasCore . "informe_boton WHERE informe=? AND visible=1 ORDER BY peso", "{$informe}"); $total_botones = 0; while ($registro_botones = $consulta_botones->fetch()) { //Construye una cadena generica con todos los botones para ser reemplazada luego con valores if ($registro_botones["tipo_accion"] == "interna_eliminar") { $valores = explode(".", $registro_botones["accion_usuario"]); $tabla_vinculada = @$valores[0]; $campo_vinculado = @$valores[1]; //Si solo se indico el campo, sin la tabla, intenta usar solo el campo if ($campo_vinculado == "" && $tabla_vinculada != "") { $campo_vinculado = $valores[0]; $tabla_vinculada = ""; } $comando_javascript = "\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.PCO_Accion.value='eliminar_registro_informe';\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.tabla.value='" . @$tabla_vinculada . "';\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.campo.value='" . @$campo_vinculado . "';\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.valor.value='DELFRMVALVALOR';\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.submit()"; } if ($registro_botones["tipo_accion"] == "interna_cargar") { $comando_javascript = "\r\n document.FRMBASEINFORME.PCO_Accion.value='cargar_objeto';\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.objeto.value='frm:" . $registro_botones["accion_usuario"] . ":DETFRMVALBASE';\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.submit()"; } if ($registro_botones["tipo_accion"] == "externa_formulario") { $comando_javascript = "\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.PCO_Tabla.value='" . @$tabla_vinculada . "';\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.PCO_Campo.value='" . @$campo_vinculado . "';\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.PCO_Valor.value='DELFRMVALVALOR';\r\n document.FRMBASEINFORME.PCO_Accion.value='" . $registro_botones["accion_usuario"] . "';\r\n\t\t\t\t\t\t\t\t\t\tdocument.FRMBASEINFORME.submit()"; } if ($registro_botones["tipo_accion"] == "externa_javascript") { $comando_javascript = $registro_botones["accion_usuario"]; } //Verifica si el registro de botones presenta algun texto de confirmacion y lo antepone al script $cadena_confirmacion_accion_pre = ""; $cadena_confirmacion_accion_pos = ""; if ($registro_botones["confirmacion_texto"] != "") { $cadena_confirmacion_accion_pre = " if (confirm('" . $registro_botones["confirmacion_texto"] . "')) {"; $cadena_confirmacion_accion_pos = " } else {} "; } //Genera la cadena del enlace $cadena_javascript = 'onclick="' . $cadena_confirmacion_accion_pre . ' ' . @$comando_javascript . ' ' . $cadena_confirmacion_accion_pos . ' "'; @($cadena_generica_botones .= '<input type="Button" class="' . $registro_botones["estilo"] . '" value="' . $registro_botones["titulo"] . '" ' . $cadena_javascript . ' > '); $total_botones++; } // Imprime encabezados de columna $resultado_columnas = @ejecutar_sql($consulta); $ConteoColumnas = $resultado_columnas->rowCount(); //Si se tienen registros para mirar las columnas las agrega if ($ConteoColumnas > 0) { $numero_columnas = 0; foreach ($resultado_columnas->fetch(PDO::FETCH_ASSOC) as $key => $val) { //Imprime el encabezado siempre y cuando no se trate de un campo que se desea ocultar if (!in_array($key, $PCO_ColumnasOcultas)) { $SalidaFinalInforme .= '<th>' . $key . '</th>'; $SalidaFinalInformePDF .= '<th>' . $key . '</th>'; } else { //Agrega la columna al indice de columnas ocultas para no mostrarla luego $PCO_NumerosColumnasOcultas[] = $numero_columnas; } $numero_columnas++; } } //Si el informe tiene botones entonces agrega columna adicional if ($total_botones > 0) { $SalidaFinalInforme .= '<th></th>'; $SalidaFinalInformePDF .= '<th></th>'; } $SalidaFinalInforme .= '</tr></thead><tbody>'; $SalidaFinalInformePDF .= '</tr></thead><tbody>'; // Imprime registros del resultado $numero_filas = 0; $consulta_ejecucion = ejecutar_sql($consulta); while ($registro_informe = $consulta_ejecucion->fetch()) { $SalidaFinalInforme .= '<tr>'; $SalidaFinalInformePDF .= '<tr>'; for ($i = 0; $i < $numero_columnas; $i++) { //Muestra la columna solo si no se trata de una de las ocultas if (!in_array($i, $PCO_NumerosColumnasOcultas)) { $SalidaFinalInforme .= '<td>' . $registro_informe[$i] . '</td>'; $SalidaFinalInformePDF .= '<td>' . $registro_informe[$i] . '</td>'; } } //Si el informe tiene botones los agrega if ($total_botones > 0) { //Transforma la cadena generica con los datos especificos del registro, toma por ahora el primer campo $cadena_botones_registro = str_replace("DELFRMVALVALOR", $registro_informe[0], $cadena_generica_botones); $cadena_botones_registro = str_replace("DETFRMVALBASE", $registro_informe[0], $cadena_botones_registro); //Muestra los botones preparados para el registro $SalidaFinalInforme .= '<th>' . $cadena_botones_registro . '</th>'; $SalidaFinalInformePDF .= '<th>' . $cadena_botones_registro . '</th>'; } $SalidaFinalInforme .= '</tr>'; $SalidaFinalInformePDF .= '</tr>'; $numero_filas++; } $SalidaFinalInforme .= '</tbody>'; $SalidaFinalInformePDF .= '</tbody>'; if ($formato == "htm") { //Cuando es embebido (=1) no agrega los totales de registro if (!$embebido) { $SalidaFinalInforme .= '<tfoot> <tr><td colspan=' . $numero_columnas . '> <b>' . $MULTILANG_TotalRegistros . ': </b>' . $numero_filas . ' </td></tr>'; $SalidaFinalInformePDF .= '<tfoot> <tr><td colspan=' . $numero_columnas . '> <b>' . $MULTILANG_TotalRegistros . ': </b>' . $numero_filas . ' </td></tr>'; } echo '</tfoot>'; } $SalidaFinalInforme .= '</table>'; $SalidaFinalInformePDF .= '</table>'; if ($formato == "htm") { echo '</body></html>'; } //Imprime el HTML generado para el informe echo $SalidaFinalInforme; //Genera el PDF cuando se encuentra el modulo y el informe lo tiene activado if (@file_exists("mod/pdf") && $registro_informe["genera_pdf"] == 'S') { require_once 'mod/pdf/html2pdf/html2pdf.class.php'; try { //Define parametros para generar el PDF $IdiomaPDF = $IdiomaPredeterminado; // Acepta solo ca|cs|da|de|en|es|fr|it|nl|pt|tr $OrientacionPDF = 'P'; // P|ortrait L|andscape $TamanoPaginaPDF = 'A4'; // A4|A5|LETTER|LEGAL|100×200...| $MargenPaginaMM = '10'; // Como Entero o arreglo (Izq,Der,Arr,Aba) ej: 10 o array(1, 25, 25, 5) $ModoVistaPDF = 'fullpage'; // fullpage|fullwidth|real|default $FuentePredeterminadaPDF = 'Arial'; // Arial|Courier|Courier-Bold|Courier-BoldOblique|Courier-Oblique|Helvetica|Helvetica-Bold|Helvetica-BoldOblique|Helvetica-Oblique|Symbol|Times-Roman|Times-Bold|Times-BoldItalic|Times-Italic|ZapfDingbats $ContrasenaLecturaPDF = ''; // Si se asigna un valor pedira contrasena para poderlo leer $JavaScriptPDF = ''; // Ej. print(true); // Inicia la generacion del PDF $html2pdf = new HTML2PDF($OrientacionPDF, $TamanoPaginaPDF, $IdiomaPDF, true, 'UTF-8', $MargenPaginaMM); if ($ContrasenaLecturaPDF != "") { $html2pdf->pdf->SetProtection(array('print'), $ContrasenaLecturaPDF); } if ($JavaScriptPDF != "") { $html2pdf->pdf->IncludeJS($JavaScriptPDF); } $html2pdf->pdf->SetDisplayMode($ModoVistaPDF); $html2pdf->setDefaultFont($FuentePredeterminadaPDF); $html2pdf->WriteHTML($SalidaFinalInformePDF); $html2pdf->Output('tmp/Inf_' . $Identificador_informe . '-' . $PCOSESS_LoginUsuario . '.pdf', 'F'); // Antes: $html2pdf->Output('tmp/exemple.pdf'); enviaba salida al navegador directamente } catch (HTML2PDF_exception $e) { echo $e; exit; } } // Si se ha definido un tamano fijo entonces cierra el marco if ($registro_informe["ancho"] != "" && $registro_informe["alto"] != "") { echo '</DIV>'; } } // Fin si informe es T (tabla) //Verifica si es un informe grafico sin dimensiones if ($registro_informe["formato_final"] == "G" && ($registro_informe["ancho"] == "" || $registro_informe["alto"] == "")) { echo '<form name="cancelarXTamano" action="' . $ArchivoCORE . '" method="POST"> <input type="Hidden" name="PCO_Accion" value="Ver_menu"> <input type="Hidden" name="PCO_ErrorTitulo" value="' . $MULTILANG_ErrorDatos . '"> <input type="Hidden" name="PCO_ErrorDescripcion" value="' . $MULTILANG_InfErrTamano . '"> </form> <script type="" language="JavaScript"> document.cancelarXTamano.submit(); </script>'; } // Si el informe tiene formato_final = G (grafico) if ($registro_informe["formato_final"] == "G" && $registro_informe["ancho"] != "" && $registro_informe["alto"] != "") { //Consulta el formato de grafico y datos de series para ponerlo en los campos //Dado por: Tipo|Nombre1!NombreN|Etiqueta1!EtiquetaN|Valor1!ValorN| $formato_base = explode("|", $registro_informe["formato_grafico"]); $tipo_grafico = $formato_base[0]; $lista_nombre_series = explode("!", $formato_base[1]); $lista_etiqueta_series = explode("!", $formato_base[2]); $lista_valor_series = explode("!", $formato_base[3]); //Elimina los nombres de tabla en caso de tener punto y usa los alias si los tiene for ($i = 0; $i < 5; $i++) { //Elimina nombres de tabla encontrando el punto y seleccionando siguiente palabra if (strpos($lista_etiqueta_series[$i], ".")) { $tmp = explode(".", $lista_etiqueta_series[$i]); $lista_etiqueta_series[$i] = $tmp[1]; } if (strpos($lista_valor_series[$i], ".")) { $tmp = explode(".", $lista_valor_series[$i]); $lista_valor_series[$i] = $tmp[1]; } // Prefiere los alias sobre los nombres de campo cuando encuentra un AS if (strpos($lista_etiqueta_series[$i], " AS ")) { $tmp = explode(" AS ", $lista_etiqueta_series[$i]); $lista_etiqueta_series[$i] = $tmp[1]; } if (strpos($lista_valor_series[$i], " AS ")) { $tmp = explode(" AS ", $lista_valor_series[$i]); $lista_valor_series[$i] = $tmp[1]; } } $nombre_serie_1 = $lista_nombre_series[0]; $nombre_serie_2 = $lista_nombre_series[1]; $nombre_serie_3 = $lista_nombre_series[2]; $nombre_serie_4 = $lista_nombre_series[3]; $nombre_serie_5 = $lista_nombre_series[4]; $campo_etiqueta_serie_1 = $lista_etiqueta_series[0]; $campo_etiqueta_serie_2 = $lista_etiqueta_series[1]; $campo_etiqueta_serie_3 = $lista_etiqueta_series[2]; $campo_etiqueta_serie_4 = $lista_etiqueta_series[3]; $campo_etiqueta_serie_5 = $lista_etiqueta_series[4]; $campo_valor_serie_1 = $lista_valor_series[0]; $campo_valor_serie_2 = $lista_valor_series[1]; $campo_valor_serie_3 = $lista_valor_series[2]; $campo_valor_serie_4 = $lista_valor_series[3]; $campo_valor_serie_5 = $lista_valor_series[4]; // Libreria para graficos include "inc/libchart/classes/libchart.php"; //Crea las series para el grafico, dependiendo si es torta (una serie) o cualquier otro (multiples series) if ($tipo_grafico == "torta") { $dataSet = new XYDataSet(); // GENERA DATOS DEL GRAFICO $consulta_ejecucion = ejecutar_sql($consulta); while ($registro = $consulta_ejecucion->fetch()) { if ($nombre_serie_1 != "") { $dataSet->addPoint(new Point($registro[$campo_etiqueta_serie_1], $registro[$campo_valor_serie_1])); } } } else { $dataSet = new XYSeriesDataSet(); if ($nombre_serie_1 != "") { $serie1 = new XYDataSet(); $dataSet->addSerie($nombre_serie_1, $serie1); } if ($nombre_serie_2 != "") { $serie2 = new XYDataSet(); $dataSet->addSerie($nombre_serie_2, $serie2); } if ($nombre_serie_3 != "") { $serie3 = new XYDataSet(); $dataSet->addSerie($nombre_serie_3, $serie3); } if ($nombre_serie_4 != "") { $serie4 = new XYDataSet(); $dataSet->addSerie($nombre_serie_4, $serie4); } if ($nombre_serie_5 != "") { $serie5 = new XYDataSet(); $dataSet->addSerie($nombre_serie_5, $serie5); } // GENERA DATOS DEL GRAFICO $consulta_ejecucion = ejecutar_sql($consulta); while ($registro = $consulta_ejecucion->fetch()) { if ($nombre_serie_1 != "") { $serie1->addPoint(new Point($registro[$campo_etiqueta_serie_1], $registro[$campo_valor_serie_1])); } if ($nombre_serie_2 != "") { $serie2->addPoint(new Point($registro[$campo_etiqueta_serie_2], $registro[$campo_valor_serie_2])); } if ($nombre_serie_3 != "") { $serie3->addPoint(new Point($registro[$campo_etiqueta_serie_3], $registro[$campo_valor_serie_3])); } if ($nombre_serie_4 != "") { $serie4->addPoint(new Point($registro[$campo_etiqueta_serie_4], $registro[$campo_valor_serie_4])); } if ($nombre_serie_5 != "") { $serie5->addPoint(new Point($registro[$campo_etiqueta_serie_5], $registro[$campo_valor_serie_5])); } } } // CREA OBJETO SEGUN TIPO DE GRAFICO if ($tipo_grafico == "linea" || $tipo_grafico == "linea_multiples") { $chart = new LineChart($registro_informe["ancho"], $registro_informe["alto"]); } if ($tipo_grafico == "barrah" || $tipo_grafico == "barrah_multiples") { $chart = new HorizontalBarChart($registro_informe["ancho"], $registro_informe["alto"]); } if ($tipo_grafico == "barrav" || $tipo_grafico == "barrav_multiples") { $chart = new VerticalBarChart($registro_informe["ancho"], $registro_informe["alto"]); } if ($tipo_grafico == "torta") { $chart = new PieChart($registro_informe["ancho"], $registro_informe["alto"]); } // PRESENTA EL GRAFICO EN PANTALLA $chart->setDataSet($dataSet); //$chart->getPlot()->setGraphCaptionRatio(0.75); $chart->setTitle($registro_informe["titulo"]); $chart->render("tmp/Inf_" . $registro_informe["id"] . "-" . $PCOSESS_LoginUsuario . ".png"); echo '<img alt="Grafico" src="tmp/Inf_' . $Identificador_informe . '-' . $PCOSESS_LoginUsuario . '.png" style="border: 1px solid gray;">'; } // Fin si informe es G (grafico) if ($en_ventana) { cerrar_ventana(); } //Si el usuario es admin le muestra el query generador. if (@$PCOSESS_LoginUsuario == "admin" && $ModoDepuracion) { mensaje($MULTILANG_MonCommSQL, $consulta, '', 'fa fa-fw fa-2x fa-database', 'alert alert-info alert-dismissible '); } }