-
Status do intake: ready-for-intake
-
Data: 2026-08-24
-
Origem: logs de produção e relato de falha na criação de publicação sem template em
[REDACTED] -
Classificação: bugfix, resiliência, publisher, publisher-pages, php 8.1+
-
Batch candidato: BATCH-131
Esta especificação define os requisitos para corrigir os avisos de variáveis e chaves não definidas reportados nos logs de produção do módulo publisher e publisher-pages, além de estabelecer salvaguardas contra a gravação de publicações com HTML zerado.
1. Inicialização e Proteção do Dropdown de Templates em publisher.php
-
Problemas Identificados:
-
Em
publisher.php(linhas 135 e 466), a variável$template_id_optionsnão era inicializada ($template_id_options = '';ausente). -
Em
publisher_editar()epublisher_adicionar(), a concatenação$template_id_options .= ...disparava o avisoPHP Warning: Undefined variable $template_id_options in .../publisher.php on line 489. -
Quando não há templates cadastrados com
target="publisher",$templatesretornafalse/null, podendo quebrar ou esvaziar o dropdown e permitir a gravação de Tipos de Publicação comtemplate_idvazio.
-
-
Solução Requerida:
-
Inicializar explicitamente
$template_id_options = '';antes dos loops empublisher_adicionar()epublisher_editar(). -
Proteger o loop com verificação estrita de array:
if($templates && is_array($templates)).
-
2. Extração de $nome na Clonagem e Blindagem de Checkboxes em publisher-pages.php
-
Problemas Identificados:
-
Na função
publisher_pages_clonar()(linhas 1714–1732), a variável$nomenão era extraída dos dados retornados pelo banco ($retorno_bd['nome']), ficando indefinida na linha 1913:PHP Warning: Undefined variable $nome in .../publisher-pages.php on line 1913. -
Nas funções
publisher_pages_adicionar()(linhas 184 e 187) epublisher_pages_clonar()(linhas 1611 e 1614), os campos opcionaisraizesem_permissaoeram acessados diretamente viaif($_REQUEST[$post_nome]), gerandoPHP Warning: Undefined array key "raiz"e"sem_permissao"quando os checkboxes não eram marcados.
-
-
Solução Requerida:
-
Em
publisher_pages_clonar(): -
Extrair
$nome = (isset($retorno_bd['nome']) ? $retorno_bd['nome'] : '');junto com os demais campos da publicação clonada. -
Em
publisher_pages_adicionar()epublisher_pages_clonar(): -
Substituir acessos diretos por
!empty($_REQUEST[$post_nome])pararaiz,sem_permissao,pagina-opcao,paginaCaminho,moduloeopcao.
-
3. Salvaguarda de Integridade contra Gravação de Publicações com HTML Zerado
-
Problema Identificado:
-
Ao abrir a criação de publicações sem parâmetro
?publisher_id=..., o editor HTML nasce com conteúdo vazio. Se um Tipo de Publicação comtemplate_idinválido for submetido, ou se o usuário submeter antes do carregamento do template, a publicação é persistida no banco com campohtmlvazio, gerando páginas em branco no site publicado.
-
-
Solução Requerida:
-
Garantir que, ao criar uma publicação com publicador selecionado, se o template do publicador possuir HTML e
htmlWithValuesnão tiver sido alterado pelo usuário, o HTML padrão do template seja usado como fallback seguro em vez de persistir string vazia. -
Validar a integridade dos dados na inclusão para evitar que publicações ativas fiquem sem estrutura HTML.
-
4. Critérios de Aceitação
-
Sintaxe:
php -l100% limpo empublisher.phpepublisher-pages.php. -
Zero Warnings:
-
Criar ou editar Tipos de Publicação não emite aviso de
$template_id_options. -
Clonar publicações não emite aviso de
$nome. -
Salvar publicações com checkboxes desmarcados não emite avisos de
raizousem_permissao.
-
-
Suíte PHPUnit: Testes unitários cobrindo a inicialização correta de
$template_id_options, extração de$nomena clonagem e persistência íntegra depublisher-pages.