<?php
$txtFile = 'urls.txt';

if (!file_exists($txtFile)) {
    die("File tidak ditemukan.");
}

$limit = 10000;

// base URL
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? "https://" : "http://";
$domain = $_SERVER['HTTP_HOST'];
$path = rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . '/';
$baseUrl = $protocol . $domain . $path;

// ambil URL
$urls = file($txtFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$chunks = array_chunk($urls, $limit);

$index = 1;
$sitemapList = [];

foreach ($chunks as $chunk) {

    // =========================
    // FILE 1: sitemap biasa
    // =========================
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
    $xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;

    foreach ($chunk as $url) {
        if (!preg_match('#^https?://#', $url)) {
            $fullUrl = $baseUrl . ltrim($url, '/');
        } else {
            $fullUrl = $url;
        }

        $xml .= "<url><loc>" . htmlspecialchars($fullUrl) . "</loc></url>" . PHP_EOL;
    }

    $xml .= '</urlset>';

    $fileName1 = "sitemap{$index}.xml";
    file_put_contents($fileName1, $xml);
    $sitemapList[] = $baseUrl . $fileName1;

    // =========================
    // FILE 2: versi parameter (?view=)
    // =========================
    $xmlParam = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
    $xmlParam .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;

    foreach ($chunk as $url) {
        if (preg_match('#^https?://#', $url)) {
            $slug = basename(parse_url($url, PHP_URL_PATH));
        } else {
            $slug = $url;
        }

        $paramUrl = $baseUrl . '?i=' . urlencode($slug);
        $xmlParam .= "<url><loc>" . htmlspecialchars($paramUrl) . "</loc></url>" . PHP_EOL;
    }

    $xmlParam .= '</urlset>';

    $fileName2 = "site{$index}.xml";
    file_put_contents($fileName2, $xmlParam);
    $sitemapList[] = $baseUrl . $fileName2;

    $index++;
}

// =========================
// SITEMAP INDEX (utama)
// =========================
$indexXml = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
$indexXml .= '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;

foreach ($sitemapList as $sitemapUrl) {
    $indexXml .= "<sitemap><loc>" . htmlspecialchars($sitemapUrl) . "</loc></sitemap>" . PHP_EOL;
}

$indexXml .= '</sitemapindex>';

file_put_contents("map.xml", $indexXml);

// output
echo "✅ Berhasil generate:<br>";
echo "- Total file sitemap: " . count($sitemapList) . "<br>";
echo "- File index: map.xml<br>";
?>