<?php
// ============================================================
// Sukriya - Dynamic XML Sitemap
// URL: https://shukriya.online/sitemap.xml  (via .htaccess rewrite)
//      ya direct: https://shukriya.online/sitemap.php
// Static pages + categories + Odisha cities + category×city + all approved vendors
// ============================================================
require_once __DIR__ . '/includes/config.php';

header('Content-Type: application/xml; charset=utf-8');
header('X-Robots-Tag: noindex'); // sitemap khud index nahi hona chahiye

$base  = rtrim(SITE_URL, '/') . '/public/';
$today = date('Y-m-d');
$db    = getDB();
$urls  = [];

function addUrl(&$urls, $loc, $lastmod, $freq, $prio) {
    $urls[$loc] = ['loc'=>$loc, 'lastmod'=>$lastmod, 'freq'=>$freq, 'prio'=>$prio]; // key = duplicate se bachne ke liye
}

// ── 1. STATIC PAGES ──
$staticPages = [
    ['index.php',      'daily',   '1.0'],
    ['categories.php', 'weekly',  '0.9'],
    ['vendors.php',    'daily',   '0.9'],
    ['careers.php',    'weekly',  '0.6'],
    ['founder.php',    'monthly', '0.5'],
    ['vendor-landing.php', 'weekly', '0.7'],   // purane sitemap se
    ['login.php',      'monthly', '0.3'],      // purane sitemap se
    ['register.php',   'monthly', '0.3'],      // purane sitemap se
];
foreach ($staticPages as $p) {
    $file = __DIR__ . '/public/' . $p[0];
    $mod  = file_exists($file) ? date('Y-m-d', filemtime($file)) : $today;
    addUrl($urls, $base . $p[0], $mod, $p[1], $p[2]);
}

// ── 1b. VENDOR ONBOARDING PAGES (root /vendor/ folder — purane sitemap se) ──
foreach ([['register.php','monthly','0.6'], ['login.php','monthly','0.3']] as $p) {
    $file = __DIR__ . '/vendor/' . $p[0];
    $mod  = file_exists($file) ? date('Y-m-d', filemtime($file)) : $today;
    addUrl($urls, rtrim(SITE_URL, '/') . '/vendor/' . $p[0], $mod, $p[1], $p[2]);
}

// ── 2. CATEGORIES ──
$cats = [];
try {
    $cats = $db->query("SELECT id, name FROM categories WHERE is_active=1 ORDER BY sort_order")->fetchAll();
} catch (Exception $e) { $cats = []; }
foreach ($cats as $c) {
    addUrl($urls, $base . 'vendors.php?cat=' . (int)$c['id'], $today, 'weekly', '0.8');
}

// ── 3. ODISHA CITIES (same list as homepage) ──
$odishaCities = [
    'Bhubaneswar','Cuttack','Berhampur','Brahmapur','Rourkela','Sambalpur','Balasore','Puri',
    'Jharsuguda','Baripada','Bhadrak','Angul','Jajpur','Kendrapara','Dhenkanal','Paradip',
    'Bargarh','Balangir','Koraput','Jeypore','Rayagada','Keonjhar','Bhawanipatna','Sundargarh',
    'Khordha','Nayagarh','Phulbani',
];
// DB me jo bhi city vendors ke paas hai wo bhi add karo (naya shehar apne-aap aa jayega)
try {
    $dbCities = $db->query("SELECT DISTINCT TRIM(city) FROM vendors WHERE is_approved=1 AND is_active=1 AND city<>''")->fetchAll(PDO::FETCH_COLUMN);
    foreach ($dbCities as $dc) {
        $found = false;
        foreach ($odishaCities as $oc) { if (strcasecmp($oc, $dc) === 0) { $found = true; break; } }
        if (!$found) $odishaCities[] = $dc;
    }
} catch (Exception $e) {}

foreach ($odishaCities as $city) {
    $isTop = in_array($city, ['Bhubaneswar','Berhampur','Brahmapur']);
    addUrl($urls, $base . 'vendors.php?city=' . rawurlencode($city), $today, $isTop ? 'daily' : 'weekly', $isTop ? '0.9' : '0.8');
}

// ── 4. CATEGORY × TOP CITY (homepage "Popular Searches" wale links) ──
$topCities = ['Bhubaneswar','Cuttack','Berhampur','Rourkela','Sambalpur','Balasore','Puri','Jharsuguda'];
foreach ($topCities as $city) {
    foreach (array_slice($cats, 0, 8) as $c) {
        addUrl($urls, $base . 'vendors.php?cat=' . (int)$c['id'] . '&city=' . rawurlencode($city), $today, 'weekly', '0.7');
    }
}

// ── 5. ALL APPROVED VENDOR PROFILES ──
try {
    $vendors = $db->query("
        SELECT id, " . (columnExists($db, 'vendors', 'updated_at') ? "COALESCE(updated_at, created_at)" : "created_at") . " AS mod_at
        FROM vendors WHERE is_approved=1 AND is_active=1 ORDER BY id DESC LIMIT 45000
    ")->fetchAll();
    foreach ($vendors as $v) {
        $mod = $v['mod_at'] ? date('Y-m-d', strtotime($v['mod_at'])) : $today;
        addUrl($urls, $base . 'vendor-detail.php?id=' . (int)$v['id'], $mod, 'weekly', '0.7');
    }
} catch (Exception $e) {}

function columnExists($db, $table, $col) {
    try {
        $st = $db->prepare("SHOW COLUMNS FROM `$table` LIKE ?");
        $st->execute([$col]);
        return (bool)$st->fetch();
    } catch (Exception $e) { return false; }
}

// ── OUTPUT ──
echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
foreach ($urls as $u) {
    echo "  <url>\n";
    echo "    <loc>" . htmlspecialchars($u['loc'], ENT_XML1 | ENT_QUOTES, 'UTF-8') . "</loc>\n";
    echo "    <lastmod>{$u['lastmod']}</lastmod>\n";
    echo "    <changefreq>{$u['freq']}</changefreq>\n";
    echo "    <priority>{$u['prio']}</priority>\n";
    echo "  </url>\n";
}
echo '</urlset>';