<?php
/**
 * Plan du site, servi à /sitemap.xml via une règle Nginx.
 *
 * Généré plutôt que figé : un fichier statique se périme dès qu'une
 * page est ajoutée, et personne ne pense à le reprendre. Ici la liste
 * vit à un seul endroit, et les dates de modification sont celles des
 * fichiers eux-mêmes.
 *
 * Les espaces authentifiés et les points d'entrée de données n'y
 * figurent pas : ils sont déjà écartés par robots.txt.
 */
declare(strict_types=1);
date_default_timezone_set('Europe/Paris');

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

// priorite : importance relative des pages entre elles, pas une note
// absolue. frequence : rythme de mise à jour annoncé aux moteurs.
$pages = [
    ''                               => ['1.0', 'daily'],
    'podcasts.php'                   => ['0.9', 'weekly'],
    'meteo.php'                      => ['0.8', 'daily'],
    'regie-pub.php'                  => ['0.8', 'monthly'],
    'tarifs.php'                     => ['0.7', 'monthly'],
    'animateurs.php'                 => ['0.7', 'monthly'],
    'studio.php'                     => ['0.6', 'yearly'],
    'contact.php'                    => ['0.6', 'yearly'],
    'mention-legales.php'            => ['0.3', 'yearly'],
    'politique-confidentialite.php'  => ['0.3', 'yearly'],
];

$base = 'https://' . ($_SERVER['HTTP_HOST'] ?? 'seafm.fr');

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";

foreach ($pages as $chemin => [$priorite, $frequence]) {
    $fichier = __DIR__ . '/' . ($chemin === '' ? 'index.php' : $chemin);
    if (!is_file($fichier)) {
        continue;   // page retirée : on ne l'annonce pas aux moteurs
    }
    printf("  <url>\n    <loc>%s</loc>\n    <lastmod>%s</lastmod>\n"
         . "    <changefreq>%s</changefreq>\n    <priority>%s</priority>\n  </url>\n",
        htmlspecialchars($base . '/' . $chemin, ENT_XML1),
        date('Y-m-d', filemtime($fichier)),
        $frequence,
        $priorite);
}

echo '</urlset>' . "\n";
