12 Commits
Author SHA1 Message Date
Jordan DiazandClaude Opus 5.5 80b6541e30 fix: crear uploads/webp sin carrera en funciones.php
Varias peticiones a la vez (el prerender de Astro las lanza en paralelo) veian
la carpeta sin crear y la segunda imprimia "mkdir(): File exists" delante del
JSON de action_ws, rompiendo el build de una web recien descargada.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 15:16:28 +00:00
Jordan Diaz 7097b79111 fix(core): las migas no revientan con un registro sin su campo de migas (ficha en blanco) 2026-09-24 07:35:23 +00:00
Jordan Diaz 9a4906edfc Revert "fix(header): el entorno se detecta en tiempo de ejecucion, no con un fichero .prod"
This reverts commit 92f092dcc4.
2026-09-01 19:21:01 +00:00
Jordan DiazandClaude Opus 5 92f092dcc4 fix(header): el entorno se detecta en tiempo de ejecucion, no con un fichero .prod
`header.php` tenia un `if (1)` hardcodeado que se saltaba entera la comprobacion
de "pagina publicada". Para produccion se habia empezado a mantener una copia
`header.php.prod` que comentaba esas lineas con `#`.

ESA COPIA ESTABA MAL Y HABRIA TUMBADO TODAS LAS WEBS

Al comentar el `if(1){...}else{`, el cuerpo del `else` pasaba a ejecutarse SIEMPRE:

   visitante normal, web PUBLICADA -> die(mantenimiento)

Es decir, cualquier visitante sin sesion `?pruebas` recibia la pagina de
mantenimiento aunque la web estuviera publicada. Verificado ejecutando las dos
versiones. Nadie lo vio porque un `.prod` **solo corre en produccion**: no hay
forma de que ese fallo aparezca antes de estar desplegado.

Ese es el argumento de fondo contra el enfoque `.prod`, mas alla de la
duplicacion: el camino de produccion no se puede probar. Con la condicion en
tiempo de ejecucion se ejercita en local escondiendo el `.acai` un segundo — que
es como se ha verificado este commit.

LA CONDICION, AHORA EXPLICITA

   local                          -> siempre se ve (ahi no existe ni "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

DONDE VIVE `esEntornoLocal()`, QUE COSTO TRES INTENTOS

La señal 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 detecta LOCAL explicitamente y todo
lo demas es produccion: si la señal fallara, el comportamiento seguro es respetar
`pagina_publicada`.

Va en `funciones.php` y no en:
  - `cms/`             -> se sobrescribe al actualizar el core desde el CMS legacy
  - `lib/variables.php`-> viaja en el sync PER-WEB (es el unico fichero de raiz que
                          lo hace), asi que cada web sobrescribe esa copia: una
                          funcion del nucleo ahi es la proxima divergencia
  - un plugin          -> `TokenGuard::isLocalTest()` hace esto mismo, pero el
                          nucleo no puede depender de que un plugin este cargado,
                          y builder_saas publica solo al editarlo

`funciones.php` es CORE (viaja en el manifest de push-core, como `header.php`) y
lo carga todo el front antes de usarlo.

VERIFICADO sobre una web real (cdn-ecommerce-base), no en un test aislado:
  con .acai    -> HTTP 200, 78104 bytes, la web entera, sin mantenimiento
  sin .acai    -> HTTP 200,  1943 bytes, pagina de mantenimiento
Sintaxis comprobada con el PHP 8.3 de Plesk, que es el del hosting.

OJO AL DESPLEGAR: esto hace que la pagina de mantenimiento EMPIECE A FUNCIONAR de
verdad. Hoy el `if (1)` la desactiva en todas las webs, produccion incluida, asi
que cualquier web con `pagina_publicada = 0` se esta viendo entera. Al llegar este
cambio, esas webs pasaran a mostrar mantenimiento — que es lo correcto, pero es un
cambio visible.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019gLX53DZJXGPFCf6DJTPWQ
2026-09-01 19:16:12 +00:00
Jordan f64a790b9b dasdsa 2026-04-15 19:58:40 +01:00
Jordan 4f78c9276e detect 2026-04-15 19:56:57 +01:00
Jordan 6cd37bd2c1 Update funciones.php 2026-04-15 19:53:58 +01:00
Jordan e5948007da mas 2026-04-15 19:53:33 +01:00
Jordan bd1386890b error html 2026-04-15 19:49:59 +01:00
Jordan 407038c72f Update funciones.php 2026-04-09 18:32:48 +01:00
Jordan dfc5b7bc75 Update funciones.php 2026-04-09 18:28:54 +01:00
Jordan 03acc5b013 Initial commit: plantilla base PHP para webs Acai CMS 2026-02-21 21:13:57 +00:00