' . PHP_EOL;echo '' . PHP_EOL;// ─── Helper ──────────────────────────────────────────────────────────────────function url_entry(string $loc, string $lastmod, string $changefreq = 'weekly', string $priority = '0.5'): string { return " \n" . " " . htmlspecialchars($loc, ENT_XML1) . "\n" . " " . $lastmod . "\n" . " " . $changefreq . "\n" . " " . $priority . "\n" . " \n";}// ─── 1. Static pages ─────────────────────────────────────────────────────────$staticPages = [ ['url' => '', 'freq' => 'daily', 'prio' => '1.0'], ['url' => 'recherche', 'freq' => 'daily', 'prio' => '0.9'], ['url' => 'connexion', 'freq' => 'monthly', 'prio' => '0.3'], ['url' => 'inscription', 'freq' => 'monthly', 'prio' => '0.3'], ['url' => 'contact', 'freq' => 'monthly', 'prio' => '0.4'], ['url' => 'faq', 'freq' => 'monthly', 'prio' => '0.4'], ['url' => 'confidentialite', 'freq' => 'monthly', 'prio' => '0.3'], ['url' => 'conditions-utilisation', 'freq' => 'monthly', 'prio' => '0.3'],];foreach ($staticPages as $p) { echo url_entry($base . $p['url'], $today, $p['freq'], $p['prio']);}// ─── 2. Category pages ───────────────────────────────────────────────────────$cats = $pdo->query("SELECT id, name, slug FROM listing_categories ORDER BY id")->fetchAll();foreach ($cats as $cat) { echo url_entry($base . ltrim(category_url($cat['id'], $cat['slug'], $cat['name']), '/'), $today, 'daily', '0.8');}// ─── 3. Active listing pages ─────────────────────────────────────────────────$listings = $pdo->query( "SELECT id, title, created_at FROM listings WHERE status = 'active' AND (expires_at IS NULL OR expires_at > NOW()) ORDER BY created_at DESC LIMIT 50000")->fetchAll();foreach ($listings as $l) { $lastmod = date('Y-m-d', strtotime($l['created_at'])); echo url_entry($base . ltrim(listing_url($l['id'], $l['title']), '/'), $lastmod, 'weekly', '0.7');}echo '' . PHP_EOL;