From 761c0bd6afce2a454bfeff445541388323c43405 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Wed, 8 Apr 2026 16:29:33 +0000 Subject: [PATCH] Autosave: 20260408-162933 --- admin.php | 2 + assets/pasted-20260408-155112-5f68f53a.png | Bin 0 -> 92640 bytes db/scdiscord.php | 243 ++++++ scitems.php | 2 + scmanufactures.php | 2 + scmining.php | 2 + scnotification.php | 969 +++++++++++++++++++++ scpreset.php | 2 + scvaisseaux.php | 2 + scwebhook.php | 749 ++++++++++++++++ 10 files changed, 1973 insertions(+) create mode 100644 assets/pasted-20260408-155112-5f68f53a.png create mode 100644 db/scdiscord.php create mode 100644 scnotification.php create mode 100644 scwebhook.php diff --git a/admin.php b/admin.php index 89bfd44..16294d6 100644 --- a/admin.php +++ b/admin.php @@ -524,6 +524,8 @@ $current_session_user = isset($_SESSION['user']) ? (string) $_SESSION['user'] : Manufactures Vaisseaux Presets Vaisseau + SC Webhook + SC Notification diff --git a/assets/pasted-20260408-155112-5f68f53a.png b/assets/pasted-20260408-155112-5f68f53a.png new file mode 100644 index 0000000000000000000000000000000000000000..09b20682721421bf711b7a85aeaf22ce52089ee6 GIT binary patch literal 92640 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 + "CREATE TABLE IF NOT EXISTS tbl_scwebhooks ( + cl_scwebhook_id INT(11) NOT NULL AUTO_INCREMENT, + cl_scwebhook_name VARCHAR(255) NOT NULL, + cl_scwebhook_url TEXT NOT NULL, + cl_scwebhook_is_forum TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (cl_scwebhook_id) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci" + ); + + $db->exec( + "CREATE TABLE IF NOT EXISTS tbl_scbanners ( + cl_scbanner_id INT(11) NOT NULL AUTO_INCREMENT, + cl_scbanner_name VARCHAR(255) NOT NULL, + cl_scbanner_url TEXT NOT NULL, + cl_scbanner_border_color VARCHAR(20) NOT NULL DEFAULT '#ffae00', + PRIMARY KEY (cl_scbanner_id) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci" + ); + + $columns_stmt = $db->query("SHOW COLUMNS FROM tbl_scbanners LIKE 'cl_scbanner_border_color'"); + $has_border_color = (bool) $columns_stmt->fetch(); + if (!$has_border_color) { + $db->exec("ALTER TABLE tbl_scbanners ADD COLUMN cl_scbanner_border_color VARCHAR(20) NOT NULL DEFAULT '#ffae00' AFTER cl_scbanner_url"); + } + + $db->exec( + "CREATE TABLE IF NOT EXISTS tbl_scnotifications ( + cl_scnotification_id INT(11) NOT NULL AUTO_INCREMENT, + cl_scnotification_webhook_id INT(11) NOT NULL, + cl_scnotification_banner_id INT(11) DEFAULT NULL, + cl_scnotification_title VARCHAR(255) NOT NULL DEFAULT '', + cl_scnotification_message TEXT NOT NULL, + cl_scnotification_payload LONGTEXT NOT NULL, + cl_scnotification_response LONGTEXT DEFAULT NULL, + cl_scnotification_success TINYINT(1) NOT NULL DEFAULT 0, + cl_scnotification_created_by VARCHAR(190) NOT NULL, + cl_scnotification_created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (cl_scnotification_id), + KEY idx_scnotification_webhook (cl_scnotification_webhook_id), + KEY idx_scnotification_banner (cl_scnotification_banner_id), + CONSTRAINT fk_scnotification_webhook FOREIGN KEY (cl_scnotification_webhook_id) + REFERENCES tbl_scwebhooks (cl_scwebhook_id) + ON UPDATE CASCADE + ON DELETE RESTRICT, + CONSTRAINT fk_scnotification_banner FOREIGN KEY (cl_scnotification_banner_id) + REFERENCES tbl_scbanners (cl_scbanner_id) + ON UPDATE CASCADE + ON DELETE SET NULL + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci" + ); + + $stmt_existing_red = $db->prepare('SELECT cl_scbanner_id FROM tbl_scbanners WHERE cl_scbanner_name = :name LIMIT 1'); + $stmt_existing_red->execute(['name' => 'Alerte Rouge']); + $existing_red_banner = $stmt_existing_red->fetch(PDO::FETCH_ASSOC); + + if ($existing_red_banner) { + $stmt_update_red = $db->prepare( + 'UPDATE tbl_scbanners + SET cl_scbanner_border_color = CASE + WHEN cl_scbanner_border_color IS NULL OR cl_scbanner_border_color = "" OR cl_scbanner_border_color = "#ffae00" + THEN :border_color + ELSE cl_scbanner_border_color + END + WHERE cl_scbanner_id = :id' + ); + $stmt_update_red->execute([ + 'border_color' => '#ff3b30', + 'id' => $existing_red_banner['cl_scbanner_id'], + ]); + } + + $bootstrapped = true; +} + +function scdiscord_mask_webhook_url(string $url): string +{ + $trimmed = trim($url); + if ($trimmed === '') { + return ''; + } + + $length = strlen($trimmed); + if ($length <= 24) { + return str_repeat('•', max(8, $length)); + } + + return substr($trimmed, 0, 32) . str_repeat('•', 18) . substr($trimmed, -10); +} + +function scdiscord_normalize_hex_color(string $color): string +{ + $candidate = strtoupper(trim($color)); + if ($candidate === '') { + return '#FFAE00'; + } + + if ($candidate[0] !== '#') { + $candidate = '#' . $candidate; + } + + if (!preg_match('/^#[0-9A-F]{6}$/', $candidate)) { + return '#FFAE00'; + } + + return $candidate; +} + +function scdiscord_hex_to_decimal(string $color): int +{ + return hexdec(ltrim(scdiscord_normalize_hex_color($color), '#')); +} + +function scdiscord_build_mentions(bool $notify_here, bool $notify_everyone): array +{ + $parts = []; + + if ($notify_here) { + $parts[] = '@here'; + } + + if ($notify_everyone) { + $parts[] = '@everyone'; + } + + return $parts; +} + +function scdiscord_build_thread_name(string $title, string $location, string $start_date): string +{ + $parts = []; + + if ($title !== '') { + $parts[] = $title; + } + + if ($location !== '') { + $parts[] = $location; + } + + if ($start_date !== '') { + $parts[] = $start_date; + } + + $thread_name = trim(implode(' • ', $parts)); + + if ($thread_name === '') { + $thread_name = 'Notification Discord'; + } + + return mb_substr($thread_name, 0, 100); +} + +function scdiscord_post_webhook(string $webhook_url, array $payload): array +{ + $target_url = $webhook_url; + $separator = (str_contains($target_url, '?')) ? '&' : '?'; + $target_url .= $separator . 'wait=true'; + + $json_payload = json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + + if ($json_payload === false) { + return [ + 'success' => false, + 'http_code' => 0, + 'response' => 'Erreur d\'encodage JSON.', + ]; + } + + if (function_exists('curl_init')) { + $ch = curl_init($target_url); + curl_setopt_array($ch, [ + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => $json_payload, + CURLOPT_HTTPHEADER => [ + 'Content-Type: application/json', + 'Content-Length: ' . strlen($json_payload), + ], + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 20, + ]); + + $response = curl_exec($ch); + $http_code = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE); + $curl_error = curl_error($ch); + curl_close($ch); + + if ($response === false) { + return [ + 'success' => false, + 'http_code' => $http_code, + 'response' => $curl_error !== '' ? $curl_error : 'Erreur CURL inconnue.', + ]; + } + + return [ + 'success' => $http_code >= 200 && $http_code < 300, + 'http_code' => $http_code, + 'response' => $response, + ]; + } + + $context = stream_context_create([ + 'http' => [ + 'method' => 'POST', + 'header' => "Content-Type: application/json\r\n", + 'content' => $json_payload, + 'timeout' => 20, + 'ignore_errors' => true, + ], + ]); + + $response = @file_get_contents($target_url, false, $context); + $http_code = 0; + if (isset($http_response_header) && is_array($http_response_header)) { + foreach ($http_response_header as $header_line) { + if (preg_match('#^HTTP/\S+\s+(\d{3})#', $header_line, $matches)) { + $http_code = (int) $matches[1]; + break; + } + } + } + + return [ + 'success' => $response !== false && $http_code >= 200 && $http_code < 300, + 'http_code' => $http_code, + 'response' => $response === false ? 'Erreur lors de la requête HTTP.' : $response, + ]; +} diff --git a/scitems.php b/scitems.php index 7239f8f..71485b0 100644 --- a/scitems.php +++ b/scitems.php @@ -406,6 +406,8 @@ if ($edit_id > 0) { Manufactures Vaisseaux Presets Vaisseau + SC Webhook + SC Notification diff --git a/scmanufactures.php b/scmanufactures.php index e6e3ac0..82705d6 100644 --- a/scmanufactures.php +++ b/scmanufactures.php @@ -278,6 +278,8 @@ $current_session_user = $_SESSION['user'] ?? ''; Manufactures Vaisseaux Presets Vaisseau + SC Webhook + SC Notification diff --git a/scmining.php b/scmining.php index 36c9fb1..8bd03cf 100644 --- a/scmining.php +++ b/scmining.php @@ -335,6 +335,8 @@ $current_session_user = $_SESSION['user'] ?? ''; Manufactures Vaisseaux Presets Vaisseau + SC Webhook + SC Notification diff --git a/scnotification.php b/scnotification.php new file mode 100644 index 0000000..96f2851 --- /dev/null +++ b/scnotification.php @@ -0,0 +1,969 @@ +prepare('SELECT * FROM tbl_scwebhooks WHERE cl_scwebhook_id = :id LIMIT 1'); + $stmt_webhook->execute(['id' => $cl_scnotification_webhook_id]); + $webhook = $stmt_webhook->fetch(); + + if (!$webhook) { + auth_flash_set('error', 'Webhook Discord introuvable.'); + header('Location: scnotification.php'); + exit; + } + + $banner = null; + if ($cl_scnotification_banner_id > 0) { + $stmt_banner = $db->prepare('SELECT * FROM tbl_scbanners WHERE cl_scbanner_id = :id LIMIT 1'); + $stmt_banner->execute(['id' => $cl_scnotification_banner_id]); + $banner = $stmt_banner->fetch(); + } + + if ($use_custom_banner && $cl_scnotification_custom_banner_url !== '' && !filter_var($cl_scnotification_custom_banner_url, FILTER_VALIDATE_URL)) { + auth_flash_set('error', 'L’URL de bannière personnalisée est invalide.'); + header('Location: scnotification.php'); + exit; + } + + foreach ([ + 'URL canal Discord' => [$show_channel_url, $cl_scnotification_channel_url], + 'URL inventaire' => [$show_inventory_url, $cl_scnotification_inventory_url], + 'URL source' => [$show_source_url, $cl_scnotification_source_url], + 'Icône du footer' => [$show_footer && $cl_scnotification_footer_icon_url !== '', $cl_scnotification_footer_icon_url], + ] as $label => [$enabled, $value]) { + if ($enabled && $value !== '' && !filter_var($value, FILTER_VALIDATE_URL)) { + auth_flash_set('error', $label . ' invalide.'); + header('Location: scnotification.php'); + exit; + } + } + + $mentions = scdiscord_build_mentions($notify_here, $notify_everyone); + $banner_image_url = $use_custom_banner && $cl_scnotification_custom_banner_url !== '' + ? $cl_scnotification_custom_banner_url + : (string) ($banner['cl_scbanner_url'] ?? ''); + $border_color = (string) ($banner['cl_scbanner_border_color'] ?? '#ffae00'); + + $fields = []; + + if ($show_org && $cl_scnotification_org_value !== '' && mb_strtolower($cl_scnotification_org_value) !== 'non') { + $fields[] = [ + 'name' => 'Tenue d’organisation', + 'value' => mb_substr($cl_scnotification_org_value, 0, 1024), + 'inline' => true, + ]; + } + + if ($show_pvp && $cl_scnotification_pvp_value !== '' && mb_strtolower($cl_scnotification_pvp_value) !== 'inexistant') { + $fields[] = [ + 'name' => 'Risques PvP', + 'value' => mb_substr($cl_scnotification_pvp_value, 0, 1024), + 'inline' => true, + ]; + } + + if ($include_schedule) { + if ($cl_scnotification_location !== '') { + $fields[] = ['name' => 'Lieu de ralliement', 'value' => mb_substr($cl_scnotification_location, 0, 1024), 'inline' => false]; + } + if ($cl_scnotification_start_date !== '') { + $fields[] = ['name' => 'Date de début', 'value' => mb_substr($cl_scnotification_start_date, 0, 1024), 'inline' => true]; + } + if ($cl_scnotification_departure_time !== '') { + $fields[] = ['name' => 'Heure de départ', 'value' => mb_substr($cl_scnotification_departure_time, 0, 1024), 'inline' => true]; + } + if ($include_briefing_time && $cl_scnotification_briefing_time !== '') { + $fields[] = ['name' => 'Heure de briefing', 'value' => mb_substr($cl_scnotification_briefing_time, 0, 1024), 'inline' => true]; + } + if ($include_end_date && $cl_scnotification_end_date !== '') { + $fields[] = ['name' => 'Date de fin', 'value' => mb_substr($cl_scnotification_end_date, 0, 1024), 'inline' => true]; + } + if ($include_end_time && $cl_scnotification_end_time !== '') { + $fields[] = ['name' => 'Heure de fin', 'value' => mb_substr($cl_scnotification_end_time, 0, 1024), 'inline' => true]; + } + } + + if ($show_channel_url && $cl_scnotification_channel_url !== '') { + $fields[] = ['name' => 'Canal Discord', 'value' => '[Ouvrir le canal](' . $cl_scnotification_channel_url . ')', 'inline' => false]; + } + + if ($show_inventory_url && $cl_scnotification_inventory_url !== '') { + $fields[] = ['name' => 'Inventaire A.R.I.A', 'value' => '[Consulter l’inventaire](' . $cl_scnotification_inventory_url . ')', 'inline' => false]; + } + + if ($show_source_url && $cl_scnotification_source_url !== '') { + $fields[] = ['name' => 'Source', 'value' => '[Ouvrir la source](' . $cl_scnotification_source_url . ')', 'inline' => false]; + } + + if ($show_reactions) { + $fields[] = ['name' => 'Réactions', 'value' => '👍 / ⏳ / ❓ / 👎', 'inline' => false]; + } + + $embed = [ + 'description' => mb_substr($cl_scnotification_message, 0, 4096), + 'color' => scdiscord_hex_to_decimal($border_color), + ]; + + if ($cl_scnotification_title !== '') { + $embed['title'] = mb_substr($cl_scnotification_title, 0, 256); + } + + if (!empty($fields)) { + $embed['fields'] = $fields; + } + + if ($banner_image_url !== '') { + $embed['image'] = ['url' => $banner_image_url]; + } + + if ($show_footer && ($cl_scnotification_footer_text !== '' || $cl_scnotification_footer_icon_url !== '')) { + $embed['footer'] = []; + if ($cl_scnotification_footer_text !== '') { + $embed['footer']['text'] = mb_substr($cl_scnotification_footer_text, 0, 2048); + } + if ($cl_scnotification_footer_icon_url !== '') { + $embed['footer']['icon_url'] = $cl_scnotification_footer_icon_url; + } + } + + $payload = [ + 'embeds' => [$embed], + ]; + + if (!empty($mentions)) { + $payload['content'] = implode(' ', $mentions); + $payload['allowed_mentions'] = ['parse' => ['everyone']]; + } + + $is_forum_webhook = ((int) ($webhook['cl_scwebhook_is_forum'] ?? 0) === 1); + if ($is_forum_webhook) { + $payload['thread_name'] = scdiscord_build_thread_name( + $cl_scnotification_title, + $cl_scnotification_location, + $cl_scnotification_start_date + ); + } elseif ($show_thread) { + $embed['fields'][] = [ + 'name' => 'Fil de discussion', + 'value' => 'Le webhook sélectionné n’est pas de type forum.', + 'inline' => false, + ]; + $payload['embeds'] = [$embed]; + } + + $result = scdiscord_post_webhook((string) $webhook['cl_scwebhook_url'], $payload); + + $stmt_log = $db->prepare( + 'INSERT INTO tbl_scnotifications ( + cl_scnotification_webhook_id, + cl_scnotification_banner_id, + cl_scnotification_title, + cl_scnotification_message, + cl_scnotification_payload, + cl_scnotification_response, + cl_scnotification_success, + cl_scnotification_created_by + ) VALUES ( + :webhook_id, + :banner_id, + :title, + :message, + :payload, + :response, + :success, + :created_by + )' + ); + $stmt_log->execute([ + 'webhook_id' => $cl_scnotification_webhook_id, + 'banner_id' => $cl_scnotification_banner_id > 0 ? $cl_scnotification_banner_id : null, + 'title' => $cl_scnotification_title, + 'message' => $cl_scnotification_message, + 'payload' => json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'response' => (string) ($result['response'] ?? ''), + 'success' => !empty($result['success']) ? 1 : 0, + 'created_by' => $current_session_user !== '' ? $current_session_user : 'Inconnu', + ]); + + if (!empty($result['success'])) { + unset($_SESSION['scnotification_old']); + auth_flash_set('success', 'Notification Discord envoyée avec succès.'); + } else { + auth_flash_set('error', 'Échec de l’envoi Discord (HTTP ' . (int) ($result['http_code'] ?? 0) . ').'); + } + + header('Location: scnotification.php'); + exit; + } +} + +$old = $_SESSION['scnotification_old'] ?? []; +unset($_SESSION['scnotification_old']); + +$stmt_webhooks = $db->query('SELECT * FROM tbl_scwebhooks ORDER BY cl_scwebhook_name ASC'); +$webhooks = $stmt_webhooks->fetchAll(); + +$stmt_banners = $db->query('SELECT * FROM tbl_scbanners ORDER BY cl_scbanner_name ASC'); +$banners = $stmt_banners->fetchAll(); + +$stmt_recent = $db->query( + 'SELECT n.cl_scnotification_id, + n.cl_scnotification_title, + n.cl_scnotification_success, + n.cl_scnotification_created_at, + n.cl_scnotification_created_by, + w.cl_scwebhook_name, + b.cl_scbanner_name + FROM tbl_scnotifications n + JOIN tbl_scwebhooks w ON w.cl_scwebhook_id = n.cl_scnotification_webhook_id + LEFT JOIN tbl_scbanners b ON b.cl_scbanner_id = n.cl_scnotification_banner_id + ORDER BY n.cl_scnotification_id DESC + LIMIT 8' +); +$recent_notifications = $stmt_recent->fetchAll(); + +function scnotification_old_value(array $old, string $key, string $default = ''): string +{ + $value = $old[$key] ?? $default; + return is_string($value) ? $value : $default; +} + +function scnotification_old_checked(array $old, string $key, bool $default = false): bool +{ + if (empty($old)) { + return $default; + } + + return array_key_exists($key, $old); +} +?> + + + + + + SC Notification | R.E.A.C.T. Admin + + + + + +
+
+
+

