From 15a8dc02317f8916306bacaf06627d593a65657f Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sat, 7 Mar 2026 00:25:55 +0000 Subject: [PATCH] Alpha V2.5.7 --- admin.php | 31 ++++++++++++------ .../badges/badge_badge_green_1772794507.png | Bin 0 -> 6821 bytes .../badges/badge_badge_red_1772794493.png | Bin 0 -> 10604 bytes index.php | 28 ++++++++++++++-- 4 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 assets/images/badges/badge_badge_green_1772794507.png create mode 100644 assets/images/badges/badge_badge_red_1772794493.png diff --git a/admin.php b/admin.php index 8b9c3bb..d561bc8 100644 --- a/admin.php +++ b/admin.php @@ -130,15 +130,16 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST[' $id = (int)$_POST['id']; $name = $_POST["name"]; $slug = $_POST['slug']; + $color = $_POST["color"] ?? "#ffffff"; $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]); + $stmt = $db->prepare("UPDATE titles SET name = ?, slug = ?, allowed_user_type = ?, required_level = ?, color = ? WHERE id = ?"); + $stmt->execute([$name, $slug, $allowed_user_type, $required_level, $color, $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]); + $stmt = $db->prepare("INSERT INTO titles (name, slug, allowed_user_type, required_level, color) VALUES (?, ?, ?, ?, ?)"); + $stmt->execute([$name, $slug, $allowed_user_type, $required_level, $color]); } header("Location: admin.php?tab=badges&success=1"); exit; @@ -1097,6 +1098,10 @@ if ($tab === 'users') { +
+ + +
@@ -1110,17 +1115,19 @@ if ($tab === 'users') { Titre Slug Niveau + Couleur Actions - + +
- + X @@ -1183,9 +1190,10 @@ if ($tab === 'users') { Visuel Badge Slug + Niveau Actions - + @@ -1194,8 +1202,9 @@ if ($tab === 'users') { + - + X @@ -2235,12 +2244,14 @@ function editStatus(data) { document.getElementById('title_name').value = data.name; document.getElementById('title_slug').value = data.slug; document.getElementById('title_allowed_type').value = data.allowed_user_type; - document.getElementById('title_req_level').value = data.required_level; + document.getElementById("title_req_level").value = data.required_level; + document.getElementById("title_color").value = data.color || "#ffffff"; window.scrollTo({ top: 0, behavior: 'smooth' }); } function resetTitleForm() { document.getElementById('titleForm').reset(); - document.getElementById('title_id').value = 0; + document.getElementById("title_id").value = 0; + document.getElementById("title_color").value = "#ffffff"; } function editBadge(data) { document.getElementById('badge_id').value = data.id; diff --git a/assets/images/badges/badge_badge_green_1772794507.png b/assets/images/badges/badge_badge_green_1772794507.png new file mode 100644 index 0000000000000000000000000000000000000000..31e582ab2027b8e68640cc7051a4281de3eccea1 GIT binary patch literal 6821 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 aVhnCn+89e#&gSnQN2*F%iY4+^FaHO5C%T&e literal 0 HcmV?d00001 diff --git a/assets/images/badges/badge_badge_red_1772794493.png b/assets/images/badges/badge_badge_red_1772794493.png new file mode 100644 index 0000000000000000000000000000000000000000..f5035693858b66f39dc0f366d07c1a8af2e26be1 GIT binary patch literal 10604 zcmbWdWmFu`)-OCra3{D8PH-J8xCeKKL4yo1z~DN#1P=tagamgdxLY8&6N0-ZIG6u< z&N=t}@T~jc?bY2?wQK*j*XmxiDq2HL0ULuH0{{SED=Erqy|jKWPXHRq%R3~O((|ijc2p5-^mlvlOAE%4kdoCVfVc~yd@bYrJaB#T$IKwQwIh@_;|06-x z#@))z9tyK}aR&Y)(ZbTj113iIV(I_5-~?4w{jXqW_kRcKC1hOQ7Emr8PHrwIr+@tV z7q>f1%jW-@@xOAr>-a!zxU_8CT|C^ZUh-i}{~z#6?Ec@1{$YHvMnv7s{v|0E5Lp*1 z4<{REn3Aj*-OCK8wY{|nh?kpRP)3H2pP!c-B*eob#LFusFUKv!C(I)t#m6K69~u7} zmRE?6TV7gLN=}aNB@=Rd(jX~eAvqZtUIAfwkTm~)u}aSFFbiiZoB!ywf6@DItnmL6 zD|9_j?shIvpo}&M$f9atW$*kC;mtn@`X7H~ZQSfVZLH

9#8ijtBuQl z7x<_X#O8l+`gL(CG!G|tv4+V6D~8n~Fyci=DN03$;GyHcdo8CF78a7Mm=!wC7$26O z2th+md&PkOYOAYrU)sF4`)kp5DthXt8|0zu;jz4FPqVpi&YF7cssDK0@!bBm{cq

=L}$R^TG!zI)jbSZ)Y3_Lbn3iB&~)q} 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÷k z%XD!Khho(Ewub!(nmUKKXQqg2fy;t7Q97jtX(l&79rp9BQf*Q(3|52hR3PYaJt5br zx*~-pir}$;<&4)oZE;iT<*o@NQqw#Z;q_L=T{}=Y4(;r zui~~)Dpl)tCG9?Fi-?=N?-kF5*l}W&1BV?2pn&GK`Ch>gA|Y3Tf1BT?@G>eRqLk^1f)dCK!;8n*F9!w=cW?r_IxH5A&Z)~d9^0IvEv5_ z{Qm9Kc0*{H!&MS98PG4H2>kpj-+gjae14m?PH^vWQX;=>x}K1ZgY0k1!nE=N^OB=n z-4OCu+5xvtecy*#B4@U%S)Af4tp!rBp$N4P@&1P#b6>C%UNtlem-s1HYk;V4(BKd4 zq5e4E2fo7)P`7!O!W3c!uU~PF7cJl> zd(F}|5YBH2OFWoREi()hc}L=B<4}yn<|bK zI`!bi3*a-AIs`ga)q<(UofE!x#;ZMtI#Y{MPc<(0u%(V0TLN7}gq_H|WR}BgrH{vv zFPd-<`POvB{U}tQIdeLOGQXWqnuuFx+N&y<-UKhg@+GlxgD-R-bAOTH4_7%?Z|^ZY ozj>e;ef!@}7^NLQzaj;ESM?vO=H8(E=lr9RoSJNprepare("SELECT u.role, u.display_name, u.username, l.name as level_raw + $stmt = $db->prepare("SELECT u.role, u.display_name, u.username, l.name as level_raw, + u.selected_title_id, u.selected_badge_id, + t.name as title_name, + b.name as badge_name, b.image_url as badge_image FROM users u LEFT JOIN levels l ON u.level_id = l.id + LEFT JOIN titles t ON u.selected_title_id = t.id + LEFT JOIN badges b ON u.selected_badge_id = b.id WHERE u.id = ?"); $stmt->execute([$_SESSION['user_id']]); $u_data = $stmt->fetch(); @@ -19,6 +24,11 @@ if (isset($_SESSION['user_id'])) { $level_num = (int)filter_var($u_data['level_raw'], FILTER_SANITIZE_NUMBER_INT); $_SESSION['level'] = $level_num; + // Save title and badge to session for modal + $_SESSION['selected_title_name'] = $u_data['title_name']; + $_SESSION['selected_badge_name'] = $u_data['badge_name']; + $_SESSION['selected_badge_image'] = $u_data['badge_image']; + $grade_type = ($user_role === 'admin') ? 'admin' : 'utilisateur'; $g_stmt = $db->prepare("SELECT name, image_url FROM grades WHERE user_type = ? @@ -1003,9 +1013,23 @@ function getStatusColor($status, $statuses_map) {

-
+ + +
+ « » +
+ + +
Niveau
+ + +
+ +
Badge Équipé
+
+