diff --git a/admin.php b/admin.php index bfb4070..7cfae93 100644 --- a/admin.php +++ b/admin.php @@ -408,8 +408,21 @@ if (isset($_GET['delete_resource'])) { exit; } +// Handle Guild System Config +if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["action"]) && $_POST["action"] === "update_guild_requirements") { + $db->exec("DELETE FROM guild_creation_requirements"); + $stmt = $db->prepare("INSERT INTO guild_creation_requirements (resource_id, quantity) VALUES (?, ?)"); + foreach ($_POST as $key => $value) { + if (strpos($key, "res_") === 0 && (int)$value > 0) { + $res_id = (int)str_replace("res_", "", $key); + $stmt->execute([$res_id, (int)$value]); + } + } + header("Location: admin.php?tab=guilds&success=1"); + exit; +} -// Handle Grade CRUD +// Handle Lootbox CRUD if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'upsert_grade') { $id = (int)$_POST['id']; $name = trim($_POST['name']); @@ -423,22 +436,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST[' exit; } - $image_url = null; - if ($id > 0) { - $stmt_img = $db->prepare("SELECT image_url FROM grades 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 = "grade_" . time() . "." . $ext; - if (!is_dir("assets/images/grades")) mkdir("assets/images/grades", 0775, true); - $target = "assets/images/grades/" . $filename; - if (move_uploaded_file($_FILES["image"]["tmp_name"], $target)) { - $image_url = $target; - } - } - // Check for overlap if user_type is 'utilisateur' if ($user_type === 'utilisateur') { $check = db()->prepare("SELECT id FROM grades WHERE user_type = 'utilisateur' AND id != ? AND NOT (max_level < ? OR min_level > ?)"); @@ -451,11 +448,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST[' try { if ($id > 0) { - $stmt = db()->prepare("UPDATE grades SET name = ?, slug = ?, user_type = ?, min_level = ?, max_level = ?, image_url = ? WHERE id = ?"); - $stmt->execute([$name, $slug, $user_type, $min_level, $max_level, $image_url, $id]); + $stmt = db()->prepare("UPDATE grades SET name = ?, slug = ?, user_type = ?, min_level = ?, max_level = ? WHERE id = ?"); + $stmt->execute([$name, $slug, $user_type, $min_level, $max_level, $id]); } else { - $stmt = db()->prepare("INSERT INTO grades (name, slug, user_type, min_level, max_level, image_url) VALUES (?, ?, ?, ?, ?, ?)"); - $stmt->execute([$name, $slug, $user_type, $min_level, $max_level, $image_url]); + $stmt = db()->prepare("INSERT INTO grades (name, slug, user_type, min_level, max_level) VALUES (?, ?, ?, ?, ?)"); + $stmt->execute([$name, $slug, $user_type, $min_level, $max_level]); } header('Location: ?tab=ranks&success=1'); exit; @@ -464,7 +461,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST[' exit; } } -if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["action"]) && $_POST["action"] === "upsert_lootbox") { +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'upsert_lootbox') { $id = (int)$_POST['id']; $name = $_POST['name']; $slug = $_POST['slug']; @@ -712,7 +709,7 @@ if ($tab === 'users') {
- +
@@ -730,7 +727,11 @@ if ($tab === 'users') { Utilisateurs Niveaux Grades +} elseif ($tab === 'guilds') { + $guild_requirements = $db->query("SELECT r.id, r.name, gr.quantity FROM game_resources r LEFT JOIN guild_creation_requirements gr ON r.id = gr.resource_id")->fetchAll(); + Titres & Badges + "> Gestion de guilde @@ -859,7 +860,7 @@ if ($tab === 'users') {

Ajouter / Modifier un Grade

-
+
@@ -879,10 +880,6 @@ if ($tab === 'users') {
-
- - -
@@ -904,7 +901,6 @@ if ($tab === 'users') { - @@ -914,21 +910,14 @@ if ($tab === 'users') { - + -
Image Nom Slug Type
Aucun grade configuré.
Aucun grade configuré.
- - ?v=" style="max-width: 40px; max-height: 40px;"> - - - - - - @@ -950,6 +939,29 @@ if ($tab === 'users') {
+} elseif ($tab === 'guilds') { + $guild_requirements = $db->query("SELECT r.id, r.name, gr.quantity FROM game_resources r LEFT JOIN guild_creation_requirements gr ON r.id = gr.resource_id")->fetchAll(); + + +

Gestion des Guildes

+
+

Coût de création d'une guilde

+ + + + + + + + + + + + +
RessourceQuantité requise
" value="">
+ + +

Titres & Badges

@@ -1679,11 +1691,6 @@ if ($tab === 'users') { document.getElementById('log_id').value = 0; document.getElementById('logForm').reset(); } - - -
- - - document.getElementById('items_container').innerHTML = ''; - if (data.items && data.items.length > 0) { - data.items.forEach((i, idx) => addItemRow(i.resource_slug, i.probability, i.quantity_min, i.quantity_max, i.is_guaranteed)); + +

Système de Lootboxes

+
+

Créer / Modifier une Lootbox

+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ +
+ +
+ + +
+
Nb Total
+
Chance (%)
+
+
+ +
+ +
+ +
+ + +
+ + +
+
Type
+
Ressource / Objet
+
Chance (%)
+
Qté Min
+
Qté Max
+
+
+ +
+ +
+ +
+
+ +
+ + +
+
+
+ + + + + + + + + + + + + + + +
NomSlugObjets Directs (100%)Nb Total (%)Pool Aléatoire (%)Actions
+ + $i['is_guaranteed']); + foreach ($directs as $d): ?> +
+ + (Qté: -) +
+ Aucun"; ?> +
+
+ + +
+ objet(s): + % +
+ +
+
+ + !$i['is_guaranteed']); + foreach ($pool as $i): ?> +
+ (Rien)'; ?>: + % + (Qté: -) +
+ +
+
+ + Suppr +
+ +
+ + - + \ No newline at end of file diff --git a/assets/pasted-20260306-003105-340a1f6d.png b/assets/pasted-20260306-003105-340a1f6d.png new file mode 100644 index 0000000..0c28bfd Binary files /dev/null and b/assets/pasted-20260306-003105-340a1f6d.png differ diff --git a/db/migrate_guild_system.php b/db/migrate_guild_system.php new file mode 100644 index 0000000..1be1ba2 --- /dev/null +++ b/db/migrate_guild_system.php @@ -0,0 +1,23 @@ +exec("CREATE TABLE IF NOT EXISTS guilds ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255) NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +)"); + +$pdo->exec("CREATE TABLE IF NOT EXISTS guild_creation_requirements ( + id INT AUTO_INCREMENT PRIMARY KEY, + resource_id INT NOT NULL, + quantity INT NOT NULL, + FOREIGN KEY (resource_id) REFERENCES game_resources(id) +)"); + +$pdo->exec("CREATE TABLE IF NOT EXISTS guild_restrictions ( + id INT AUTO_INCREMENT PRIMARY KEY, + restriction_key VARCHAR(255) NOT NULL, + restriction_value TEXT +)");