commit masivo.
[ecomupi.git] / contenido / mupis+ubicaciones+dinamico.php
blob935dbdf573b32abcfc6bd1c435b92f44391e5108
1 <?php
2 error_reporting(E_STRICT | E_ALL);
3 ob_start("ob_gzhandler");
4 date_default_timezone_set ('America/El_Salvador');
5 require_once('../include/const.php');
6 require_once('../include/sesion.php');
7 require_once('../include/fecha.php');
8 require_once('sub.php');
9 require_once('../include/maps/GoogleMapAPI.class.php');
10 $map = new GoogleMapAPI;
12 if ( !isset( $_GET['accion'] ) )
14 retornar ( "Ud. esta utilizando incorrectamente este script de soporte. 0" );
16 switch ( $_GET['accion'] )
18 // Se mueve un marcador [mupi|referencia]
19 case "drag":
21 if ( !isset( $_GET['id'] ) && !isset( $_GET['lat'] ) && !isset( $_GET['lng'] ))
23 retornar ( "Ud. esta utilizando incorrectamente este script de soporte. [DRAG]" );
25 $parte = explode ('|',$_GET['id'] );
26 //Si tiene las tres partes validas (id, nueva_latitud, nueva_longitud)
27 if ( count($parte) != 3 )
29 retornar ( "Ud. esta utilizando incorrectamente este script de soporte. [DRAG_2]" );
32 if ( $parte[0] == "REF" )
34 //retornar ("Referencia?: " . "REF". ", Catorcena: ". $parte[1]. ", id_referencia:".$parte[2]);
35 retornar ( actualizarReferencia ($parte[2], $_GET['lat'], $_GET['lng']));
37 else
39 //retornar ("Mupi: " . $parte[0]. ", Catorcena: ". $parte[1]. ", Usuario:".$parte[2]);
40 retornar ( actualizarCoords ($parte[0], $_GET['lat'], $_GET['lng']));
43 break;
44 // Pide información sobre un marcador seleccionado
45 case "mupi":
47 if ( !isset( $_GET['MUPI'] ) )
49 retornar ( "Ud. esta utilizando incorrectamente este script de soporte. 1" );
51 $parte = explode ('|',$_GET['MUPI'] );
52 // Si seleccionó una referencia...
53 if ( $parte[0] == "REF" )
55 retornar("Se ha seleccionado la referencia " .CREAR_LINK_GET("gestionar+referencias&referencia=". $parte[2], $parte[2], "Abre el dialogo de gestión para la referencia seleccionada"));
59 if ( count($parte) == 3 )
61 //retornar ("Mupi: " . $parte[0]. ", Catorcena: ". $parte[1]. ", Usuario:".$parte[2]);
62 retornar ( Buscar ($parte[0], $parte[1], $parte[2] ) );
65 break;
67 * Desea obtener un Combobox con las calles en la catorcena solicitada.
68 * Ademas se muestran solo las calles en las cuales el cliente tiene
69 * una cara contratada. En el caso de Administrador y Vendedor se muestran todas
70 * las calles que tengan ecomupis en ellas
72 case "cmbcalles":
74 if ( !isset( $_GET['catorcena'] ) && !isset ( $_GET['usuario'] ) )
76 retornar ( "Ud. esta utilizando incorrectamente este script de soporte. 2" );
78 $Boton_combo_calles = '<input type="button" OnClick="funcion_combo_calles()" value="Mostrar Mapa">';
79 retornar ('<b>Ver Calle:</b><br />' . $database->Combobox_CallesConPresencia("combo_calles",$_GET['usuario'],$_GET['catorcena']).$Boton_combo_calles);
81 break;
83 * Mostras el mapa solicitado.
84 * Nos tiene que proveer de la catorcena, calle y usuario del cual necesita el mapa.
85 * Solo administradores y rela. puede obtener mapas globales (ej. Todos los usuarios).
87 case "vermapa":
89 if ( isset( $_GET['catorcena'] ) && isset( $_GET['calle'] ) && isset ( $_GET['usuario'] ) )
91 retornar (Mostrar_Mapa($_GET['catorcena'], $_GET['calle'], $_GET['usuario']));
93 else
95 retornar ( "Ud. esta utilizando incorrectamente este script de soporte. 3" );
98 break;
100 * Caso especial en el que se muestra los mupis sin necesidad de que dispongan de caras
101 * contradas. Muestra todos los mupis en existencia y si se pulsa sobre ellos *trata* de
102 * desplegar el arte y foto disponible en la catorcena actual para ese ecomupis.
104 case "verpormupis":
106 if ( isset( $_GET['calle'] ) )
108 retornar (Mostrar_Mapa(Obtener_catorcena_cercana(), $_GET['calle'], ""));
110 else
112 retornar ( "Ud. esta utilizando incorrectamente este script de soporte. 3" );
115 break;
116 } //Switch
119 function retornar($texto)
121 exit ('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' . $texto . '<br />');
125 * Buscar() ~ Función encargada de devolver los links adecuados para poder
126 * Visualizar el arte y fotos colocados en un mupi.
128 function Buscar ($codigo_mupi, $catorcena, $usuario, $FLAG_salida_globo=false)
130 global $session;
131 $link = @mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die('Por favor revise sus datos, puesto que se produjo el siguiente error:<br /><pre>' . mysql_error() . '</pre>');
132 mysql_select_db(DB_NAME, $link) or die('!->La base de datos seleccionada "'.$DB_base.'" no existe');
134 if ( time() > $catorcena )
136 $tCatorcena=$catorcena;
138 else
140 $tCatorcena=Obtener_catorcena_anterior($catorcena);
144 if ( !$usuario)
146 $q = "select tipo_pantalla, foto_real, (SELECT foto_pantalla FROM emupi_mupis_pedidos as b where a.codigo_pedido=b.codigo_pedido) AS arte from emupi_mupis_caras as a where catorcena=$catorcena AND codigo_mupi = (SELECT id_mupi FROM emupi_mupis WHERE id_mupi=$codigo_mupi);";
148 else
150 $q = "select tipo_pantalla, foto_real, (SELECT foto_pantalla FROM emupi_mupis_pedidos as b where a.codigo_pedido=b.codigo_pedido) AS arte from emupi_mupis_caras as a where catorcena=$tCatorcena AND codigo_pedido IN (SELECT codigo_pedido FROM emupi_mupis_pedidos where codigo='$usuario') AND codigo_mupi = (SELECT id_mupi FROM emupi_mupis WHERE id_mupi=$codigo_mupi);";
153 $result = @mysql_query($q, $link) or retornar ('!1->Ocurrió un error mientras se revisaba la disponibilidad del MUPI.<br />'.mysql_error($link));
154 /* Error occurred, return given name by default */
155 $num_rows = mysql_numrows($result);
157 if(!$result || ($num_rows < 0))
159 retornar("Error mostrando la información");
163 if($num_rows == 0)
165 // Cargar una imagen de ecomupis =)
168 // =====================Hasta acá la BD================================= //
169 // ===================================================================== //
170 // Empezamos a recorrer las caras encontradas
171 $tipoPantalla = $datosLinksGlobo = '';
172 for($i=0; $i<$num_rows; $i++)
174 $arte = mysql_result($result,$i,"arte");
175 $tipo_pantalla = mysql_result($result,$i,"tipo_pantalla");
176 $foto_real = mysql_result($result,$i,"foto_real");
177 // si es par es vehicular
178 $tipoPantalla = ($tipo_pantalla % 2) == 0 ? 'vehicular' : 'peatonal';
179 $NivelesPermitidos = array(ADMIN_LEVEL, SALESMAN_LEVEL, DEMO_LEVEL);
180 // Son links para Globito o para Growl normal?
181 if ( $FLAG_salida_globo )
183 // Si es catorcena futura y no es Administrador, ni Vendedor ni Demo.
184 if ( time() < $catorcena && !in_array($session->userlevel, $NivelesPermitidos) )
186 $datosUI[$tipoPantalla] .= "<center><strong>Imagen actual de cara ".$tipoPantalla.":</strong></center>"."<center>Viendo catorcena futura, la fotografía mostrada es ilustrativa y corresponde al mupi seleccionado en la catorcena presente.<br /><br />" . "<img src=\\\'include/ver.php?id=".$foto_real."\\\' />" . "</center>"."<center><strong>Arte digital de campaña:</strong></center>"."<center>Viendo catorcena futura, Arte no disponible</center>";
188 else
190 $datosUI[$tipoPantalla] = "<center><strong>Imagen actual de cara ".$tipoPantalla.":</strong></center>"."<center>" . "<img src=\\\'include/ver.php?id=". $foto_real . "\\\' />" . "</center>"."<center><strong>Arte digital de campaña:</center>"."<center>" . "<img src=\\\'include/ver.php?id=".$arte."\\\' />" . "</strong></center>";
193 $datosCaja = "$('div.close').trigger('click.jGrowl');$.jGrowl('".($datosUI[$tipoPantalla])."'".",{theme: 'smoke',sticky: true,closer: false})";
194 $datosLinksGlobo .= "<a onclick=\\\"$datosCaja\\\">Ver imagen de cara ".$tipoPantalla."</a><br />";
196 // Growl normal...
197 else
199 // Si es catorcena futura y no es Administrador, ni Vendedor ni Demo.
200 if ( time() < $catorcena && !in_array($session->userlevel, $NivelesPermitidos) )
202 $datosUI[$tipoPantalla] .= "<center><strong>Imagen actual de cara ".$tipoPantalla.":</strong></center>"."<center>Viendo catorcena futura, la fotografía mostrada es ilustrativa y corresponde al mupi seleccionado en la catorcena presente.<br /><br />" . "<img src='include/ver.php?id=".$foto_real."' />" . "</center>"."<center><strong>Arte digital de campaña:</strong></center>"."<center>Viendo catorcena futura, Arte no disponible</center>";
204 else
206 $datosUI[$tipoPantalla] = "<center><strong>Imagen actual de cara ".$tipoPantalla.":</strong></center>"."<center>" . "<img src='include/ver.php?id=". $foto_real . "' />" . "</center>"."<center><strong>Arte digital de campaña:</center>"."<center>" . "<img src='include/ver.php?id=".$arte."' />" . "</strong></center>";
209 $datosCaja = "$.jGrowl('".addslashes($datosUI[$tipoPantalla])."',{theme: 'smoke', sticky: true, closer: false})";
211 if ($num_rows > 1)
213 $datosLinksGlobo .= "<a onclick=\"$datosCaja\">Ver imagen de cara ".$tipoPantalla."</a><br />";
214 } else {
215 $datosLinksGlobo .= JS_($datosCaja);
219 $datosLinksGlobo = "<center>".$datosLinksGlobo."</center>";
220 // Fin del recorrido de datos.
221 return $datosLinksGlobo;
224 function Mostrar_Mapa($catorcena, $calle, $usuario)
226 global $session, $map, $database;
228 // =====================Inicio de mapas================================= //
229 $map->setDSN('mysql://'.DB_USER.':'.DB_PASS.'@'.DB_SERVER.'/'.DB_NAME);
230 $map->setAPIKey(GOOGLE_MAP_KEY);
231 $map->setWidth('100%');
232 $map->referencias = false;
234 // Desactivar los controles que solo Admin puede tener.
236 if ( !$session->isAdmin() )
238 // Controles de Mapa
239 $map->map_controls = false;
240 // Arrastre de mapa
241 $map->disable_map_drag = true;
242 // Arrastre de marcadores
243 $map->disable_drag = true;
244 // Controles extra para edición
245 $map->Mostrar_Contenido_Maximizado = false;
248 // El globito solo Admin, Vendedor y Usuario pueden ver.
249 if ( !in_array($session->userlevel,array(ADMIN_LEVEL, SALESMAN_LEVEL, USER_LEVEL)) )
251 $map->disableInfoWindow();
252 $FLAG_globito = false;
253 } else {
254 $FLAG_globito = true;
256 // ===================================================================== //
258 // =====================Cargar marcadores:mupis================================= //
259 $WHERE_USER = "";
260 $grupo_calle = "";
261 $t_grupo_calle = "";
263 //¿Quiere todas las calles?
264 if ( $calle == "::T::")
266 $map->disable_map_drag = false;
268 //¿Quiere un grupo de calles?
269 elseif ( strpos($calle, "G:") !== false )
271 $Explotado = @end(explode(":",$calle));
272 $grupo_calle = "codigo_calle IN (SELECT codigo_calle FROM ".TBL_STREETS." WHERE grupo_calle='".$Explotado."')";
273 $map->disable_map_drag = false;
275 //No, el quiere una calle en especifico.
276 else
278 $grupo_calle = "codigo_calle='$calle'";
281 // Ver por Mupis
282 if ( isset($_GET['sin_presencia']) )
284 if ($grupo_calle) $t_grupo_calle = " where $grupo_calle";
285 $q = "select id_mupi, codigo_mupi, direccion, foto_generica, lon, lat, codigo_evento, codigo_calle FROM emupi_mupis AS a $t_grupo_calle;";
287 else
289 // Quiere ver mupis que tengan publicidad, sin restricción de usuario.
291 if ( !$usuario )
293 // Siendo Admin, Vendedor, Usuario o Demo
295 if ($grupo_calle) $t_grupo_calle = " and $grupo_calle";
296 $q = "select id_mupi, codigo_mupi, direccion, foto_generica, lon, lat, codigo_evento, codigo_calle FROM emupi_mupis AS a WHERE id_mupi IN (select codigo_mupi FROM emupi_mupis_caras WHERE catorcena=$catorcena)$t_grupo_calle;";
298 else
300 // Siendo cliente o con usuario
302 if ($grupo_calle) $t_grupo_calle = "$grupo_calle and ";
303 $q = "select id_mupi, codigo_mupi, direccion, foto_generica, lon, lat, codigo_evento, codigo_calle, (SELECT logotipo from emupi_usuarios where codigo='$usuario') as logotipo from emupi_mupis where $t_grupo_calle id_mupi IN (select codigo_mupi FROM emupi_mupis_caras WHERE catorcena=$catorcena AND codigo_pedido IN (SELECT codigo_pedido FROM emupi_mupis_pedidos WHERE codigo='$usuario'));";
308 DEPURAR($q,0);
309 $result = $database->query($q);
310 $n_mupis = $num_rows = mysql_numrows($result);
312 if(!$result || ($num_rows < 0))
314 exit ( "Error mostrando la información<br />");
318 if($num_rows == 0)
320 exit ("¡No hay "._NOMBRE_." ingresados!<br />");
323 // Recorrer todos los mupis.
324 $n_caras_p = $n_caras_v = $n_caras = 0; //Estadísticas individuales
325 for($i=0; $i<$num_rows; $i++)
327 $id_mupi = mysql_result($result,$i,"id_mupi");
328 $codigo_mupi = mysql_result($result,$i,"codigo_calle") . "." .mysql_result($result,$i,"codigo_mupi");
329 $direccion = truncate(mysql_result($result,$i,"direccion"));
330 $foto_generica = mysql_result($result,$i,"foto_generica");
331 $lon = mysql_result($result,$i,"lon");
332 $lat = mysql_result($result,$i,"lat");
333 $codigo_evento = mysql_result($result,$i,"codigo_evento");
335 // Si puede ver el Globito, entonces hay que cargar los logotipos de los usuarios en el mupi.
336 $logotipo = "";
337 if ( $FLAG_globito )
339 $q = "SELECT DISTINCT logotipo FROM emupi_usuarios where codigo IN (SELECT codigo from emupi_mupis_pedidos where codigo_pedido IN (SELECT codigo_pedido FROM emupi_mupis_caras as b WHERE catorcena=$catorcena AND b.codigo_mupi=".mysql_result($result,$i,"id_mupi")."))";
340 $result2 = $database->query($q);
341 $num_rows2 = mysql_numrows($result2);
342 $logotipo = "<br />";
344 if($num_rows2 > 0)
346 for($ii=0; $ii<$num_rows2; $ii++)
348 $logotipo .= CargarImagenDesdeBD2(mysql_result($result2,$ii,"logotipo"), "50px");
352 $logotipo = "<div style='width:400px; height:75px'>".$logotipo."</div>";
355 $DATOS = Buscar($id_mupi, $catorcena, $usuario,true);
356 $html = "<div style='position:static;height:200px;width:400px'><center><b>Cliente(s) actual(es)</b><hr />".$logotipo."</center><div id='datos_mupis_en_globo' style='width:400px; height:50px'>$DATOS</div></div>";
357 $Contenido_maximizado = "";
359 // Si no hay usuario entonces sacar todas la pantallas de ese mupi.
360 // Si hay usuario entonces solo sacar las pantallas de ese usuario en ese mupi.
361 if (!$usuario)
363 $q = "SELECT id_pantalla, tipo_pantalla, codigo_pedido, (SELECT descripcion FROM ".TBL_MUPI_ORDERS." AS b WHERE b.codigo_pedido=a.codigo_pedido) AS descripcion FROM emupi_mupis_caras AS a WHERE codigo_mupi='$id_mupi' and catorcena='$catorcena'".";";
364 } else {
365 $q = "SELECT id_pantalla, tipo_pantalla FROM emupi_mupis_caras AS a WHERE codigo_mupi='$id_mupi' AND catorcena='$catorcena' AND codigo_pedido IN (SELECT codigo_pedido FROM ".TBL_MUPI_ORDERS." AS tmo WHERE tmo.codigo='$usuario')";
367 //echo $q."<br>";
368 $result2 = $database->query($q);
369 $num_rows2 = mysql_numrows($result2);
370 $logotipo = "<br />";
371 if ($session->isAdmin()){
372 $Valor_Peatonal = $Valor_Vehicular = $Pantalla_Vehicular = $Pantalla_Peatonal = NULL;
373 $Valor_Vehicular_Desc = $Valor_Peatonal_Desc = 'Ninguno';
374 $Boton_Vehicular = "<a href='./?"._ACC_."=gestionar+pantallas&crear=1&catorcena=$catorcena&tipo=0&id_mupi=$id_mupi' target='blank'>Crear esta cara...</a><br />";
375 $Boton_Peatonal = "<a href='./?"._ACC_."=gestionar+pantallas&crear=1&catorcena=$catorcena&tipo=1&id_mupi=$id_mupi' target='blank'>Crear esta cara...</a><br />";
377 // Si ese mupi tenia caras, entonces las recorremos.
379 if($num_rows2 > 0)
381 for($ii=0; $ii<$num_rows2; $ii++)
384 if ( (mysql_result($result2,$ii,"tipo_pantalla") % 2) == 0 )
386 $n_caras_v++;
387 $n_caras++;
388 if ($session->isAdmin())
390 $Pantalla_Vehicular = mysql_result($result2,$ii,"id_pantalla");
391 $Valor_Vehicular = mysql_result($result2,$ii,"codigo_pedido");
392 $Valor_Vehicular_Desc = mysql_result($result2,$ii,"descripcion");
393 $Boton_Vehicular = "<a href='./?"._ACC_."=gestionar+pantallas&actualizar=1&id=$Pantalla_Vehicular&catorcena=$catorcena' target='blank'>Editar esta cara...</a><br />";
396 else
398 $n_caras_p++;
399 $n_caras++;
400 if ($session->isAdmin())
402 $Pantalla_Peatonal = mysql_result($result2,$ii,"id_pantalla");
403 $Valor_Peatonal = mysql_result($result2,$ii,"codigo_pedido");
404 $Valor_Peatonal_Desc = mysql_result($result2,$ii,"descripcion");
405 $Boton_Peatonal = "<a href='./?"._ACC_."=gestionar+pantallas&actualizar=1&id=$Pantalla_Peatonal&catorcena=$catorcena' target='blank'>Editar esta cara...</a><br />";
413 if ($session->isAdmin())
415 $Contenido_maximizado = "<b>Catorcena a editar:</b> " . AnularFechaNula($catorcena). " - " . AnularFechaNula( Fin_de_catorcena($catorcena) ). "<br /><b>Mupi a Editar:</b> $codigo_mupi -> Id. $id_mupi" . "<hr />". "<table>". "<tr>". "<th>Cara vehicular</th><th>Cara peatonal</th>". "</tr>". "<tr>". "<td width='50%' valign='top'>". // VEHICULAR
416 "<b>ID. Pantalla:</b> ".EnNulidad($Pantalla_Vehicular,"Ninguna")."<br />". "<b>Código de pedido Actual:</b> $Valor_Vehicular | $Valor_Vehicular_Desc<br />". $Boton_Vehicular. "</td>". "<td width='50%' valign='top'>". // PEATONAL
417 "<b>ID. Pantalla:</b> ". EnNulidad($Pantalla_Peatonal,"Ninguna")."<br />". "<b>Código de pedido Actual:</b> $Valor_Peatonal | $Valor_Peatonal_Desc<br />". $Boton_Peatonal. "</td>". "</tr>". "</table>" ;
421 $map->addMarkerByCoords($lon, $lat, $codigo_mupi . ' | ' . $direccion, $html, $codigo_mupi, $id_mupi . "|" . $catorcena . "|" . $usuario, $Contenido_maximizado);
422 $map->addMarkerIcon(public_base_directory().'/punto.gif','',12,12,0,0);
425 // Mostrar referencias. 10/02/09
427 if ($grupo_calle) $t_grupo_calle = " where $grupo_calle";
428 $q = "SELECT * FROM emupi_referencias".$t_grupo_calle.";";
429 DEPURAR($q,0);
430 $result = $database->query($q);
431 $num_rows = mysql_numrows($result);
432 $map->referencias = true;
433 for($i=0; $i<$num_rows; $i++)
435 $lon = mysql_result($result,$i,"lon");
436 $lat = mysql_result($result,$i,"lat");
437 $logotipo = "<br />".CargarImagenDesdeBD2(mysql_result($result,$i,"imagen_referencia"), "200px");
438 $map->addMarkerByCoords($lon, $lat, "Referencia" , "Este es un punto de referencia<br />".$logotipo, '', "REF|$catorcena|".mysql_result($result,$i,"id_referencia"),"");
439 $map->addMarkerIcon(public_base_directory(). '/include/ver.php?id='.mysql_result($result,$i,"imagen_referencia"),'',0,0,50,50);
442 //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
443 $datos = '';
444 $datos .= $map->getMapJS();
445 //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
446 // Total de Eco Mupis mostrados
447 $datos .= "<hr />Total de Ecomupis en la calle seleccionada: <b>$n_mupis</b><br />";
448 // Total de caras encontradas
449 $datos .= "Total de espacios publicitarios en la calle seleccionada: <b>$n_caras</b><br />";
450 $datos .= "Número de caras publicitarias vehiculares en la calle seleccionada: <b>" . $n_caras_v ."</b><br />";
451 $datos .= "Número de caras publicitarias peatonales en la calle seleccionada: <b>" . $n_caras_p ."</b><br />";
452 $datos .= SCRIPT('onLoad();');
453 return $datos;
456 // Función de guardado de nuevas coordenadas que se ejecuta al mover un mupi.
457 function actualizarCoords ($id, $lat, $lng)
459 global $database;
460 $q = "UPDATE ".TBL_MUPI." SET lat='$lat', lon='$lng' WHERE id_mupi='$id';";
461 $result = $database->query($q);
462 $database->REGISTRAR ("pantallas_mover", "Se movió el Eco Mupis '$id' a ($lat,$lng)","SQL: $q");
465 // Función de guardado de nuevas coordenadas que se ejecuta al mover una referencia.
466 function actualizarReferencia ($id, $lat, $lng)
468 global $database;
469 $q = "UPDATE ".TBL_REFS." SET lat='$lat', lon='$lng' WHERE id_referencia='$id';";
470 $result = $database->query($q);
471 $database->REGISTRAR ("referencias_mover", "Se movió la referencia '$id' a ($lat,$lng)","SQL: $q");