commit masivo.
[ecomupi.git] / contenido / cargar+pantallas.php
bloba369d5d6e6b3184dd2d9f3f4ffe773837fcafae5
1 <?
2 function CONTENIDO_cargar_pantallas(){
3 global $database;
4 // Si ya envió el archivo entonces nos detenemos a procesarlo.
5 // El procesado del archivo seguirá el siguiente orden:
6 // 0. Se comprobará que el archivo subido sea .zip.
7 // 1. Se descomprimirá el archivo subido.
8 // 2. Se tomará la 1era carpeta en el zip (solo debería de existir una).
9 // 3. Se tomara la fecha de esa carpeta como fecha de catorcena.
10 // 4. Si todo lo anterior es exitoso, entonces se actualizarán los campos de imagen de todas las pantallas correspondientes.
12 // -----------------------------------------------------------------------------------------------------------------------
13 // Verificamos si ya puso a cargar el archivo
14 $NombreCampo = 'ArchivoZip';
15 $Catorcena = '';
16 if ( isset ($_FILES[$NombreCampo]) ) {
17 // Si lo puso entonces verificamos que no haya habido ningún error
18 if ( !$_FILES[$NombreCampo]['error'] ) {
19 // Será ZIP ?
20 if ( strtolower(@end(explode(".",$_FILES[$NombreCampo]['name']))) == "zip" ) {
21 // Si, es ZIP, entonces procedamos a descomprimirlo...
22 echo MENSAJE ("Archivo es ZIP, procediendo a descomprimir...", _M_INFO);
23 ob_flush(); flush();
24 $zip = zip_open($_FILES[$NombreCampo]['tmp_name']);
25 if ($zip) {
26 // Creemos el directorio padre del zip.
27 $DirectorioZip = 'zip/'.$_FILES[$NombreCampo]['name'].'/';
28 //mkdir($DirectorioZip,0777,true);
29 while ($zip_entry = zip_read($zip)) {
30 if ( substr(zip_entry_name($zip_entry),-1) == "/" ) {
31 // Es directorio, crear si no existe.
32 // if ( !is_dir($DirectorioZip.zip_entry_name($zip_entry)) ) {
33 //mkdir($DirectorioZip.zip_entry_name($zip_entry),0777,true);
34 $Catorcena = strtotime(basename($DirectorioZip.zip_entry_name($zip_entry)));
35 if ( !is_numeric($Catorcena) ) {
36 echo MENSAJE ("Una carpeta del ZIP '" . zip_entry_name($zip_entry) . "' no tiene formato válido de catorcena", _M_ERROR);
37 } // Si era valida la fecha de la catorcena
38 echo MENSAJE ("Se procesará la catorcena: " .basename($DirectorioZip.zip_entry_name($zip_entry)) . " [". $Catorcena ."]", _M_INFO);
39 ob_flush(); flush();
40 // } // Si no existia el directorio
41 } else {
43 // Si ya tenemos la catorcena a usar entonces procesar
44 // si no es que estamos ante un archivo fuera de carpeta.
45 if ( $Catorcena ) {
46 //$fp = fopen($DirectorioZip.zip_entry_name($zip_entry), "w"); // No queremos escribirlo al disco :)
47 if (zip_entry_open($zip, $zip_entry, "r")) {
48 // Será JPG ?
49 if ( strtolower(@end(explode(".",zip_entry_name($zip_entry)))) == "jpg" ) {
50 //**********************************************************
51 // Metemos la imagen a la base de datos en 3 pasos
52 // 1ro. Encontramos la cara a la que corresponde la imagen y si existe la descomprimimos y...
53 // 2do. agregamos la imagen en la tabla de imagenes.
54 // 3ro. Actualizamos el campo de foto_real de la cara con la nueva imagen y punto :)
55 //__________________________________________________________
56 //1.
57 $id_pantalla = pathinfo(zip_entry_name($zip_entry), PATHINFO_FILENAME);
58 $q = "SELECT id_pantalla FROM ".TBL_MUPI_FACES." WHERE id_pantalla='$id_pantalla'";
59 $result = $database->query($q);
60 $num_rows = mysql_numrows($result);
61 if($num_rows == 1){
62 $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
63 zip_entry_close($zip_entry);
64 //2
65 $ParsedIMG = mysql_real_escape_string($buf);
66 //echo $ParsedIMG;
67 $q = "INSERT INTO ".TBL_IMG." (data, categoria, mime) VALUES('".$ParsedIMG."', 'PANTALLAS', 'image/jpeg');";
68 $database->query($q);
69 $foto_real = mysql_insert_id($database->connection);
70 //fwrite($fp,"$buf"); // No queremos escribirlo al disco :)
71 //fclose($fp); // No queremos escribirlo al disco :)
72 //3
73 $q = "UPDATE ".TBL_MUPI_FACES." SET foto_real='$foto_real' WHERE id_pantalla='$id_pantalla'";
74 $database->query($q);
75 echo MENSAJE ("!Cara $id_pantalla actualizada!", _M_INFO);
76 } else {
77 echo MENSAJE ("'" . zip_entry_name($zip_entry) . "' descartado por no existir en la base de datos.",_M_ERROR);
78 } // Si habia 1 resultado
80 //**********************************************************
81 } else {
82 echo MENSAJE ("Un archivo del ZIP '" . zip_entry_name($zip_entry) . "' no tiene formato válido JPG", _M_ERROR);
83 } // Si era JPG
84 } // Si se pudo abrir
85 } // Si era catorcena
86 } // Si no era directorio
87 } // Mientras habia archivos en el zip
88 zip_close($zip);
89 echo MENSAJE ("Concluido.", _M_INFO);
90 ob_flush(); flush();
91 } else {
92 echo MENSAJE ("Archivo no pudo ser descompreso, deteniendo operación", _M_ERROR);
93 } // Si era ZIP valido
94 } else {
95 // No, no es ZIP, no proceder.
96 echo MENSAJE ("Lo siento, no puedo procesar el archivo cargado, la extensión no es 'zip'", _M_ERROR);
97 } // Si era extension zip
100 // Instrucciones
101 echo '
102 <h1>Utilidad de cargado de fotos de pantallas</h1>
103 <hr />
104 <h2>Instrucciones de uso</h2>
105 Para un correcto cargado de pantallas, se recomienda seguir los siguientes pasos:
106 <ol>
107 <li>Asegurese de que todos los mupis esten creados para la catorcena a cargar, y que tengan una pantalla asignada.<br />Utilice la herramienta "<strong>Clonar anterior</strong>" si es necesario.</li>
108 <li>Obtenga (e imprima si es posible) la lista númerica de pantallas para la catorcena deseada.<br /><a href="./?'._ACC_.'=listas&tipo=id_pantallas" target="_blank">Puede obtenerla haciendo clic aquí.</a></li>
109 <li>Cree una carpeta con nombre igual a la fecha de inicio de la catorcena a la cual corresponden las fotos, formato dd-mm-yy (dia-mes-año).<br />Ej. "<strong>05-01-09</strong>" - evite añadir espacios u otros caracteres.</li>
110 <li>Agregue (en el folder recien creado) las fotos deseadas de las pantallas, enumerandolas de acuerdo a la lista del paso #1.<br />Solo serán válidos archivos con extensión "<strong>.jpg</strong>" (notese las minúsculas).</li>
111 <li><span style="color:#FF0000">Por favor <strong>no</strong> continúe sin corroborar los nombres de los archivos, <strong>esta operación es irreversible una vez cargados los datos.</strong></span></li>
112 <li>Comprima el folder en formato <strong>.zip</strong><br />El nombre del archivo compreso es irrelevante, aunque se sugiere utilizar un nombre que haga referencia a la catorcena de fotos que contiene el archivo.</li>
113 <li>Presione el botón <strong>Examinar</strong> (Choose, Browse o Búscar dependiendo de su navegador) y seleccione el archivo compreso recién creado.</li>
114 <li>Presione el botón <strong>Cargar archivo</strong> y espere hasta que la carga este completa.</li>
115 </ol>
117 echo '<hr />';
118 echo '<form action="./?'._ACC_.'=cargar+pantallas" enctype="multipart/form-data" method="POST">';
119 echo '<table>';
120 echo '<tr><td class="limpio" width="20%">Archivo a cargar</td><td class="limpio"><input type="file" name="ArchivoZip" size="100%"></td></tr>';
121 echo '<tr><td class="limpio" width="20%"></td><td class="limpio"><input type="submit" value="Cargar archivo"></td></tr>';
122 echo '</table>';
123 echo '</form>';
124 echo Mensaje('recuerde que esta es una operación intensiva para el servidor, evite realizar la carga de imagenes en horas pico', _M_NOTA);
125 echo Mensaje('Los archivos cargados son eliminados tras ser asignados a las pantallas, conserve una copia local de ellos si los necesita', _M_NOTA);