adlerka.top/lib/sitemap.php
2024-02-15 10:23:22 +01:00

51 lines
2.0 KiB
PHP

<?php
require "lib/account.php";
function generateSitemap(): string {
global $routerConfig;
$site_dirs = array_diff(scandir($routerConfig["page_dir"]), array('.', '..'));
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
$sitemap .= '<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;
foreach ($site_dirs as $site_dir) {
$pages_dir = array_diff(scandir($routerConfig["page_dir"] . $site_dir), array('.', '..'));
foreach ($pages_dir as $page_file) {
$page_file_tmp = explode(".", $page_file);
$page_basename = $page_file_tmp[0];
$page_file_path = $routerConfig["page_dir"] . $site_dir . "/" . $page_file;
$page_location = "/" . $site_dir . "/" . $page_basename;
if ($page_file_tmp[1] == "html") {
$page_tmp = file_get_contents($page_file_path);
$pageMetadata = parsePageTag($page_tmp);
if (!empty($pageMetadata["parameters"]["minimal_permission_level"])) {
$page_required_permission = intval($pageMetadata["parameters"]["minimal_permission_level"]);
} else {
$page_required_permission = $routerConfig["page"]["default_permissions"];
}
} elseif ($page_file_tmp[1] == "php") {
$page_required_permission = getDynamicPermission($page_file_path);
} else {
$page_required_permission = $routerConfig["page"]["default_permissions"];
}
// Check if the user is authorized to access the page
if ($page_required_permission <= $_SESSION["privilege_level"]) {
$sitemap .= '<url>' . PHP_EOL;
$sitemap .= '<loc>' . htmlspecialchars($page_location) . '</loc>' . PHP_EOL;
// You can add other optional tags like lastmod, changefreq, priority here if needed
$sitemap .= '</url>' . PHP_EOL;
}
}
}
$sitemap .= '</urlset>' . PHP_EOL;
return $sitemap;
}