<?php

// TURN OFF PHP ERRORS FROM SHOWING IN XML
error_reporting(0);
ini_set('display_errors', 0);

// XML HEADER
header("Content-Type: application/xml; charset=utf-8");

// DATABASE CONNECTION
$host = "localhost";
$dbname = "your_database";
$username = "your_username";
$password = "your_password";

// CONNECT DATABASE
$conn = new mysqli($host, $username, $password, $dbname);

// CHECK CONNECTION
if ($conn->connect_error) {

    echo '<?xml version="1.0" encoding="UTF-8"?>';
    echo '<error>Database Connection Failed</error>';

    exit;
}

// WEBSITE URL
$base_url = "https://yourwebsite.com";

// START XML
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

<?php

// ======================
// STATIC PAGES
// ======================

$pages = [
    "",
    "/about",
    "/contact",
    "/privacy-policy"
];

foreach($pages as $page) {

    echo '
    <url>
        <loc>'.$base_url.$page.'</loc>
        <changefreq>weekly</changefreq>
        <priority>0.8</priority>
    </url>';
}


// ======================
// BLOG POSTS
// ======================

$sql = "SELECT slug, updated_at FROM blogs";

$result = $conn->query($sql);

if($result){

    while($row = $result->fetch_assoc()) {

        $slug = htmlspecialchars($row['slug']);
        $updated = date('Y-m-d', strtotime($row['updated_at']));

        echo '
        <url>
            <loc>'.$base_url.'/blog/'.$slug.'</loc>
            <lastmod>'.$updated.'</lastmod>
            <changefreq>daily</changefreq>
            <priority>0.9</priority>
        </url>';
    }
}


// ======================
// CATEGORIES
// ======================

$sql2 = "SELECT slug, updated_at FROM categories";

$result2 = $conn->query($sql2);

if($result2){

    while($row2 = $result2->fetch_assoc()) {

        $slug = htmlspecialchars($row2['slug']);
        $updated = date('Y-m-d', strtotime($row2['updated_at']));

        echo '
        <url>
            <loc>'.$base_url.'/category/'.$slug.'</loc>
            <lastmod>'.$updated.'</lastmod>
            <changefreq>weekly</changefreq>
            <priority>0.7</priority>
        </url>';
    }
}

$conn->close();

?>

</urlset>