<?php
require __DIR__ . '/includes/config.php';

header('Content-Type: application/xml; charset=UTF-8');
$base = rtrim((string)SITE_URL, '/') . '/';

function mt_sitemap_slugify(string $value): string
{
    $value = html_entity_decode($value, ENT_QUOTES | ENT_HTML5, 'UTF-8');
    $value = strtolower(trim($value));
    $value = preg_replace('/[^\pL\pN]+/u', '-', $value) ?? '';
    $value = trim($value, '-');

    if (function_exists('iconv')) {
        $ascii = @iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $value);
        if (is_string($ascii) && $ascii !== '') {
            $value = strtolower($ascii);
            $value = preg_replace('/[^a-z0-9]+/', '-', $value) ?? '';
            $value = trim($value, '-');
        }
    }

    return $value;
}

$urls = [];
$static = [
    '',
    'about-us.php',
    'packages.php',
    'services.php',
    'features.php',
    'faq.php',
    'blog.php',
    'contact-us.php',
];

foreach ($static as $path) {
    $urls[] = $base.$path;
}

try {
    $pdo = db();

    foreach ($pdo->query("SELECT slug FROM packages WHERE status='active' ORDER BY sort_order,id") as $row) {
        $slug = trim((string)$row['slug']);
        if ($slug !== '') {
            $urls[] = $base.'packages/'.rawurlencode($slug).'/';
        }
    }

    foreach ($pdo->query("SELECT slug FROM services WHERE status='active' ORDER BY sort_order,id") as $row) {
        $slug = trim((string)$row['slug']);
        if ($slug !== '') {
            $urls[] = $base.'services/'.rawurlencode($slug);
        }
    }

    foreach ($pdo->query("SELECT title,slug FROM blogs WHERE status='published' ORDER BY id") as $row) {
        $slug = trim((string)$row['slug']);

        if ($slug === 'blog') {
            $slug = 'the-ultimate-first-timers-guide-to-performing';
        } elseif ($slug === '') {
            $slug = mt_sitemap_slugify((string)$row['title']);
        }

        if ($slug !== '') {
            $urls[] = $base.'blogs/'.rawurlencode($slug);
        }
    }
} catch (Throwable $e) {
    error_log('MT sitemap dynamic routes: '.$e->getMessage());
}

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

foreach (array_values(array_unique($urls)) as $url) {
    echo '<url><loc>'
        .htmlspecialchars($url, ENT_XML1 | ENT_QUOTES, 'UTF-8')
        .'</loc></url>';
}

echo '</urlset>';
