GeoLite/download_map.php

57 lines
1.4 KiB
PHP

<?php
// Include required files
require_once 'incl/const.php';
require_once 'incl/Auth.php';
require_once 'incl/Config.php';
require_once 'incl/Database.php';
// Require authentication
requireAuth();
// Only admins can download/generate maps
if (!isAdmin()) {
die('Access denied');
}
// Get dashboard ID
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($id === 0) {
http_response_code(404);
die('Bad request! Map ID is required.');
}
// Check view permission
if (!canView('dashboard', $id)) {
header('Location: index.php?error=access_denied');
exit;
}
// Get the form data
$basemaps = isset($_POST['basemaps']) ? $_POST['basemaps'] : [];
$layers = isset($_POST['layers']) ? $_POST['layers'] : [];
$features = isset($_POST['features']) ? $_POST['features'] : [];
// Include only the template generation functions
//require_once 'map_builder.php';
// Generate the template directly
$template = generateMapTemplate($id, $basemaps, $layers, $features);
// Set headers for download
header('Content-Type: text/html');
header('Content-Disposition: attachment; filename="custom_map.html"');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
// Remove any PHP session headers that might interfere
if (session_status() === PHP_SESSION_ACTIVE) {
session_write_close();
}
// Output only the template
echo $template;
exit;
?>