diff --git a/admin.php b/admin.php index 3cd05b7..8b9c3bb 100644 --- a/admin.php +++ b/admin.php @@ -125,6 +125,76 @@ if (isset($_GET['delete_object'])) { exit; } +// Handle Title CRUD +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'upsert_title') { + $id = (int)$_POST['id']; + $name = $_POST["name"]; + $slug = $_POST['slug']; + $allowed_user_type = $_POST['allowed_user_type']; + $required_level = (int)$_POST['required_level']; + + if ($id > 0) { + $stmt = $db->prepare("UPDATE titles SET name = ?, slug = ?, allowed_user_type = ?, required_level = ? WHERE id = ?"); + $stmt->execute([$name, $slug, $allowed_user_type, $required_level, $id]); + } else { + $stmt = $db->prepare("INSERT INTO titles (name, slug, allowed_user_type, required_level) VALUES (?, ?, ?, ?)"); + $stmt->execute([$name, $slug, $allowed_user_type, $required_level]); + } + header("Location: admin.php?tab=badges&success=1"); + exit; +} + +// Handle Badge CRUD +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'upsert_badge') { + $id = (int)$_POST['id']; + $name = $_POST["name"]; + $slug = $_POST['slug']; + $allowed_user_type = $_POST['allowed_user_type']; + $required_level = (int)$_POST['required_level']; + + $image_url = null; + if ($id > 0) { + $stmt_img = $db->prepare("SELECT image_url FROM badges 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 = "badge_" . $slug . "_" . time() . "." . $ext; + $target = "assets/images/badges/" . $filename; + if (!is_dir("assets/images/badges/")) mkdir("assets/images/badges/", 0775, true); + if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) { + $image_url = $target; + } + } + + if ($id > 0) { + $stmt = $db->prepare("UPDATE badges SET name = ?, slug = ?, allowed_user_type = ?, required_level = ?, image_url = ? WHERE id = ?"); + $stmt->execute([$name, $slug, $allowed_user_type, $required_level, $image_url, $id]); + } else { + $stmt = $db->prepare("INSERT INTO badges (name, slug, allowed_user_type, required_level, image_url) VALUES (?, ?, ?, ?, ?)"); + $stmt->execute([$name, $slug, $allowed_user_type, $required_level, $image_url]); + } + header("Location: admin.php?tab=badges&success=1"); + exit; +} + +// Handle Title/Badge Deletion +if (isset($_GET['delete_title'])) { + $id = (int)$_GET['delete_title']; + $db->prepare("DELETE FROM titles WHERE id = ?")->execute([$id]); + header("Location: admin.php?tab=badges&success=deleted"); + exit; +} +if (isset($_GET['delete_badge'])) { + $id = (int)$_GET['delete_badge']; + $db->prepare("DELETE FROM badges WHERE id = ?")->execute([$id]); + header("Location: admin.php?tab=badges&success=deleted"); + exit; +} + + // Handle Status CRUD if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["action"]) && $_POST["action"] === "upsert_status") { $id = (int)$_POST["id"]; @@ -574,6 +644,8 @@ $factions_list = []; $resources_list = []; $lootboxes_list = []; $project_logs_list = []; +$titles_list = []; +$badges_list = []; $levels_list = []; $ranks_list = []; $guild_requirements = []; @@ -615,6 +687,9 @@ if ($tab === 'users') { $resources_list = $db->query("SELECT * FROM game_resources ORDER BY name ASC")->fetchAll(); } elseif ($tab === 'project_logs') { $project_logs_list = $db->query("SELECT * FROM project_logs ORDER BY created_at DESC")->fetchAll(); +} elseif ($tab === 'badges') { + $titles_list = $db->query("SELECT * FROM titles ORDER BY name ASC")->fetchAll(); + $badges_list = $db->query("SELECT * FROM badges ORDER BY name ASC")->fetchAll(); } elseif ($tab === 'ranks') { $ranks_list = $db->query("SELECT * FROM grades ORDER BY user_type DESC, min_level ASC")->fetchAll(); } elseif ($tab === 'lootboxes') { @@ -987,13 +1062,150 @@ if ($tab === 'users') { - +
À configurer
+| Titre | +Slug | +Niveau | +Actions | +
|---|---|---|---|
| + | |
+ + | + + X + | +
| Visuel | +Badge | +Slug | +Actions | +
|---|---|---|---|
|
+ |
+ + | |
+ + + X + | +