<?php
// Establecer la cabecera de contenido correcta para que el navegador sepa que es un XML.
header('Content-Type: application/xml; charset=utf-8');

// La URL de tu Edge Function de Supabase.
$supabase_sitemap_url = 'https://yifndxwdcyqlbikezgfh.supabase.co/functions/v1/sitemap';

// Función para generar un sitemap XML mínimo válido en caso de error
function generateFallbackSitemap()
{
    $site_url = 'https://fourin.co';
    $lastmod = date('c'); // Formato ISO 8601
    return '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>' . htmlspecialchars($site_url, ENT_XML1, 'UTF-8') . '</loc>
    <lastmod>' . htmlspecialchars($lastmod, ENT_XML1, 'UTF-8') . '</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
</urlset>';
}

// Usar cURL para obtener el contenido de la URL de Supabase.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $supabase_sitemap_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // Timeout de 10 segundos
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); // Timeout de conexión de 5 segundos
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Fourin Sitemap Generator/1.0');

// Ejecutar la petición y obtener el contenido XML.
$sitemap_content = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
$curl_error = curl_error($ch);

// Cerrar la conexión cURL.
curl_close($ch);

// Validar que el contenido sea XML válido
$is_valid_xml = false;
if ($sitemap_content && $http_code === 200) {
    // Verificar que el contenido comience con <?xml
    if (strpos(trim($sitemap_content), '<?xml') === 0) {
        // Intentar parsear el XML para validar que sea válido
        libxml_use_internal_errors(true);
        $xml = simplexml_load_string($sitemap_content);
        if ($xml !== false) {
            $is_valid_xml = true;
        }
        libxml_clear_errors();
    }
}

// Si el contenido es válido, mostrarlo
if ($is_valid_xml) {
    echo $sitemap_content;
} else {
    // Si falla, devolver un sitemap mínimo válido en lugar de un error
    // Esto evita que Google marque el sitemap como inválido
    if ($curl_error) {
        error_log("Sitemap cURL Error: " . $curl_error);
    }
    if ($http_code !== 200) {
        error_log("Sitemap HTTP Error: " . $http_code);
    }
    if (!$is_valid_xml && $sitemap_content) {
        error_log("Sitemap Content-Type: " . $content_type);
        error_log("Sitemap Content (first 200 chars): " . substr($sitemap_content, 0, 200));
    }

    // Devolver un sitemap mínimo válido
    echo generateFallbackSitemap();
}
