- $_GET['theme'] sanitizado no display_login com a mesma regex do
picture.send.php; getThemeInfo() ganhou defesa em profundidade
(rejeita qualquer valor que não seja nome simples de diretório).
- mkdir 0755 (era 0777) no storage de imagens.
- IMAGETYPE_BMP usava imagecreatefromwbmp (WBMP != BMP); agora
imagecreatefrombmp.
- public/themes/ removido: era cópia divergente e corrompida (CSS
mutilado por find/replace) da fonte real themes/ — o código só lê
themes/ da raiz e serve via picture.send.php.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- front/*.php não incluem mais ../../../inc/includes.php: no GLPI 11 o
LegacyFileLoadController boota o core antes do script, e o include
quebra quando o plugin roda do marketplace dir (KB-PLUGIN-028/010).
- logo.png (512x512) criado a partir de plugin.png: o LogoController só
reconhece o nome fixo logo.png (KB-INFRA-002).
- Removidos front/test_simple.php e front/login.css.php (deprecated),
incluindo a firewall strategy correspondente no setup.php (KB-018).
- json_encode com JSON_HEX_TAG|JSON_HEX_AMP em todo dado dinâmico
embutido em <script> (KB-PLUGIN-003).
- .gitignore padrão KB-018; .DS_Store removidos.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- add_css/add_javascript agora usam strings simples: o core do GLPI 11
interpola o valor uma única vez e acrescenta ?v=<versão> sozinho, o que
neutralizava o truque de __toString duplo do PluginButterflyFileVersion
(classe removida).
- CodeMirror foi removido do GLPI 11 (substituído por Monaco no core);
o init quebrava com ReferenceError. Textarea simples por ora; Monaco
entra na modernização.
- $('#tabs').tabs() removido: jQuery UI não existe mais no GLPI 11 e o
HTML das tabs já estava comentado.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Estado original vindo do servidor de origem via tar.gz, antes da
rodada de conformidade com a knowledge-base e fixes de GLPI 11.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>