Abrir reportes en nueva ventana.
[CLab.git] / contenido / admin+reportes.php
blobd2dba2570e603da2f13e7599b571ccfd76fcafa3
1 <?php
2 function byteConvert($bytes)
4 $s = array('B', 'Kb', 'MB', 'GB', 'TB', 'PB');
5 $e = floor(log($bytes)/log(1024));
7 return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));
9 function Directorios($base, $tema) {
10 $dir=dir($base);
11 $s = "<h4>$tema</h4><blockquote cite=\"$tema\"><ol>";
12 while($filename=$dir->read()) {
13 if ( $filename != "." && $filename != ".." && $filename != "index.php" ) { $s = $s."<li>".CREAR_LINK("$base$filename", $filename, "Abrir $filename").' [<b>'.byteConvert(filesize($base.$filename)).'</b>]</li><br />'; }
15 $dir->close();
16 $s = $s."</ol></blockquote>";
17 return $s;
20 $HTML_HEAD = '
21 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
22 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
23 <head>
24 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
25 <title>Reporte de Instructores</title>
26 </head>
27 <body>
29 $HTML_FOOT = '</body></html>';
31 function HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO_ECHO($dia, $hora) {
32 global $session, $link;
33 // 1. Tengo ocupada esa hora?
34 switch ( $_SESSION['tipo'] ) {
35 case 0:
36 case 1:
37 case 3:
38 case 2:
39 $q = "SELECT users.username, nombre, horarios.taller FROM users,horarios WHERE horarios.username = '".$_SESSION['user'] . "' AND users.username = '".$_SESSION['user']."' AND tipo = '".$_SESSION['tipo']."' AND dia='$dia' AND posicion='$hora'";
40 break;
42 //echo $q;
43 $resultados = @mysql_query($q, $link);
44 $num_rows = mysql_numrows($resultados);
46 if($num_rows > 0){
47 //Los encargados estan ocupados y punto.
48 if ( $_SESSION['tipo'] == 2 ) {
49 $msj = $msj.'<FONT COLOR="#800000">'."Ocupado"."</font><br />";
50 } else {
51 //Si, la tengo ocupada, ¿en que taller estoy?
52 //Hacemos for para mostrar si hay mas de un taller (error)!
53 for($i=0; $i<$num_rows; $i++){
54 $msj = $msj.'<FONT COLOR="#800000">'.mysql_result($resultados,$i,"taller")."</font><br />";
57 }else {
58 $msj="";
60 return "<td>".$msj."</td>";
63 function MOSTRAR_HORARIOS_UNICO_ECHO() {
64 /* Muestra la tabla de horario en base a las opciones de filtro establecidas */
65 global $link, $base, $motor, $usuario, $clave;
66 $link = @mysql_connect($motor, $usuario, $clave) or die('Por favor revise sus datos, puesto que se produjo el siguiente error:<br /><pre>' . mysql_error() . '</pre>');
67 @mysql_select_db($base, $link) or die('!->La base de datos seleccionada "'.$base.'" no existe');
68 $s = "";
69 $s = $s . "<h3>";
70 switch ($_SESSION['dpto'])
72 case 0: $s = $s . DE_0; break;
73 case 1: $s = $s . DE_1; break;
75 $s = $s .
76 ' - Instructor: '.$_SESSION['nombre'].'</h3>
77 <hr />
78 <table border="1" cellspacing="0" cellpadding="3">
79 <tr><th>Horario</th><th>Lunes</th><th>Martes</th><th>Miercoles</th><th>Jueves</th><th>Viernes</th><th>Sabado</th></tr>
81 for ($i=450; $i<=1170; $i+=60){
82 $s = $s . "<tr><td><b>". date("h:ia", mktime(0,$i)) . "</b></td>". HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO_ECHO(1, $i).HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO_ECHO(2, $i).HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO_ECHO(3, $i).HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO_ECHO(4, $i).HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO_ECHO(5, $i).HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO_ECHO(6, $i)."</tr>";
84 $s = $s . "</table>";
85 mysql_close($link);
86 return $s;
89 function displayUsers_ECHO(){
90 global $database, $link, $base, $motor, $usuario, $clave;
91 $link = @mysql_connect($motor, $usuario, $clave) or die('Por favor revise sus datos, puesto que se produjo el siguiente error:<br /><pre>' . mysql_error() . '</pre>');
92 mysql_select_db($base, $link) or die('!->La base de datos seleccionada "'.$base.'" no existe');
93 //¿Algún WHERE?
94 $where = "";
95 $q = "SELECT username,nombre,userlevel,email,timestamp FROM ".TBL_USERS." $where ORDER BY userlevel DESC;";
96 $result = $database->query($q, $link);
97 /* Error occurred, return given name by default */
98 $num_rows = mysql_numrows($result);
99 if(!$result || ($num_rows < 0)){
100 echo "<hr />Error en la consulta<hr />";
101 return;
103 if($num_rows == 0){
104 $s = "No hay instructores, imposible generar reporte.";
105 return;
107 /* Display table contents */
108 $s = "";
109 $s = '<table border="1" cellspacing="0" cellpadding="3">';
110 $s = $s . "<tr><td><b>Código</b></td><td><b>Nombre</b></td><td><b>Nivel</b></td><td><b>Email</b></td><td><b>Última actividad</b></td></tr>";
111 for($i=0; $i<$num_rows; $i++){
112 $uname = mysql_result($result,$i,"username");
113 $nombre = mysql_result($result,$i,"nombre");
114 $ulevel = mysql_result($result,$i,"userlevel");
115 $email = mysql_result($result,$i,"email");
116 $time = date("c", mysql_result($result,$i,"timestamp"));
117 //$horarios ='<a href="./?x=hr&amp;forzar='.$uname.'">Ver</a>';
118 $uname = $uname;
119 $s = $s . "<tr><td>$uname</td><td>$nombre</td><td>$ulevel</td><td>$email</td><td>$time</td></tr>";
121 $s = $s . "</table>";
122 return $s;
125 function OBTENER_TIPO_R($taller,$dia, $hora) {
126 global $session, $link;
127 // ¿Hay alguien(es) en esa posición?
128 switch ($_SESSION['tipo']) {
129 case 0:
130 case 1:
131 case 3:
132 $q = "SELECT users.username, nombre FROM users, horarios WHERE users.username = horarios.username and taller like '%$taller%' AND tipo = '". $_SESSION['tipo']. "' AND dia='$dia' AND posicion='$hora' AND departamento = '" .$_SESSION['dpto']. "';";
133 break;
134 case 2:
135 $q = "SELECT users.username, nombre FROM users, horarios WHERE users.username = horarios.username AND tipo = '2' AND dia='$dia' AND posicion='$hora' AND departamento = '" . $_SESSION['dpto']. "';";
136 break;
138 //echo $q;
139 $resultados = @mysql_query($q, $link);
140 $num_rows = mysql_numrows($resultados);
142 if($num_rows > 0){
143 $msj="";
144 for($i=0; $i<$num_rows; $i++){
145 $uname = mysql_result($resultados,$i,"nombre");
146 /* Por petición solo el primer nombre es mostrado */
147 unset ($nombre);
148 ereg("([^ ]*)", $uname, $nombre);
149 $uinfo = mysql_result($resultados,$i,"username");
150 $msj = $msj.$nombre[0]."<br />";
152 return "<td bgcolor=\"#EEEEEE\">".$msj."</td>";
153 }else {
154 //$msj="Sin Asignar";
155 $msj="";
157 return "<td>".$msj."</td>";
160 function MOSTRAR_HORARIOS_ECHO() {
161 global $link, $base, $motor, $usuario, $clave;
162 $link = @mysql_connect($motor, $usuario, $clave) or die('Por favor revise sus datos, puesto que se produjo el siguiente error:<br /><pre>' . mysql_error() . '</pre>');
163 mysql_select_db($base, $link) or die('!->La base de datos seleccionada "'.$base.'" no existe');
164 $salida =
166 <hr />
167 <h3>Taller '.$_SESSION['taller'].' - ';
168 switch ($_SESSION['tipo'])
170 case 0: $salida = $salida .TI_0; break;
171 case 1: $salida = $salida .TI_1; break;
172 case 2: $salida = $salida .TI_2; break;
173 case 3: $salida = $salida .TI_3; break;
176 $salida = $salida .
177 '</h3>
178 <hr />
179 <table border="1" cellspacing="0" cellpadding="3">
180 <tr><th>Horario</th><th>Lunes</th><th>Martes</th><th>Miercoles</th><th>Jueves</th><th>Viernes</th><th>Sabado</th></tr>
182 for ($i=450; $i<=1170; $i+=60){
183 $salida = $salida ."<tr><td>". date("h:ia", mktime(0,$i)) . "</td>". OBTENER_TIPO_R($_SESSION['taller'], 1, $i).OBTENER_TIPO_R($_SESSION['taller'], 2, $i).OBTENER_TIPO_R($_SESSION['taller'], 3, $i).OBTENER_TIPO_R($_SESSION['taller'], 4, $i).OBTENER_TIPO_R($_SESSION['taller'], 5, $i).OBTENER_TIPO_R($_SESSION['taller'], 6, $i)."</tr>";
185 $salida = $salida .'</table><br /><p style="page-break-after: always" />';
186 //mysql_close($link);
187 return $salida;
190 function ADMIN_reportes() {
191 global $HTML_HEAD, $HTML_FOOT, $database;;
192 echo "<h2>Generador de Reportes</h2>";
193 /***************************************************************************************************************************/
194 /* USER */
195 /***************************************************************************************************************************/
196 //Nos pasaron un nombre?, entonces quieren un reporte SOLO de ese usuario:
197 if ( isset($_GET['user']) ) {
198 $_SESSION['user'] = $_GET['user'];
199 $req_user_info = $database->getUserInfo($_SESSION['user']);
200 $_SESSION['tipo'] = $req_user_info['tipo'];
201 $_SESSION['nombre'] = $req_user_info['nombre'];
202 $_SESSION['dpto'] = $req_user_info['departamento'];
203 unset($_SESSION['taller']);
204 /***************************************************************************************************************************/
205 /* USER - HTML */
206 /***************************************************************************************************************************/
207 $s = $HTML_HEAD. MOSTRAR_HORARIOS_UNICO_ECHO() . $HTML_FOOT;
208 $archivo_HTML_INSTRUCTORES_IND = "reportes/+I/+HTML/instructores+".$_SESSION['user']."+".$tiempo_ord.".html";
209 $fh = @fopen($archivo_HTML_INSTRUCTORES_IND, 'w') or die("'/reportes/+HTML/' bloqueado");
210 fwrite($fh, $s);
211 fclose($fh);
212 /***************************************************************************************************************************/
213 /* USER - PDF */
214 /***************************************************************************************************************************/
215 @set_time_limit(300);
216 $dompdf = new DOMPDF();
217 $dompdf->load_html($s);
218 $dompdf->render();
219 $PDF_INSTRUCTORES_IND = $dompdf->output();
220 $archivo_PDF_INSTRUCTORES_IND = "reportes/+I/+PDF/horarios+".$_SESSION['user']."+".$tiempo_ord.".pdf";
221 file_put_contents($archivo_PDF_INSTRUCTORES_IND, $PDF_INSTRUCTORES_IND);
222 unset($dompdf);
223 unset($PDF_INSTRUCTORES);
224 @set_time_limit(30);
226 /* LINKS */
227 echo "<pre>";
228 echo '<a href="'.$archivo_HTML_INSTRUCTORES_IND.'" target="_blank">Descargar reportes de horario para '.$_SESSION['user'].'[HTML]</a><br />';
229 echo '<a href="'.$archivo_PDF_INSTRUCTORES_IND.'" target="_blank">Descargar reportes de horario para '.$_SESSION['user'].'[PDF]</a><br />';
230 echo "</pre>";
231 echo '<blockquote>Por favor realice clic derecho sobre el enlace de descarga y posteriormente utilice la opción "Guardar como" de su navegador</blockquote>';
232 /* FIN USER */
233 return;
235 if ( isset($_POST['generar']) ) {
236 echo '<h3>Reporte(s) generado(s) en base a las opciones de configuración:<br />';
237 $tiempo_ord = date('y\-m\-d\+h.ia', time());
238 if ($_POST['generar_horarios'] == 1 ) {
239 /***************************************************************************************************************************/
240 /* HORARIOS - HTML */
241 /***************************************************************************************************************************/
242 $s = $HTML_HEAD;
243 if (isset($_POST['dpto0'])) {
244 if ($_POST['dpto0'] == 1) {
245 $_SESSION['dpto'] = 0;
246 $s = $s . "<h2>".DE_0. "</h2>";
247 for ($i=0; $i < 4; $i++) {
248 if (isset($_POST["tipo_instructor$i"])) {
249 if ( $_POST["tipo_instructor$i"] == 1 ) {
250 $_SESSION['tipo'] = $i;
251 if ($i != 2 ) {
252 if (isset($_POST['taller0'])) { if ( $_POST['taller0'] ) {$_SESSION['taller'] = 'LSA'; $s = $s . MOSTRAR_HORARIOS_ECHO(); }}
253 if (isset($_POST['taller1'])) { if ( $_POST['taller1'] ) {$_SESSION['taller'] = 'LID'; $s = $s . MOSTRAR_HORARIOS_ECHO(); }}
254 if (isset($_POST['taller2'])) { if ( $_POST['taller2'] ) {$_SESSION['taller'] = 'LAI'; $s = $s . MOSTRAR_HORARIOS_ECHO(); }}
255 if (isset($_POST['taller3'])) { if ( $_POST['taller3'] ) {$_SESSION['taller'] = 'LIV'; $s = $s . MOSTRAR_HORARIOS_ECHO(); }}
256 } else {
257 //Encargado de Taller, solo mostrar 1 horario.
258 $_SESSION['taller'] = 'GENERAL'; $s = $s . MOSTRAR_HORARIOS_ECHO();
265 if (isset($_POST['dpto1'])) {
266 if ($_POST['dpto1'] == 1) {
267 $_SESSION['dpto'] = 1;
268 $s = $s . "<h2>".DE_1. "</h2>";
269 for ($i=0; $i < 4; $i++) {
270 if (isset($_POST["tipo_instructor$i"])) {
271 if ( $_POST["tipo_instructor$i"] == 1 ) {
272 $_SESSION['tipo'] = $i;
273 if ($i != 2 ) {
274 if (isset($_POST['taller4'])) { if ( $_POST['taller4'] ) {$_SESSION['taller'] = 'TPP'; $s = $s . MOSTRAR_HORARIOS_ECHO(); }}
275 if (isset($_POST['taller5'])) { if ( $_POST['taller5'] ) {$_SESSION['taller'] = 'TIS'; $s = $s . MOSTRAR_HORARIOS_ECHO(); }}
276 if (isset($_POST['taller6'])) { if ( $_POST['taller6'] ) {$_SESSION['taller'] = 'TAS'; $s = $s . MOSTRAR_HORARIOS_ECHO(); }}
277 if (isset($_POST['taller7'])) { if ( $_POST['taller7'] ) {$_SESSION['taller'] = 'TEC'; $s = $s . MOSTRAR_HORARIOS_ECHO(); }}
278 } else {
279 //Encargado de Taller, solo mostrar 1 horario.
280 $_SESSION['taller'] = 'GENERAL'; $s = $s . MOSTRAR_HORARIOS_ECHO();
287 $s = $s . $HTML_FOOT;
289 //Haremos HORARIOS_HTML?
290 if ( $_POST['tipo_reporte1'] == 1 ) {
291 $archivo_HTML_HORARIOS = "reportes/+H/+HTML/horarios+".$tiempo_ord.".html";
292 $fh = @fopen($archivo_HTML_HORARIOS, 'w') or die("'/reportes/+HTML/' bloqueado");
293 fwrite($fh, $s);
294 fclose($fh);
297 /***************************************************************************************************************************/
298 /* HORARIOS - PDF */
299 /***************************************************************************************************************************/
301 if ( $_POST['tipo_reporte0'] == 1 ) {
302 @set_time_limit(300);
303 $dompdf = new DOMPDF();
304 $dompdf->load_html($s);
305 $dompdf->render();
306 $PDF_HORARIOS = $dompdf->output();
307 $archivo_PDF_HORARIOS = "reportes/+H/+PDF/horarios+".$tiempo_ord.".pdf";
308 file_put_contents($archivo_PDF_HORARIOS, $PDF_HORARIOS);
309 unset($dompdf);
310 unset($PDF_HORARIOS);
311 @set_time_limit(30);
315 /***************************************************************************************************************************/
316 /* INSTRUCTORES - HTML */
317 /***************************************************************************************************************************/
318 if ( $_POST['generar_instructores'] == 1 ) {
319 $s = $HTML_HEAD. displayUsers_ECHO() . $HTML_FOOT;
321 //Haremos Instructores_HTML?
322 if ( $_POST['tipo_reporte1'] == 1 ) {
323 $archivo_HTML_INSTRUCTORES = "reportes/+I/+HTML/instructores+".$tiempo_ord.".html";
324 $fh = @fopen($archivo_HTML_INSTRUCTORES, 'w') or die("'/reportes/+HTML/' bloqueado");
325 fwrite($fh, $s);
326 fclose($fh);
329 /***************************************************************************************************************************/
330 /* INSTRUCTORES - PDF */
331 /***************************************************************************************************************************/
332 if ( $_POST['tipo_reporte0'] == 1 ) {
333 @set_time_limit(300);
334 $dompdf = new DOMPDF();
335 $dompdf->load_html($s);
336 $dompdf->render();
337 $PDF_INSTRUCTORES = $dompdf->output();
338 $archivo_PDF_INSTRUCTORES = "reportes/+I/+PDF/horarios+".$tiempo_ord.".pdf";
339 file_put_contents($archivo_PDF_INSTRUCTORES, $PDF_INSTRUCTORES);
340 unset($dompdf);
341 unset($PDF_INSTRUCTORES);
342 @set_time_limit(30);
346 /***************************************************************************************************************************/
347 /* GENERACIÓN DE REPORTES TERMINANDA, MOSTRAR LINKS */
348 /***************************************************************************************************************************/
349 echo "<pre>";
350 if ( $_POST['tipo_reporte1'] == 1 && $_POST['generar_horarios'] == 1 ){ echo '<a href="'.$archivo_HTML_HORARIOS.'" target="_blank">Descargar reportes de Horarios[HTML]</a><br />'; }
351 if ( $_POST['tipo_reporte0'] == 1 && $_POST['generar_horarios'] == 1 ) {echo '<a href="'.$archivo_PDF_HORARIOS.'" target="_blank">Descargar reportes de Horarios[PDF]</a><br />'; }
352 if ( $_POST['tipo_reporte1'] == 1 && $_POST['generar_instructores'] == 1 ){ echo '<a href="'.$archivo_HTML_INSTRUCTORES.'" target="_blank">Descargar reportes de Instructores[HTML]</a><br />'; }
353 if ( $_POST['tipo_reporte0'] == 1 && $_POST['generar_instructores'] == 1 ){ echo '<a href="'.$archivo_PDF_INSTRUCTORES.'" target="_blank">Descargar reportes de Instructores[PDF]</a><br />'; }
354 echo "</pre>";
355 echo '<blockquote>Por favor realice clic derecho sobre el enlace de descarga y posteriormente utilice la opción "Guardar como" de su navegador</blockquote>';
357 echo "<hr /><h3>Por favor seleccione el/los tipo(s) de reporte(s) a generar</h3>";
358 echo "<h4>Reporte de horarios</h4>";
360 <form action="./?accion=reportes" method="post">
361 <input type="checkbox" name="generar_horarios" value="1" checked="cheked">Generar reporte de horarios
362 <table>
363 <tr>
364 <td><input type="checkbox" name="dpto0" value="1" checked="cheked"><?echo DE_0;?></td>
365 <td><input type="checkbox" name="dpto1" value="1" checked="cheked"><?echo DE_1;?></td>
366 </tr>
367 </table>
368 <table>
369 <tr>
370 <td><input type="checkbox" name="taller0" value="1" checked="cheked">LSA</td>
371 <td><input type="checkbox" name="taller4" value="1" checked="cheked">TPP</td>
372 </tr>
373 <tr>
374 <td><input type="checkbox" name="taller1" value="1" checked="cheked">LID</td>
375 <td><input type="checkbox" name="taller5" value="1" checked="cheked">TIS</td>
376 </tr>
377 <tr>
378 <td><input type="checkbox" name="taller2" value="1" checked="cheked">LAI</td>
379 <td><input type="checkbox" name="taller6" value="1" checked="cheked">TAS</td>
380 </tr>
381 <tr>
382 <td><input type="checkbox" name="taller3" value="1" checked="cheked">LIV</td>
383 <td><input type="checkbox" name="taller7" value="1" checked="cheked">TEC</td>
384 </tr>
385 </table>
386 <table>
387 <tr>
388 <td><input type="checkbox" name="tipo_instructor0" value="1" checked="cheked"> <?echo TI_0;?></td>
389 <td><input type="checkbox" name="tipo_instructor1" value="1" checked="cheked"> <?echo TI_1;?></td>
390 </tr>
391 <tr>
392 <td><input type="checkbox" name="tipo_instructor2" value="1" checked="cheked"> <?echo TI_2;?></td>
393 <td><input type="checkbox" name="tipo_instructor3" value="1" checked="cheked"> <?echo TI_3;?></td>
394 </tr>
395 </table>
396 <? echo "<h4>Reporte de Instructores (listas)</h4>"; ?>
397 <input type="checkbox" name="generar_instructores" value="1" checked="cheked">Generar reporte de instructores
398 <table>
399 <tr>
400 <td><input type="checkbox" name="instructor_nivel0" value="1" checked="cheked"> Administradores</td>
401 <td><input type="checkbox" name="instructor_nivel1" value="1" checked="cheked"> Instructores</td>
402 </tr>
403 </table>
404 <? echo "<hr /><h3>Por favor seleccione el/los tipo(s) de formato de salida a generar</h3>"; ?>
405 <table>
406 <tr>
407 <td><input type="checkbox" name="tipo_reporte0" value="1" checked="cheked">PDF</td>
408 <td><input type="checkbox" name="tipo_reporte1" value="1" checked="cheked">HTML</td>
409 </tr>
410 </table>
411 <input type="hidden" name="generar" value="1">
412 <input type="submit" name="bgenerar" value="Generar" />
413 </form>
415 echo "<hr /><h3>Se han encontrado los siguientes reportes anteriormente generados</h3>";
416 echo Directorios("reportes/+H/+HTML/", "Horarios - HTML");
417 echo Directorios("reportes/+H/+PDF/", "Horarios - PDF");
418 echo Directorios("reportes/+I/+HTML/", "Instructores - HTML");
419 echo Directorios("reportes/+I/+PDF/", "Instructores - PDF");
421 return;