<?php
require_once __DIR__ . '/debug_bootstrap.php';
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

function diag_line($label, $value, $ok)
{
    $color = $ok ? '#166534' : '#991b1b';
    $bg = $ok ? '#dcfce7' : '#fee2e2';
    echo '<div style="padding:10px 12px;border-radius:10px;background:' . $bg . ';color:' . $color . ';margin:8px 0;font:14px/1.4 Arial,sans-serif">';
    echo '<strong>' . htmlspecialchars($label, ENT_QUOTES, 'UTF-8') . ':</strong> ' . htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8');
    echo '</div>';
}

function diag_section($title)
{
    echo '<h2 style="font:700 18px Arial,sans-serif;margin:22px 0 10px;color:#0f172a">' . htmlspecialchars($title, ENT_QUOTES, 'UTF-8') . '</h2>';
}

?><!DOCTYPE html><html lang="pt-br"><head><meta charset="UTF-8"><title>Diagnóstico Formulários</title></head>
<body style="background:#f8fafc;margin:0;padding:24px">
<div style="max-width:1000px;margin:0 auto;background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:24px;box-shadow:0 10px 30px rgba(15,23,42,.06)">
<h1 style="font:700 28px Arial,sans-serif;margin:0 0 8px;color:#0f172a">Diagnóstico do formulários.php</h1>
<p style="font:14px Arial,sans-serif;color:#475569;margin:0 0 18px">Use esta página para descobrir por que o <code>formularios.php</code> está dando erro 500.</p>
<?php
try {
    diag_section('Ambiente');
    diag_line('PHP', PHP_VERSION, true);
    diag_line('SAPI', php_sapi_name(), true);
    diag_line('Pasta atual', __DIR__, is_dir(__DIR__));

    diag_section('Arquivos obrigatórios');
    $files = array('db.php', 'formulario_utils.php', 'header.php', 'footer.php', 'formularios.php');
    foreach ($files as $f) {
        $path = __DIR__ . '/' . $f;
        diag_line($f, is_file($path) ? 'OK' : 'FALTANDO', is_file($path));
    }

    diag_section('Banco de dados');
    require __DIR__ . '/db.php';
    diag_line('Conexão PDO', isset($pdo) && $pdo instanceof PDO ? 'OK' : 'Falhou', isset($pdo) && $pdo instanceof PDO);

    $tables = array('formularios', 'formulario_campos', 'formulario_respostas', 'formulario_respostas_campos');
    foreach ($tables as $table) {
        $stmt = $pdo->query("SHOW TABLES LIKE " . $pdo->quote($table));
        $exists = $stmt->fetchColumn() ? true : false;
        diag_line('Tabela ' . $table, $exists ? 'Existe' : 'Não encontrada', $exists);
    }

    diag_section('Consultas do formulários.php');
    $stmtCat = $pdo->query("SELECT DISTINCT COALESCE(NULLIF(TRIM(categoria), ''), 'Sem categoria') AS categoria FROM formularios ORDER BY categoria");
    $categorias = $stmtCat->fetchAll(PDO::FETCH_COLUMN);
    diag_line('Consulta de categorias', 'OK (' . count($categorias) . ' resultado(s))', true);

    $stmt = $pdo->query("SELECT f.id, f.nome, COALESCE(NULLIF(TRIM(f.categoria), ''), 'Sem categoria') AS categoria FROM formularios f ORDER BY categoria ASC, f.id DESC LIMIT 5");
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    diag_line('Consulta de formulários', 'OK (' . count($rows) . ' resultado(s))', true);

    diag_section('Verificação de duplicidade de funções');
    $formulariosCode = file_get_contents(__DIR__ . '/formularios.php');
    $utilsCode = file_get_contents(__DIR__ . '/formulario_utils.php');
    foreach (array('normalizeCategoria', 'filterDuplicableRow') as $fn) {
        $inForm = preg_match('/function\s+' . preg_quote($fn, '/') . '\s*\(/', $formulariosCode) === 1;
        $inUtils = preg_match('/function\s+' . preg_quote($fn, '/') . '\s*\(/', $utilsCode) === 1;
        $ok = !($inForm && $inUtils);
        $msg = $ok ? 'Sem conflito' : 'Duplicada em formularios.php e formulario_utils.php';
        diag_line($fn, $msg, $ok);
    }

    diag_section('Abrir modo debug');
    echo '<p style="font:14px Arial,sans-serif;color:#334155">Para mostrar o erro direto na tela do formulários, acesse: <a href="formularios.php?__debug=1">formularios.php?__debug=1</a></p>';
    echo '<p style="font:14px Arial,sans-serif;color:#334155">Ou crie o arquivo vazio <code>.debug_forms</code> na pasta <code>/0</code>.</p>';
} catch (Exception $e) {
    mf_forms_log_error('DIAGNOSTICO', $e->getMessage(), array('file' => $e->getFile(), 'line' => $e->getLine()));
    diag_line('Exceção', $e->getMessage() . ' | ' . $e->getFile() . ':' . $e->getLine(), false);
}
?>
</div></body></html>
