From 1bb89f9b7ef36d9b11e4cbd3c97a369fbd746c82 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 22 Feb 2026 10:20:30 +0000 Subject: [PATCH] Autosave: 20260222-102030 --- admin.php | 151 +++++++++- .../celestial/black_hole_1771735023.png | Bin 0 -> 7647 bytes .../celestial/planet_desert_01_1771755173.png | Bin 0 -> 5444 bytes .../planet_volcanic_02_1771733154.png | Bin 0 -> 5928 bytes .../celestial/planet_volcanic_1771732666.png | Bin 0 -> 6261 bytes assets/images/celestial/star_1771754685.png | Bin 0 -> 13627 bytes assets/pasted-20260222-040104-75ec63e6.png | Bin 0 -> 37860 bytes db/add_fa_icon_to_factions.php | 16 + db/migrate_factions.php | 35 +++ gm_console.php | 281 +++++++++++------- index.php | 210 ++++++++++--- 11 files changed, 532 insertions(+), 161 deletions(-) create mode 100644 assets/images/celestial/black_hole_1771735023.png create mode 100644 assets/images/celestial/planet_desert_01_1771755173.png create mode 100644 assets/images/celestial/planet_volcanic_02_1771733154.png create mode 100644 assets/images/celestial/planet_volcanic_1771732666.png create mode 100644 assets/images/celestial/star_1771754685.png create mode 100644 assets/pasted-20260222-040104-75ec63e6.png create mode 100644 db/add_fa_icon_to_factions.php create mode 100644 db/migrate_factions.php 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

Ajouter / Modifier un Objet

