Conn2Flow
Navegação das docs

SDD

Requisição 129 — Blindagem e Correção de Inicialização em Publisher e Publisher Pages (Template Options, Nome na Clonagem e Prevenção de Publicações sem HTML)

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…

  • 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:

    1. Em publisher.php (linhas 135 e 466), a variável $template_id_options não era inicializada ($template_id_options = ''; ausente).

    2. Em publisher_editar() e publisher_adicionar(), a concatenação $template_id_options .= ... disparava o aviso PHP Warning: Undefined variable $template_id_options in .../publisher.php on line 489.

    3. Quando não há templates cadastrados com target="publisher", $templates retorna false/null, podendo quebrar ou esvaziar o dropdown e permitir a gravação de Tipos de Publicação com template_id vazio.

  • Solução Requerida:

    • Inicializar explicitamente $template_id_options = ''; antes dos loops em publisher_adicionar() e publisher_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:

    1. Na função publisher_pages_clonar() (linhas 1714–1732), a variável $nome nã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.

    2. Nas funções publisher_pages_adicionar() (linhas 184 e 187) e publisher_pages_clonar() (linhas 1611 e 1614), os campos opcionais raiz e sem_permissao eram acessados diretamente via if($_REQUEST[$post_nome]), gerando PHP 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() e publisher_pages_clonar():

    • Substituir acessos diretos por !empty($_REQUEST[$post_nome]) para raiz, sem_permissao, pagina-opcao, paginaCaminho, modulo e opcao.


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 com template_id inválido for submetido, ou se o usuário submeter antes do carregamento do template, a publicação é persistida no banco com campo html vazio, 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 htmlWithValues nã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

  1. Sintaxe: php -l 100% limpo em publisher.php e publisher-pages.php.

  2. 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 raiz ou sem_permissao.

  3. Suíte PHPUnit: Testes unitários cobrindo a inicialização correta de $template_id_options, extração de $nome na clonagem e persistência íntegra de publisher-pages.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada