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

$dataFile = __DIR__ . '/docs.json';
$data = json_decode(file_get_contents($dataFile), true) ?: ['site' => [], 'pages' => []];
$pages = $data['pages'] ?? [];
$siteUrl = 'https://docs.alvandcms.ir';

function escapeXml($s) {
    return htmlspecialchars($s ?? '', ENT_QUOTES, 'UTF-8');
}

function flattenPages($pages) {
    $result = [];
    foreach ($pages as $p) {
        $result[] = $p;
    }
    return $result;
}

$flatPages = flattenPages($pages);

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

// Homepage
echo '<url>';
echo '<loc>' . escapeXml($siteUrl) . '</loc>';
echo '<lastmod>' . date('Y-m-d') . '</lastmod>';
echo '<changefreq>daily</changefreq>';
echo '<priority>1.0</priority>';
echo '<xhtml:link rel="alternate" hreflang="fa" href="' . escapeXml($siteUrl) . '" />';
echo '</url>';
echo "\n";

// Documentation pages
foreach ($flatPages as $page) {
    if (($page['status'] ?? '') === 'published' || !isset($page['status'])) {
        $slug = $page['slug'] ?? '';
        $updatedAt = isset($page['updatedAt']) ? date('Y-m-d', (int)($page['updatedAt'] / 1000)) : date('Y-m-d');

        echo '<url>';
        echo '<loc>' . escapeXml($siteUrl . '/?page=' . urlencode($slug)) . '</loc>';
        echo '<lastmod>' . escapeXml($updatedAt) . '</lastmod>';
        echo '<changefreq>weekly</changefreq>';
        echo '<priority>0.8</priority>';
        echo '<xhtml:link rel="alternate" hreflang="fa" href="' . escapeXml($siteUrl . '/?page=' . urlencode($slug)) . '" />';
        echo '</url>';
        echo "\n";
    }
}

echo '</urlset>';
