<?php
// ============================================================
// 1) Mise en tampon AVANT TOUT — même avant le require_once.
//    Ainsi, tout warning/notice émis par api.php sera capturé
//    et non envoyé directement au client.
// ============================================================
ob_start();

// Désactive l'affichage des erreurs dans la sortie (elles restent
// loguées côté serveur si error_log est configuré, mais ne polluent
// plus jamais le flux XML envoyé au client).
error_reporting(E_ALL);
ini_set('display_errors', '0');

require_once __DIR__ . '/includes/api.php';

// ============================================================
// 2) On vide tout ce qui a pu être capturé par erreur
//    (warnings, espaces, BOM...) avant d'envoyer le vrai contenu.
// ============================================================
ob_end_clean();

// Nouveau buffer propre pour le XML final
ob_start();

header('Content-Type: application/xml; charset=UTF-8');

$siteUrl = 'https://www.tunisauto.tn';
$today   = date('Y-m-d');

// Récupérer toutes les annonces
$result = apiGetCars(1, 1000) ?? [];
$cars = $result['cars'] ?? $result['data'] ?? (array_is_list($result) ? $result : []);

// Pages blog statiques
$blogSlugs = [
    'volkswagen-tiguan-occasion-tunisie',
    'isuzu-dmax-gt-prix-tunisie',
    'crossover-neuf-tunisie-2025',
];

// Marques pour pages filtrées
$brands = [];
foreach ($cars as $car) {
    if (!empty($car['brand'])) {
        $brands[trim($car['brand'])] = true;
    }
}

// Échappement pour éviter de casser le XML (&, <, >, etc.)
function xml_esc($value) {
    return htmlspecialchars((string) $value, ENT_XML1 | ENT_QUOTES, 'UTF-8');
}

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <!-- Pages statiques principales -->
  <url>
    <loc><?= xml_esc($siteUrl) ?>/</loc>
    <lastmod><?= $today ?></lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc><?= xml_esc($siteUrl) ?>/annonces</loc>
    <lastmod><?= $today ?></lastmod>
    <changefreq>daily</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc><?= xml_esc($siteUrl) ?>/deposer</loc>
    <lastmod>2026-05-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc><?= xml_esc($siteUrl) ?>/essais</loc>
    <lastmod>2026-05-19</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc><?= xml_esc($siteUrl) ?>/cote</loc>
    <lastmod>2026-05-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>

  <!-- Pages par marque -->
  <?php foreach (array_keys($brands) as $brand): ?>
  <url>
    <loc><?= xml_esc($siteUrl) ?>/annonces?brand=<?= xml_esc(urlencode($brand)) ?></loc>
    <lastmod><?= $today ?></lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <?php endforeach; ?>

  <!-- Articles blog -->
  <?php foreach ($blogSlugs as $slug): ?>
  <url>
    <loc><?= xml_esc($siteUrl) ?>/blog/<?= xml_esc($slug) ?></loc>
    <lastmod>2026-05-19</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <?php endforeach; ?>

  <!-- Annonces individuelles -->
  <?php foreach ($cars as $car):
    if (empty($car['id'])) continue;
    $lastmod = !empty($car['updated_at'])
        ? date('Y-m-d', strtotime($car['updated_at']))
        : $today;
  ?>
  <url>
    <loc><?= xml_esc($siteUrl) ?>/annonce?id=<?= (int) $car['id'] ?></loc>
    <lastmod><?= $lastmod ?></lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>
  <?php endforeach; ?>
</urlset>
<?php
// ============================================================
// 3) Envoi final : uniquement le XML propre, rien d'autre.
// ============================================================
ob_end_flush();