<?php
require_once __DIR__ . '/config/bootstrap.php';

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

function xml_e(string $value): string
{
    return htmlspecialchars($value, ENT_XML1 | ENT_QUOTES, 'UTF-8');
}

$urls = [];
$add = static function (string $loc, string $priority = '0.7', string $changefreq = 'weekly', ?string $lastmod = null) use (&$urls): void {
    $urls[] = [
        'loc' => absolute_url($loc),
        'priority' => $priority,
        'changefreq' => $changefreq,
        'lastmod' => $lastmod,
    ];
};

$today = (new DateTime())->format('Y-m-d');
$add('index.php', '1.0', 'daily', $today);
$add('servers.php', '0.95', 'hourly', $today);
$add('server-new.php', '0.75', 'monthly', $today);
$add('premium.php', '0.7', 'monthly', $today);
$add('register.php', '0.65', 'monthly', $today);
$add('login.php', '0.45', 'monthly', $today);
$add('terms.php', '0.35', 'yearly', $today);
$add('cgu.php', '0.35', 'yearly', $today);
$add('cgv.php', '0.35', 'yearly', $today);
$add('mentions-legales.php', '0.35', 'yearly', $today);
$add('confidentialite.php', '0.35', 'yearly', $today);
$add('cookies.php', '0.35', 'yearly', $today);

$categoryStmt = $pdo->query('SELECT slug, created_at FROM categories ORDER BY name ASC');
foreach ($categoryStmt->fetchAll() as $category) {
    $add('servers.php?category=' . rawurlencode($category['slug']), '0.75', 'daily', substr((string)$category['created_at'], 0, 10));
}

$serverStmt = $pdo->query("SELECT slug, COALESCE(updated_at, created_at) AS lastmod FROM servers WHERE approved_status = 'approved' ORDER BY updated_at DESC, created_at DESC");
foreach ($serverStmt->fetchAll() as $server) {
    $add('server.php?slug=' . rawurlencode($server['slug']), '0.85', 'daily', substr((string)$server['lastmod'], 0, 10));
}

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php foreach ($urls as $url): ?>
  <url>
    <loc><?= xml_e($url['loc']) ?></loc>
    <?php if ($url['lastmod']): ?><lastmod><?= xml_e($url['lastmod']) ?></lastmod><?php endif; ?>
    <changefreq><?= xml_e($url['changefreq']) ?></changefreq>
    <priority><?= xml_e($url['priority']) ?></priority>
  </url>
<?php endforeach; ?>
</urlset>