R.E.A.C.T. SC Notification

+

Niveau d'accès : | Session :

+
+
+ Site + Exit +
+
+ + + + +
+ +
+ + +
+
Envoi d'une notification sur Discord
+
+ + + +
+
+
+

Canal de notification

+
+ +
+
+ +
+

Bannière et Couleur de bordure

+
+ +
+ +
+ +
+
+ +
+

Message

+ + +
+ + +
+
+ + +
2500 caractères restants
+
+
+ +
+

Options Footer

+ +
+ + +
+
+ + +
+
+ +
+

Réactions & Fils

+ + +
+
+ +
+
+

Tenue d'organisation & PvP

+ +
+ +
+ +
+ +
+
+ +
+

Lieu, Date et Heure

+ +
+ + +
+
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+

URL externes

+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
+ +
+ +
+
+
+ +
+

Historique récent

+ +
Aucune notification n’a encore été envoyée.
+ +
+ +
+
+ + + + +
+
+ Webhook : + + | Bannière : + + | Par : + | Le : +
+
+ +
+ +
+
+ + + + diff --git a/scpreset.php b/scpreset.php index 7bd74e7..d87ea5b 100644 --- a/scpreset.php +++ b/scpreset.php @@ -331,6 +331,8 @@ $presets = $stmt_list->fetchAll(); Vaisseaux Presets Vaisseau + SC Webhook + SC Notification diff --git a/scvaisseaux.php b/scvaisseaux.php index 0e27741..6360ea3 100644 --- a/scvaisseaux.php +++ b/scvaisseaux.php @@ -289,6 +289,8 @@ $current_session_user = $_SESSION['user'] ?? ''; Manufactures Vaisseaux Presets Vaisseau + SC Webhook + SC Notification diff --git a/scwebhook.php b/scwebhook.php new file mode 100644 index 0000000..2dab5ca --- /dev/null +++ b/scwebhook.php @@ -0,0 +1,749 @@ +prepare('INSERT INTO tbl_scwebhooks (cl_scwebhook_name, cl_scwebhook_url, cl_scwebhook_is_forum) VALUES (:name, :url, :is_forum)'); + $stmt->execute([ + 'name' => $cl_scwebhook_name, + 'url' => $cl_scwebhook_url, + 'is_forum' => $cl_scwebhook_is_forum, + ]); + auth_flash_set('success', 'Webhook Discord ajouté avec succès.'); + } else { + if ($webhook_id <= 0) { + throw new RuntimeException('ID de webhook invalide.'); + } + + $stmt = $db->prepare('UPDATE tbl_scwebhooks SET cl_scwebhook_name = :name, cl_scwebhook_url = :url, cl_scwebhook_is_forum = :is_forum WHERE cl_scwebhook_id = :id'); + $stmt->execute([ + 'name' => $cl_scwebhook_name, + 'url' => $cl_scwebhook_url, + 'is_forum' => $cl_scwebhook_is_forum, + 'id' => $webhook_id, + ]); + auth_flash_set('success', 'Webhook Discord mis à jour.'); + } + } catch (Throwable $e) { + auth_flash_set('error', 'Erreur webhook : ' . $e->getMessage()); + } + + header('Location: scwebhook.php'); + exit; + } + + if ($action === 'delete_webhook') { + $webhook_id = (int) ($_POST['webhook_id'] ?? 0); + + if ($webhook_id > 0) { + try { + $stmt_usage = $db->prepare('SELECT COUNT(*) FROM tbl_scnotifications WHERE cl_scnotification_webhook_id = :id'); + $stmt_usage->execute(['id' => $webhook_id]); + $usage_total = (int) $stmt_usage->fetchColumn(); + + if ($usage_total > 0) { + auth_flash_set('error', 'Suppression refusée : ce webhook est déjà relié à l’historique des notifications.'); + } else { + $stmt = $db->prepare('DELETE FROM tbl_scwebhooks WHERE cl_scwebhook_id = :id'); + $stmt->execute(['id' => $webhook_id]); + auth_flash_set('success', 'Webhook Discord supprimé.'); + } + } catch (Throwable $e) { + auth_flash_set('error', 'Erreur suppression webhook : ' . $e->getMessage()); + } + } + + header('Location: scwebhook.php'); + exit; + } + + if ($action === 'add_banner' || $action === 'update_banner') { + $banner_id = (int) ($_POST['banner_id'] ?? 0); + $cl_scbanner_name = trim((string) ($_POST['cl_scbanner_name'] ?? '')); + $cl_scbanner_url = trim((string) ($_POST['cl_scbanner_url'] ?? '')); + $cl_scbanner_border_color = scdiscord_normalize_hex_color((string) ($_POST['cl_scbanner_border_color'] ?? '')); + + if ($cl_scbanner_name === '' || $cl_scbanner_url === '') { + auth_flash_set('error', 'Le nom et le lien d’image de la bannière sont obligatoires.'); + header('Location: scwebhook.php'); + exit; + } + + if (!filter_var($cl_scbanner_url, FILTER_VALIDATE_URL)) { + auth_flash_set('error', 'L’URL de la bannière est invalide.'); + header('Location: scwebhook.php'); + exit; + } + + try { + if ($action === 'add_banner') { + $stmt = $db->prepare('INSERT INTO tbl_scbanners (cl_scbanner_name, cl_scbanner_url, cl_scbanner_border_color) VALUES (:name, :url, :border_color)'); + $stmt->execute([ + 'name' => $cl_scbanner_name, + 'url' => $cl_scbanner_url, + 'border_color' => $cl_scbanner_border_color, + ]); + auth_flash_set('success', 'Bannière Discord ajoutée avec succès.'); + } else { + if ($banner_id <= 0) { + throw new RuntimeException('ID de bannière invalide.'); + } + + $stmt = $db->prepare('UPDATE tbl_scbanners SET cl_scbanner_name = :name, cl_scbanner_url = :url, cl_scbanner_border_color = :border_color WHERE cl_scbanner_id = :id'); + $stmt->execute([ + 'name' => $cl_scbanner_name, + 'url' => $cl_scbanner_url, + 'border_color' => $cl_scbanner_border_color, + 'id' => $banner_id, + ]); + auth_flash_set('success', 'Bannière Discord mise à jour.'); + } + } catch (Throwable $e) { + auth_flash_set('error', 'Erreur bannière : ' . $e->getMessage()); + } + + header('Location: scwebhook.php'); + exit; + } + + if ($action === 'delete_banner') { + $banner_id = (int) ($_POST['banner_id'] ?? 0); + + if ($banner_id > 0) { + try { + $stmt = $db->prepare('DELETE FROM tbl_scbanners WHERE cl_scbanner_id = :id'); + $stmt->execute(['id' => $banner_id]); + auth_flash_set('success', 'Bannière Discord supprimée.'); + } catch (Throwable $e) { + auth_flash_set('error', 'Erreur suppression bannière : ' . $e->getMessage()); + } + } + + header('Location: scwebhook.php'); + exit; + } +} + +$stmt_webhooks = $db->query('SELECT * FROM tbl_scwebhooks ORDER BY cl_scwebhook_name ASC'); +$webhooks = $stmt_webhooks->fetchAll(); + +$stmt_banners = $db->query('SELECT * FROM tbl_scbanners ORDER BY cl_scbanner_name ASC'); +$banners = $stmt_banners->fetchAll(); +?> + + + + + + SC Webhook | R.E.A.C.T. Admin + + + + + +
+
+
+

R.E.A.C.T. SC Webhook

+

Niveau d'accès : Administrateur | Session :

+
+
+ Site + Exit +
+
+ + + + +
+ +
+ + +
+ + +
+
+

Webhooks Discord enregistrés

+ +
Aucun webhook configuré pour le moment.
+ +
+ + + + + + + + + + + + + + + + + + + +
NominationURLTypeActions
+ + + + + + + + +
+ +
+ + + + +
+
+
+
+ +
+ +
+

Bannières disponibles

+ +
Aucune bannière enregistrée pour le moment.
+ +
+ + + + + + + + + + + + + + + + + + + +
NomPrévisualisationCouleurActions
+ + + + + + + + +
+ +
+ + + + +
+
+
+
+ +
+
+
+
+ + + +