'GeoLite', 'logo_url' => null, 'primary_color' => '#667eea', 'hero_image' => null, 'footer_text' => '© ' . date('Y') . ' GeoLite' ]; // Load settings from database $settingsService = new Settings($pdo, 'assets/brand', 'assets/brand'); $brand = array_merge($brand, $settingsService->load()); $message = ''; $error = ''; // Handle form submissions if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['action'])) { switch ($_POST['action']) { case 'create': $name = trim($_POST['name']); $description = trim($_POST['description']); $color = trim($_POST['color']); $icon = trim($_POST['icon']); if (empty($name)) { $error = 'Category name is required.'; } else { try { createCategory($name, $description, $color, $icon); $message = 'Category created successfully!'; } catch (Exception $e) { $error = 'Error creating category: ' . $e->getMessage(); } } break; case 'update': $id = (int)$_POST['id']; $name = trim($_POST['name']); $description = trim($_POST['description']); $color = trim($_POST['color']); $icon = trim($_POST['icon']); if (empty($name)) { $error = 'Category name is required.'; } else { try { if (updateCategory($id, $name, $description, $color, $icon)) { $message = 'Category updated successfully!'; } else { $error = 'Error updating category.'; } } catch (Exception $e) { $error = 'Error updating category: ' . $e->getMessage(); } } break; case 'delete': $id = (int)$_POST['id']; try { if (deleteCategory($id)) { $message = 'Category deleted successfully!'; } else { $error = 'Error deleting category.'; } } catch (Exception $e) { $error = 'Error deleting category: ' . $e->getMessage(); } break; } } } // Get all categories try { $categories = getAllCategories(); } catch (Exception $e) { $error = 'Error loading categories: ' . $e->getMessage(); $categories = []; } ?>
Manage categories for organizing your maps and content
= htmlspecialchars($category['description']) ?>
Create your first category to get started.