prepare("SELECT role FROM users WHERE id = ?"); $user_stmt->execute([$user_id]); $current_user = $user_stmt->fetch(); if (!$current_user || $current_user['role'] !== 'admin') { die("Accès refusé. Cette console est réservée aux Administrateurs."); } $tab = isset($_GET['tab']) ? $_GET['tab'] : 'users'; // --- HANDLERS --- // Handle User Role Update if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'update_user_role') { $target_user_id = (int)$_POST['target_user_id']; $new_role = $_POST['new_role']; if (in_array($new_role, ['user', 'gm', 'admin'])) { $stmt = $db->prepare("UPDATE users SET role = ? WHERE id = ?"); $stmt->execute([$new_role, $target_user_id]); } header("Location: admin.php?tab=users&success=1"); exit; } // Handle Celestial Object Type CRUD if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'upsert_object_type') { $id = (int)$_POST['id']; $name = $_POST['name']; $slug = $_POST['slug']; $icon = $_POST['icon']; $description = $_POST['description']; $modifier_ids = isset($_POST['modifiers']) ? $_POST['modifiers'] : []; if ($id > 0) { $stmt = $db->prepare("UPDATE celestial_object_types SET name = ?, slug = ?, icon = ?, description = ? WHERE id = ?"); $stmt->execute([$name, $slug, $icon, $description, $id]); } else { $stmt = $db->prepare("INSERT INTO celestial_object_types (name, slug, icon, description) VALUES (?, ?, ?, ?)"); $stmt->execute([$name, $slug, $icon, $description]); $id = $db->lastInsertId(); } // Sync modifiers $db->prepare("DELETE FROM celestial_object_type_modifiers WHERE celestial_object_type_id = ?")->execute([$id]); if (!empty($modifier_ids)) { $ins = $db->prepare("INSERT INTO celestial_object_type_modifiers (celestial_object_type_id, modifier_id) VALUES (?, ?)"); foreach ($modifier_ids as $mid) { $ins->execute([$id, (int)$mid]); } } header("Location: admin.php?tab=objects&success=1"); exit; } if (isset($_GET['delete_object'])) { $id = (int)$_GET['delete_object']; $db->prepare("DELETE FROM celestial_object_types WHERE id = ?")->execute([$id]); header("Location: admin.php?tab=objects&success=1"); exit; } // Handle Status CRUD if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'upsert_status') { $id = (int)$_POST['id']; $name = $_POST['name']; $slug = $_POST['slug']; $color = $_POST['color']; $description = $_POST['description']; if ($id > 0) { $stmt = $db->prepare("UPDATE celestial_object_statuses SET name = ?, slug = ?, color = ?, description = ? WHERE id = ?"); $stmt->execute([$name, $slug, $color, $description, $id]); } else { $stmt = $db->prepare("INSERT INTO celestial_object_statuses (name, slug, color, description) VALUES (?, ?, ?, ?)"); $stmt->execute([$name, $slug, $color, $description]); } header("Location: admin.php?tab=statuses&success=1"); exit; } if (isset($_GET['delete_status'])) { $id = (int)$_GET['delete_status']; $db->prepare("DELETE FROM celestial_object_statuses WHERE id = ?")->execute([$id]); header("Location: admin.php?tab=statuses&success=1"); exit; } // Handle Settlement Type CRUD if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'upsert_settlement_type') { $id = (int)$_POST['id']; $name = $_POST['name']; $slug = $_POST['slug']; $description = $_POST['description']; if ($id > 0) { $stmt = $db->prepare("UPDATE settlement_types SET name = ?, slug = ?, description = ? WHERE id = ?"); $stmt->execute([$name, $slug, $description, $id]); } else { $stmt = $db->prepare("INSERT INTO settlement_types (name, slug, description) VALUES (?, ?, ?)"); $stmt->execute([$name, $slug, $description]); } header("Location: admin.php?tab=settlement_types&success=1"); exit; } if (isset($_GET['delete_settlement_type'])) { $id = (int)$_GET['delete_settlement_type']; $db->prepare("DELETE FROM settlement_types WHERE id = ?")->execute([$id]); header("Location: admin.php?tab=settlement_types&success=1"); exit; } // Handle Modifiers CRUD if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'upsert_modifier') { $id = (int)$_POST['id']; $name = $_POST['name']; $type = $_POST['type']; $description = $_POST['description']; if ($id > 0) { $stmt = $db->prepare("UPDATE modifiers SET name = ?, type = ?, description = ? WHERE id = ?"); $stmt->execute([$name, $type, $description, $id]); } else { $stmt = $db->prepare("INSERT INTO modifiers (name, type, description) VALUES (?, ?, ?)"); $stmt->execute([$name, $type, $description]); } header("Location: admin.php?tab=modifiers&success=1"); exit; } if (isset($_GET['delete_modifier'])) { $id = (int)$_GET['delete_modifier']; $db->prepare("DELETE FROM modifiers WHERE id = ?")->execute([$id]); header("Location: admin.php?tab=modifiers&success=1"); exit; } // --- DATA FETCHING --- $users_list = []; $objects_list = []; $statuses_list = []; $settlement_types_list = []; $modifiers_list = []; if ($tab === 'users') { $users_list = $db->query("SELECT id, username, email, role FROM users ORDER BY username ASC")->fetchAll(); } elseif ($tab === 'objects') { $objects_list = $db->query("SELECT * FROM celestial_object_types ORDER BY name ASC")->fetchAll(); // For each object, get its modifiers foreach ($objects_list as &$obj) { $stmt = $db->prepare("SELECT modifier_id FROM celestial_object_type_modifiers WHERE celestial_object_type_id = ?"); $stmt->execute([$obj['id']]); $obj['modifier_ids'] = $stmt->fetchAll(PDO::FETCH_COLUMN); } $modifiers_list = $db->query("SELECT * FROM modifiers ORDER BY type, name ASC")->fetchAll(); } elseif ($tab === 'statuses') { $statuses_list = $db->query("SELECT * FROM celestial_object_statuses ORDER BY name ASC")->fetchAll(); } elseif ($tab === 'settlement_types') { $settlement_types_list = $db->query("SELECT * FROM settlement_types ORDER BY name ASC")->fetchAll(); } elseif ($tab === 'modifiers') { $modifiers_list = $db->query("SELECT * FROM modifiers ORDER BY type, name ASC")->fetchAll(); } ?> Console Admin - Nexus

CONSOLE ADMIN

Opération effectuée avec succès.
Utilisateurs Objets Célestes Bonus & Malus Statuts / États Types d'Établissements

Gestion des Rôles

UtilisateurEmailRôle ActuelNouveau Rôle

Objets Célestes

Ajouter / Modifier un Objet

IcôneNomSlugBonus/MalusActions
prepare("SELECT m.name, m.type FROM modifiers m JOIN celestial_object_type_modifiers cotm ON m.id = cotm.modifier_id WHERE cotm.celestial_object_type_id = ?"); $stmt->execute([$o['id']]); $m_list = $stmt->fetchAll(); foreach ($m_list as $ml): ?> Suppr

Gestion des Bonus & Malus

Ajouter / Modifier un Modificateur

TypeNomDescriptionActions
Suppr

Statuts / États

Ajouter / Modifier un Statut

CouleurNomSlugActions
Suppr

Types d'Établissements

Ajouter / Modifier un Type d'Établissement

NomSlugDescriptionActions
Suppr