-
+
@@ -295,6 +352,10 @@ if ($tab === 'users') {
+
+ + +
@@ -323,11 +384,17 @@ if ($tab === 'users') {
- + - + @@ -392,7 +459,7 @@ if ($tab === 'users') { @@ -439,7 +506,7 @@ if ($tab === 'users') { @@ -482,13 +549,65 @@ if ($tab === 'users') {
IcôneNomSlugBonus/MalusActions
VisuelNomSlugBonus/MalusActions
+ + + + + + @@ -342,7 +409,7 @@ if ($tab === 'users') { - + Suppr
- + Suppr
- + Suppr
- + Suppr
+ + +

Gestion des Factions

+
+

Ajouter / Modifier une Faction

+ + + +
+
+ + +
+
+ + +
+
+ + +
+
+ + + +
+ + + + + + + + + + + + +
VisuelNomActions
+ + + + + + + + + + + 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; } - + \ No newline at end of file diff --git a/assets/images/celestial/black_hole_1771735023.png b/assets/images/celestial/black_hole_1771735023.png new file mode 100644 index 0000000000000000000000000000000000000000..9781bd1c7b358b85e0b8ff11ad154305b5c138ae GIT binary patch literal 7647 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 literal 0 HcmV?d00001 diff --git a/assets/images/celestial/planet_desert_01_1771755173.png b/assets/images/celestial/planet_desert_01_1771755173.png new file mode 100644 index 0000000000000000000000000000000000000000..05bb4179e2b44255f0934a130cfaef06daec678b GIT binary patch literal 5444 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 KMNUMnLSTY)PeOG7 literal 0 HcmV?d00001 diff --git a/assets/images/celestial/planet_volcanic_1771732666.png b/assets/images/celestial/planet_volcanic_1771732666.png new file mode 100644 index 0000000000000000000000000000000000000000..e744233c1233d8e7ff546a047d158fd046544b17 GIT binary patch literal 6261 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 literal 0 HcmV?d00001 diff --git a/assets/pasted-20260222-040104-75ec63e6.png b/assets/pasted-20260222-040104-75ec63e6.png new file mode 100644 index 0000000000000000000000000000000000000000..be0b39bec36d3c009c740c2620e94854708f9076 GIT binary patch literal 37860 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 literal 0 HcmV?d00001 diff --git a/db/add_fa_icon_to_factions.php b/db/add_fa_icon_to_factions.php new file mode 100644 index 0000000..d5249ab --- /dev/null +++ b/db/add_fa_icon_to_factions.php @@ -0,0 +1,16 @@ +query("DESCRIBE factions")->fetchAll(PDO::FETCH_COLUMN); + if (!in_array('fa_icon', $cols)) { + $db->exec("ALTER TABLE factions ADD COLUMN fa_icon VARCHAR(50) NULL AFTER image_url"); + echo "Column 'fa_icon' added to 'factions' table.\n"; + } else { + echo "Column 'fa_icon' already exists in 'factions' table.\n"; + } +} catch (PDOException $e) { + die("Migration failed: " . $e->getMessage()); +} + diff --git a/db/migrate_factions.php b/db/migrate_factions.php new file mode 100644 index 0000000..4c2cf56 --- /dev/null +++ b/db/migrate_factions.php @@ -0,0 +1,35 @@ +exec("CREATE TABLE IF NOT EXISTS factions ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL, + image_url VARCHAR(255) NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + )"); + echo "Table 'factions' created or already exists.\n"; + + // Add faction_id to planets table + $cols = $db->query("DESCRIBE planets")->fetchAll(PDO::FETCH_COLUMN); + if (!in_array('faction_id', $cols)) { + $db->exec("ALTER TABLE planets ADD COLUMN faction_id INT DEFAULT NULL AFTER status"); + echo "Column 'faction_id' added to 'planets' table.\n"; + } else { + echo "Column 'faction_id' already exists in 'planets' table.\n"; + } + + // Check if 'Aucune' faction exists + $stmt = $db->prepare("SELECT COUNT(*) FROM factions WHERE name = 'Aucune'"); + $stmt->execute(); + if ($stmt->fetchColumn() == 0) { + $db->exec("INSERT INTO factions (name) VALUES ('Aucune')"); + echo "Default faction 'Aucune' created.\n"; + } + +} catch (PDOException $e) { + die("Migration failed: " . $e->getMessage()); +} + diff --git a/gm_console.php b/gm_console.php index 001c298..51b90ca 100644 --- a/gm_console.php +++ b/gm_console.php @@ -20,13 +20,15 @@ if (!$current_user || ($current_user['role'] !== 'admin' && $current_user['role' $is_admin = ($current_user['role'] === 'admin'); -// Fetch Dynamic Types, Statuses, and Settlement Types - Sorted Alphabetically +// Fetch Dynamic Types, Statuses, Settlement Types, and Factions $object_types_db = $db->query("SELECT * FROM celestial_object_types ORDER BY name ASC")->fetchAll(PDO::FETCH_ASSOC); $statuses_db = $db->query("SELECT * FROM celestial_object_statuses ORDER BY name ASC")->fetchAll(PDO::FETCH_ASSOC); $settlement_types_db = $db->query("SELECT * FROM settlement_types ORDER BY name ASC")->fetchAll(PDO::FETCH_ASSOC); +$factions_db = $db->query("SELECT * FROM factions ORDER BY name ASC")->fetchAll(PDO::FETCH_ASSOC); $object_types_map = []; foreach($object_types_db as $ot) $object_types_map[$ot['slug']] = $ot; $statuses_map = []; foreach($statuses_db as $s) $statuses_map[$s['slug']] = $s; +$factions_map = []; foreach($factions_db as $f) $factions_map[$f['id']] = $f; // Handle Planet/Slot Update if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'update_slot') { @@ -37,6 +39,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST[' $name = $_POST['name']; $type = $_POST['type']; $status = $_POST['status']; + $faction_id = (int)$_POST['faction_id']; $orbital = (int)$_POST['orbital_control']; $terrestrial = (int)$_POST['terrestrial_control']; @@ -47,12 +50,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST[' } } else { if ($slot_id > 0) { - $stmt = $db->prepare("UPDATE planets SET name = ?, type = ?, status = ?, orbital_control = ?, terrestrial_control = ? WHERE id = ?"); - $stmt->execute([$name, $type, $status, $orbital, $terrestrial, $slot_id]); + $stmt = $db->prepare("UPDATE planets SET name = ?, type = ?, status = ?, faction_id = ?, orbital_control = ?, terrestrial_control = ? WHERE id = ?"); + $stmt->execute([$name, $type, $status, $faction_id, $orbital, $terrestrial, $slot_id]); $planet_id = $slot_id; } else { - $stmt = $db->prepare("INSERT INTO planets (galaxy_id, sector_id, slot, name, type, status, orbital_control, terrestrial_control) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); - $stmt->execute([$galaxy_id, $sector_id, $slot_num, $name, $type, $status, $orbital, $terrestrial]); + $stmt = $db->prepare("INSERT INTO planets (galaxy_id, sector_id, slot, name, type, status, faction_id, orbital_control, terrestrial_control) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); + $stmt->execute([$galaxy_id, $sector_id, $slot_num, $name, $type, $status, $faction_id, $orbital, $terrestrial]); $planet_id = $db->lastInsertId(); } @@ -72,7 +75,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST[' $sent_city_ids[] = $c_id; } else { $stmt = $db->prepare("INSERT INTO cities (planet_id, name, settlement_type_id) VALUES (?, ?, ?)"); - $stmt->execute([$planet_id, $c_name, $c_type_id]); + $stmt->execute([$c_name, $c_type_id]); $sent_city_ids[] = $db->lastInsertId(); } } @@ -100,13 +103,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST[' $s_name = $_POST['sector_name']; $s_status = $_POST['sector_status']; - $stmt = $db->prepare("SELECT id FROM sectors WHERE id = ?"); - $stmt->execute([$sector_id]); - if ($stmt->fetch()) { - $db->prepare("UPDATE sectors SET name = ?, status = ? WHERE id = ?")->execute([$s_name, $s_status, $sector_id]); - } else { - $db->prepare("INSERT INTO sectors (id, name, status, galaxy_id) VALUES (?, ?, ?, ?)")->execute([$s_name, $s_status, $sector_id, $galaxy_id]); - } + $stmt = $db->prepare("INSERT INTO sectors (id, galaxy_id, name, status) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE name = ?, status = ?"); + $stmt->execute([$sector_id, $galaxy_id, $s_name, $s_status, $s_name, $s_status]); + header("Location: gm_console.php?view=sector&galaxy_id=$galaxy_id§or_id=$sector_id&success=1"); exit; } @@ -117,20 +116,18 @@ $sector_id = isset($_GET['sector_id']) ? (int)$_GET['sector_id'] : 1; $grid_size = 36; if ($view === 'sector') { - // Fetch planets $stmt = $db->prepare("SELECT * FROM planets WHERE galaxy_id = ? AND sector_id = ? AND slot BETWEEN 1 AND ?"); $stmt->execute([$galaxy_id, $sector_id, $grid_size]); $objects_raw = $stmt->fetchAll(); $grid = array_fill(1, $grid_size, null); $planet_ids = []; - foreach ($objects_raw as $obj) { - $grid[$obj['slot']] = $obj; + foreach ($objects_raw as $obj) { + $grid[$obj['slot']] = $obj; $planet_ids[] = $obj['id']; $grid[$obj['slot']]['cities'] = []; } - // Fetch ALL cities for these planets if (!empty($planet_ids)) { $placeholders = implode(',', array_fill(0, count($planet_ids), '?')); $stmt = $db->prepare("SELECT * FROM cities WHERE planet_id IN ($placeholders)"); @@ -144,26 +141,24 @@ if ($view === 'sector') { } } } - - $stmt = $db->prepare("SELECT * FROM sectors WHERE id = ?"); + $stmt = $db->prepare("SELECT name FROM sectors WHERE id = ?"); $stmt->execute([$sector_id]); $sector_info = $stmt->fetch(); -} elseif ($view === 'galaxy') { +} else { $stmt = $db->prepare("SELECT sector_id, slot, status, type FROM planets WHERE galaxy_id = ? ORDER BY sector_id, slot ASC"); $stmt->execute([$galaxy_id]); $all_planets = $stmt->fetchAll(); $sector_data = []; + $active_sectors = []; foreach ($all_planets as $p) { $sector_data[$p['sector_id']][$p['slot']] = ['status' => $p['status'], 'type' => $p['type']]; + if (!in_array($p['sector_id'], $active_sectors)) { $active_sectors[] = (int)$p['sector_id']; } } - $stmt = $db->prepare("SELECT id, status FROM sectors WHERE galaxy_id = ?"); - $stmt->execute([$galaxy_id]); - $global_sector_statuses = $stmt->fetchAll(PDO::FETCH_KEY_PAIR); } function getStatusColor($status, $type, $statuses_map, $object_types_map) { - if (isset($statuses_map[$status])) return $statuses_map[$status]['color']; - return 'rgba(255,255,255,0.05)'; + if ($type === 'empty') return 'rgba(255,255,255,0.05)'; + return $statuses_map[$status]['color'] ?? 'rgba(255,255,255,0.05)'; } ?> @@ -174,73 +169,130 @@ function getStatusColor($status, $type, $statuses_map, $object_types_map) {
-
- Maître du Jeu: - -
+
Connecté en tant que MJ: @
-

Sélecteur de Secteur

+

Navigateur de Galaxie

- + -
-
+
Retour

Secteur :

@@ -267,13 +319,31 @@ function getStatusColor($status, $type, $statuses_map, $object_types_map) {
- + +
+ + + + + + + +
+
- + + + + +
@@ -306,19 +376,29 @@ function getStatusColor($status, $type, $statuses_map, $object_types_map) {
-
- - +
+
+ + +
+
+ + +
@@ -400,48 +480,47 @@ function getStatusColor($status, $type, $statuses_map, $object_types_map) { const sel = (data && data.settlement_type_id == t.id) ? 'selected' : ''; html += ``; }); - html += `
`; - html += `
`; + html += `
`; div.innerHTML = html; container.appendChild(div); } function editSlot(num, data) { - document.getElementById('modalTitle').innerText = 'Modifier la case n°' + num; document.getElementById('form_slot_num').value = num; - document.getElementById('settlementsContainer').innerHTML = ''; - settlementIndex = 0; - + document.getElementById('form_slot_id').value = data ? data.id : 0; + document.getElementById('modalTitle').innerText = 'Éditer Case #' + num; + if (data) { - document.getElementById('form_slot_id').value = data.id; document.getElementById('form_name').value = data.name; document.getElementById('form_type').value = data.type; document.getElementById('form_status').value = data.status; + document.getElementById('form_faction').value = data.faction_id || 0; document.getElementById('form_orbital').value = data.orbital_control; document.getElementById('form_terrestrial').value = data.terrestrial_control; + // Load settlements + document.getElementById('settlementsContainer').innerHTML = ''; + settlementIndex = 0; if (data.cities && data.cities.length > 0) { data.cities.forEach(c => addSettlementRow(c)); } } else { - document.getElementById('form_slot_id').value = 0; - document.getElementById('form_name').value = 'Objet ' + num; - document.getElementById('form_type').value = 'planet'; - document.getElementById('form_status').value = 'empty'; + document.getElementById('form_name').value = ''; + document.getElementById('form_type').value = 'empty'; + document.getElementById('form_status').value = 'neutral'; + document.getElementById('form_faction').value = document.querySelector('#form_faction option').value; document.getElementById('form_orbital').value = 0; document.getElementById('form_terrestrial').value = 0; + document.getElementById('settlementsContainer').innerHTML = ''; } + document.getElementById('editModal').style.display = 'flex'; } + function closeModal() { document.getElementById('editModal').style.display = 'none'; } function editSector() { document.getElementById('sectorModal').style.display = 'flex'; } function closeSectorModal() { document.getElementById('sectorModal').style.display = 'none'; } - - window.onclick = function(event) { - if (event.target == document.getElementById('editModal')) closeModal(); - if (event.target == document.getElementById('sectorModal')) closeSectorModal(); - } - + \ No newline at end of file diff --git a/index.php b/index.php index 1b9cd9b..b71ca87 100644 --- a/index.php +++ b/index.php @@ -15,9 +15,10 @@ $view = isset($_GET['view']) ? $_GET['view'] : 'sector'; $galaxy_id = isset($_GET['galaxy_id']) ? (int)$_GET['galaxy_id'] : 1; $sector_id = isset($_GET['sector_id']) ? (int)$_GET['sector_id'] : 1; -// Fetch Dynamic Types and Statuses +// Fetch Dynamic Types, Statuses and Factions $object_types_db = $db->query("SELECT * FROM celestial_object_types")->fetchAll(PDO::FETCH_ASSOC); $statuses_db = $db->query("SELECT * FROM celestial_object_statuses")->fetchAll(PDO::FETCH_ASSOC); +$factions_db = $db->query("SELECT * FROM factions")->fetchAll(PDO::FETCH_ASSOC); $object_types_map = []; foreach($object_types_db as $ot) { @@ -29,6 +30,7 @@ foreach($object_types_db as $ot) { } $statuses_map = []; foreach($statuses_db as $s) $statuses_map[$s['slug']] = $s; +$factions_map = []; foreach($factions_db as $f) $factions_map[$f['id']] = $f; // Grid size: 6x6 = 36 slots per sector $grid_size = 36; @@ -98,56 +100,148 @@ function getStatusColor($status, $statuses_map) { - - <?php echo $page_title; ?> + Nexus - <?php echo $page_title; ?>