<?php
// Sitemap XML Dinâmico - Castanha Cearense
require_once 'config/config.php';
require_once 'config/database.php';
require_once 'includes/produto_funcoes.php';

// Definir header para XML
header('Content-Type: application/xml; charset=utf-8');

// Função para escapar caracteres especiais
function escapeXml($string) {
    return htmlspecialchars($string, ENT_XML1, 'UTF-8');
}

// Função para formatar data no formato W3C
function formatDate($date) {
    return date('Y-m-d\TH:i:s\Z', strtotime($date));
}

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
    
    <!-- Página Principal -->
    <url>
        <loc><?= escapeXml(BASE_URL) ?>/</loc>
        <lastmod><?= formatDate(date('Y-m-d H:i:s')) ?></lastmod>
        <changefreq>daily</changefreq>
        <priority>1.0</priority>
    </url>

<?php
try {
    // Buscar categorias ativas
    $stmt_categorias = $pdo->query("
        SELECT DISTINCT c.id, c.nome, c.tipo_castanha, MAX(p.criado_em) as ultima_atualizacao
        FROM categorias c 
        INNER JOIN produtos p ON c.id = p.categoria_id 
        WHERE p.ativo = 1 
        GROUP BY c.id, c.nome, c.tipo_castanha
        ORDER BY c.nome
    ");
    $categorias = $stmt_categorias->fetchAll();

    // Buscar produtos ativos
    $stmt_produtos = $pdo->query("
        SELECT p.*, c.nome as categoria_nome, c.tipo_castanha
        FROM produtos p 
        INNER JOIN categorias c ON p.categoria_id = c.id 
        WHERE p.ativo = 1 
        ORDER BY p.destaque DESC, p.criado_em DESC
    ");
    $produtos = $stmt_produtos->fetchAll();

    // Função buscarImagensProduto() está definida em includes/produto_funcoes.php

    // Adicionar categorias ao sitemap (páginas virtuais)
    foreach ($categorias as $categoria) {
        $categoria_url = BASE_URL . '/?categoria=' . urlencode($categoria['tipo_castanha']);
        echo "    <url>\n";
        echo "        <loc>" . escapeXml($categoria_url) . "</loc>\n";
        echo "        <lastmod>" . formatDate($categoria['ultima_atualizacao']) . "</lastmod>\n";
        echo "        <changefreq>weekly</changefreq>\n";
        echo "        <priority>0.6</priority>\n";
        echo "    </url>\n\n";
    }

    // Adicionar produtos ao sitemap
    foreach ($produtos as $produto) {
        // URL do produto (página principal com âncora)
        $produto_url = BASE_URL . '/#produto-' . $produto['id'];
        
        echo "    <url>\n";
        echo "        <loc>" . escapeXml($produto_url) . "</loc>\n";
        echo "        <lastmod>" . formatDate($produto['criado_em']) . "</lastmod>\n";
        echo "        <changefreq>weekly</changefreq>\n";
        echo "        <priority>0.8</priority>\n";
        
        // Adicionar imagens do produto
        $imagens = buscarImagensProduto($pdo, $produto['id']);
        
        // Se não houver imagens na nova tabela, usar a imagem antiga
        if (empty($imagens) && !empty($produto['imagem'])) {
            $imagens = [$produto['imagem']];
        }
        
        foreach ($imagens as $imagem) {
            if (!empty($imagem)) {
                $imagem_url = UPLOAD_URL . $imagem;
                echo "        <image:image>\n";
                echo "            <image:loc>" . escapeXml($imagem_url) . "</image:loc>\n";
                echo "            <image:title>" . escapeXml($produto['nome']) . " - Castanha Cearense</image:title>\n";
                echo "            <image:caption>" . escapeXml($produto['nome'] . ' - ' . $produto['descricao']) . "</image:caption>\n";
                echo "        </image:image>\n";
            }
        }
        
        echo "    </url>\n\n";
    }

} catch (PDOException $e) {
    // Em caso de erro, apenas continuar com o sitemap básico
    error_log("Erro ao gerar sitemap: " . $e->getMessage());
}
?>

    <!-- Páginas de Contato -->
    <url>
        <loc><?= escapeXml(BASE_URL) ?>/#contato</loc>
        <lastmod><?= formatDate(date('Y-m-d H:i:s')) ?></lastmod>
        <changefreq>monthly</changefreq>
        <priority>0.5</priority>
    </url>

    <!-- Página Sobre -->
    <url>
        <loc><?= escapeXml(BASE_URL) ?>/#sobre</loc>
        <lastmod><?= formatDate(date('Y-m-d H:i:s')) ?></lastmod>
        <changefreq>monthly</changefreq>
        <priority>0.5</priority>
    </url>

</urlset>
