true]); } $idiomas = dame_idiomas(); $idiomaSeleccionado = "Español"; foreach ($idiomas as $idioma): if ($idioma["valor"]=="/".@$_REQUEST["idioma"]) $idiomaSeleccionado=$idioma["idioma"]; endforeach; $apartadoCesta = CocoDB::get("apartados", "controlador='cesta.php'", null, 1, ["ignoreSchema" => true]); $apartadoCesta = @$apartadoCesta[0]; $apartadoFavoritos = CocoDB::get("apartados", "controlador='favoritos.php'", null, 1, ["ignoreSchema" => true]); $apartadoFavoritos = @$apartadoFavoritos[0]; $apartadoLogin = CocoDB::get("apartados", "controlador='login.php'", null, 1, ["ignoreSchema" => true]); $apartadoLogin = @$apartadoLogin[0]; $apartadoRegistro = CocoDB::get("apartados", "controlador='registro.php'", null, 1, ["ignoreSchema" => true]); $apartadoRegistro = @$apartadoRegistro[0]; $alternate = dame_alternates($_SERVER["REQUEST_URI"]); $config_header = array( 'titulo_de_pagina' => $configuracionRecord["titulo_de_pagina"], 'categorias' => @$categorias, 'pagina_publicada' => $configuracionRecord["pagina_publicada"], 'current' => $current, 'portada' => @$portada, 'index' => @$index, 'configuracionRecord' => $configuracionRecord, 'configuracionTienda' => $configuracionTienda, 'meta_descripcion' => $configuracionRecord["metatag_descripcion"], 'meta_palabras' => @$configuracionRecord["metatag_palabras"], 'otros_metas' => @$otros_metas, 'color_base' => @$color_base, 'categorias' => @$categorias, 'idiomas' => @$idiomas, 'idiomaSeleccionado'=> @$idiomaSeleccionado, 'apartadoCesta' => @$apartadoCesta, 'apartadoFavoritos' => @$apartadoFavoritos, 'apartadoLogin' => @$apartadoLogin, 'apartadoRegistro' => @$apartadoRegistro, 'sitebuilder' => @$apartado["plantilla_sitebuilder"], 'alternate' => @$alternate ); // ¿Quien ve la web y quien ve la pagina de mantenimiento? // // La señal de entorno es la PRESENCIA del `.acai` en la raiz: Forge lo escribe en // cada copia local y NUNCA viaja a produccion (esta en el `exclude` del manifest // de push-core y fuera de la allowlist del sync per-web). // // Se comprueba EN LINEA, sin funcion compartida, y es a proposito: cada web puede // tener PERSONALIZADO cualquier fichero del core y el sync lo respeta. Si esta // señal viviera en `funciones.php` (o en cualquier otro fichero), una web con ese // fichero personalizado recibiria este `header.php` pero no la funcion, y el // resultado seria un Fatal error que tumba la pagina entera. Paso de verdad el // 2026-09-01 con villagrancanaria.com. La duplicacion de una linea es preferible // a una dependencia que el sync puede no entregar. // // Se detecta LOCAL explicitamente y todo lo demas se trata como produccion: si la // señal fallara, lo seguro es respetar `pagina_publicada`. // // local -> siempre se ve (ahi no existe "publicada" // ni ?pruebas: son conceptos de produccion) // prod + publicada -> se ve // prod + sin publicar + ?pruebas -> se ve, con el cartel rojo // prod + sin publicar + visitante -> mantenimiento // // La tabla de arriba es UNA regla para todas las webs (PHP y Astro) y para el // robots.txt: `acaiVisibilidadWeb` del plugin builder_saas (ws_respond.php), // que se reparte entero a todas las webs. Se llama con function_exists por la // misma razon que la señal va en linea: si una web no trae el plugin, se // queda con la RESERVA de abajo, que es la regla de siempre (y el cartel con // 200, sin las cabeceras 503 de `acaiCabecerasMantenimiento`). $esEntornoLocal = is_file(dirname(__FILE__) . "/.acai"); if (function_exists("acaiVisibilidadWeb")) { $visibilidadWeb = acaiVisibilidadWeb($esEntornoLocal, @$configuracionRecord["pagina_publicada"], isset($_SESSION["pruebas"])); } else { // RESERVA (sin el plugin): la misma tabla, en linea. $visibilidadWeb = ($esEntornoLocal || @$configuracionRecord["pagina_publicada"]) ? "visible" : (isset($_SESSION["pruebas"]) ? "pruebas" : "mantenimiento"); } if ($visibilidadWeb !== "mantenimiento") { if (@$customCode) echo modulo('custom-header',$config_header); else echo tpl('cabecera',$config_header); if ($visibilidadWeb === "pruebas") { ?>
SITIO EN PRUEBAS