<?php
// Устанавливаем правильный заголовок для XML
header('Content-Type: application/xml; charset=utf-8');

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

$baseUrl = 'https://' . ($_SERVER['HTTP_HOST'] ?? 'gcalc.ru');

// Системные и служебные файлы, которые НЕ должны попасть в поисковый индекс
$exclude = [
    'admin_search.php',
    'debug_web.php',
    'diag.php',
    'keys.php',
    'secure_check.php',
    'sitemap.xml.php',
    'random.php'
];

// --- 1. Обрабатываем главную страницу в первую очередь ---
$mainPageFile = __DIR__ . '/index.php';
if (file_exists($mainPageFile)) {
    echo "  <url>\n";
    echo "    <loc>{$baseUrl}/</loc>\n";
    echo "    <lastmod>" . date('c', filemtime($mainPageFile)) . "</lastmod>\n";
    echo "    <changefreq>daily</changefreq>\n";
    echo "    <priority>1.0</priority>\n";
    echo "  </url>\n";
}

// --- 2. Обрабатываем остальные страницы ---
$exclude_dirs = ['partials', 'api', 'endpoint', 'tasks', 'node_modules', 'vendor', 'docs', '.git', 'screenshots', 'agent_reports'];

$directory = new RecursiveDirectoryIterator(__DIR__, RecursiveDirectoryIterator::SKIP_DOTS);
$iterator = new RecursiveIteratorIterator($directory);
$files = new RegexIterator($iterator, '/^.+\.php$/i', RecursiveRegexIterator::GET_MATCH);

foreach ($files as $file_match) {
    $file = $file_match[0];
    $basename = basename($file);
    
    // Получаем относительный путь от корня
    $relativePath = str_replace(__DIR__ . '/', '', $file);
    $parts = explode('/', $relativePath);
    
    // Проверяем, не находится ли файл в исключенной директории
    $skip = false;
    foreach ($parts as $part) {
        if (in_array($part, $exclude_dirs)) {
            $skip = true;
            break;
        }
    }
    
    // Пропускаем index.php (уже обработан) и файлы из списка исключений
    if ($skip || $basename === 'index.php' || in_array($basename, $exclude)) {
        continue;
    }

    // По умолчанию берем время файла на сервере
    $lastmod = date('c', filemtime($file));
    
    // УМНЫЙ ПАРСИНГ: Пытаемся достать SEO-дату из самого файла (первые 512 байт)
    $content = file_get_contents($file, false, null, 0, 512);
    if (preg_match('/\$article_published_time\s*=\s*[\'"]([^\'"]+)[\'"]/', $content, $matches)) {
        $parsedDate = strtotime($matches[1]);
        if ($parsedDate) {
            $lastmod = date('c', $parsedDate);
        }
    }

    // Формируем slug с учетом вложенности
    $slug = str_replace('.php', '', $relativePath);
    $loc = $baseUrl . '/' . $slug;
    
    $priority = (strpos($slug, 'teoriya') !== false || strpos($slug, 'spravochnik') !== false) ? '0.9' : '0.8';

    echo "  <url>\n";
    echo "    <loc>{$loc}</loc>\n";
    echo "    <lastmod>{$lastmod}</lastmod>\n";
    echo "    <changefreq>weekly</changefreq>\n";
    echo "    <priority>{$priority}</priority>\n";
    echo "  </url>\n";
}

echo '</urlset>';
?>
