diff --git a/admin.php b/admin.php
index e7ea284..19571c1 100644
--- a/admin.php
+++ b/admin.php
@@ -42,13 +42,29 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['
$icon = $_POST['icon'];
$description = $_POST['description'];
$modifier_ids = isset($_POST['modifiers']) ? $_POST['modifiers'] : [];
+
+ $image_url = null;
+ if ($id > 0) {
+ $stmt_img = $db->prepare("SELECT image_url FROM celestial_object_types WHERE id = ?");
+ $stmt_img->execute([$id]);
+ $image_url = $stmt_img->fetchColumn();
+ }
+
+ if (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) {
+ $ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
+ $filename = $slug . "_" . time() . "." . $ext;
+ $target = "assets/images/celestial/" . $filename;
+ if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
+ $image_url = $target;
+ }
+ }
if ($id > 0) {
- $stmt = $db->prepare("UPDATE celestial_object_types SET name = ?, slug = ?, icon = ?, description = ? WHERE id = ?");
- $stmt->execute([$name, $slug, $icon, $description, $id]);
+ $stmt = $db->prepare("UPDATE celestial_object_types SET name = ?, slug = ?, icon = ?, description = ?, image_url = ? WHERE id = ?");
+ $stmt->execute([$name, $slug, $icon, $description, $image_url, $id]);
} else {
- $stmt = $db->prepare("INSERT INTO celestial_object_types (name, slug, icon, description) VALUES (?, ?, ?, ?)");
- $stmt->execute([$name, $slug, $icon, $description]);
+ $stmt = $db->prepare("INSERT INTO celestial_object_types (name, slug, icon, description, image_url) VALUES (?, ?, ?, ?, ?)");
+ $stmt->execute([$name, $slug, $icon, $description, $image_url]);
$id = $db->lastInsertId();
}
@@ -148,12 +164,50 @@ if (isset($_GET['delete_modifier'])) {
exit;
}
+// Handle Faction CRUD
+if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'upsert_faction') {
+ $id = (int)$_POST['id'];
+ $name = $_POST['name'];
+ $fa_icon = $_POST['fa_icon'];
+ $image_url = null;
+ if ($id > 0) {
+ $stmt_img = $db->prepare("SELECT image_url FROM factions WHERE id = ?");
+ $stmt_img->execute([$id]);
+ $image_url = $stmt_img->fetchColumn();
+ }
+ if (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) {
+ $ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
+ $filename = "faction_" . time() . "." . $ext;
+ $target = "assets/images/factions/" . $filename;
+ if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
+ $image_url = $target;
+ }
+ }
+ if ($id > 0) {
+ $stmt = $db->prepare("UPDATE factions SET name = ?, image_url = ?, fa_icon = ? WHERE id = ?");
+ $stmt->execute([$name, $image_url, $fa_icon, $id]);
+ } else {
+ $stmt = $db->prepare("INSERT INTO factions (name, image_url, fa_icon) VALUES (?, ?, ?)");
+ $stmt->execute([$name, $image_url, $fa_icon]);
+ }
+ header("Location: admin.php?tab=factions&success=1");
+ exit;
+}
+
+if (isset($_GET['delete_faction'])) {
+ $id = (int)$_GET['delete_faction'];
+ $db->prepare("DELETE FROM factions WHERE id = ?")->execute([$id]);
+ header("Location: admin.php?tab=factions&success=1");
+ exit;
+}
+
// --- DATA FETCHING ---
$users_list = [];
$objects_list = [];
$statuses_list = [];
$settlement_types_list = [];
$modifiers_list = [];
+$factions_list = [];
if ($tab === 'users') {
$users_list = $db->query("SELECT id, username, email, role FROM users ORDER BY username ASC")->fetchAll();
@@ -172,6 +226,8 @@ if ($tab === 'users') {
$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();
+} elseif ($tab === 'factions') {
+ $factions_list = $db->query("SELECT * FROM factions ORDER BY name ASC")->fetchAll();
}
?>
@@ -240,6 +296,7 @@ if ($tab === 'users') {
Bonus & Malus
Statuts / États
Types d'Établissements
+ Factions
@@ -279,7 +336,7 @@ if ($tab === 'users') {
Objets Célestes
@@ -323,11 +384,17 @@ if ($tab === 'users') {
- | Icône | Nom | Slug | Bonus/Malus | Actions |
+ | Visuel | Nom | Slug | Bonus/Malus | Actions |
- |
+
+
+
+
+
+
+ |
|
|
@@ -342,7 +409,7 @@ if ($tab === 'users') {
|
-
+
Suppr
|
@@ -392,7 +459,7 @@ if ($tab === 'users') {
|
|
-
+
Suppr
|
@@ -439,7 +506,7 @@ if ($tab === 'users') {
|
|
-
+
Suppr
|
@@ -482,13 +549,65 @@ if ($tab === 'users') {
|
|
-
+
Suppr
|
+
+
+ Gestion des Factions
+
+
+
+ | Visuel | Nom | Actions |
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+
+
+
+ Suppr
+
+ |
+
+
+
+
@@ -544,6 +663,14 @@ if ($tab === 'users') {
window.scrollTo(0,0);
}
function resetModifierForm() { document.getElementById('modifierForm').reset(); document.getElementById('mod_id').value = 0; }
+
+ function editFaction(data) {
+ document.getElementById('fac_id').value = data.id;
+ document.getElementById('fac_name').value = data.name;
+ document.getElementById('fac_fa_icon').value = data.fa_icon || '';
+ window.scrollTo(0,0);
+ }
+ function resetFactionForm() { document.getElementById('factionForm').reset(); document.getElementById('fac_id').value = 0; }