header.php decide con acaiVisibilidadWeb (y 503 + Retry-After con acaiCabecerasMantenimiento) si el plugin la trae; si no, la reserva en línea de siempre. cms/robots.php cierra con Disallow: / mientras la web no esté publicada (acaiRobotsBloqueados); un robots.txt propio manda. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
110 lines
5.0 KiB
PHP
Executable File
110 lines
5.0 KiB
PHP
Executable File
<?
|
|
require_once ("sesion.php");
|
|
if (isset($_GET["pruebas"])) $_SESSION["pruebas"]=true;
|
|
|
|
require_once "funciones.php";
|
|
if (!isset($current)) $current=0;
|
|
|
|
if (HAY_TIENDA) {
|
|
$categorias = CocoDB::get("categorias_productos", "parentNum=0", "siblingOrder ASC", null, ["ignoreSchema" => 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") {
|
|
?>
|
|
<div style="position:absolute;top:0px;width:150px;background-color:red;color:#fff;font-size:12px;padding:0 10px;z-index:99999999;transform:translateZ(1000px);">SITIO EN PRUEBAS</div>
|
|
<?
|
|
}
|
|
} else {
|
|
if (function_exists("acaiCabecerasMantenimiento")) acaiCabecerasMantenimiento();
|
|
die(tpl('mantenimiento',$config_header));
|
|
}
|
|
?>
|