62 lines
2.1 KiB
PHP
62 lines
2.1 KiB
PHP
<?php
|
|
// On démarre la session
|
|
require_once(__DIR__ . '/../functions/security.php');
|
|
// On ajoute la DB
|
|
require_once('../functions/databaseConnection.php');
|
|
// On ajoute les logs Discord
|
|
require_once('../functions/sendLogs.php');
|
|
|
|
// Si l'utilisateur n'est pas admin il ne peut pas executer le reste du script
|
|
if (!isset($_SESSION['role']) || $_SESSION['role'] !== 'admin') {
|
|
header('Location: ../pages/home.php');
|
|
exit;
|
|
}
|
|
|
|
// Vérification du jeton CSRF : bloque les requêtes forgées depuis un autre site
|
|
requireCsrfToken();
|
|
|
|
// La requête doit être un POST sinon on l'a refuse
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
header('Location: ../pages/admin.php');
|
|
exit;
|
|
}
|
|
|
|
// On récupère les données pour les mettres en variables locales
|
|
// La checkbox n'est envoyée que si elle est cochée
|
|
// settings_group : évite qu'un formulaire écrase les réglages d'un autre (ex : la case
|
|
// "notice_enabled" non cochée ne doit pas désactiver le captcha, et inversement)
|
|
$groupeReglages = $_POST['settings_group'] ?? 'notice';
|
|
|
|
if ($groupeReglages === 'captcha') {
|
|
$reglages = [
|
|
'captcha_enabled' => isset($_POST['captcha_enabled']) ? '1' : '0'
|
|
];
|
|
} else {
|
|
$reglages = [
|
|
'site_notice_title' => trim($_POST['notice_title'] ?? ''),
|
|
'site_notice_text' => trim($_POST['notice_text'] ?? ''),
|
|
'site_notice_enabled' => isset($_POST['notice_enabled']) ? '1' : '0'
|
|
];
|
|
}
|
|
|
|
try { // On essaie d'executer une requête qui est préparée pour chaque réglage
|
|
// ON DUPLICATE KEY UPDATE : crée le réglage s'il n'existe pas encore, le met à jour sinon
|
|
$stmt = $dbh->prepare('INSERT INTO settings (name, value) VALUES (:name, :value) ON DUPLICATE KEY UPDATE value = VALUES(value)');
|
|
|
|
foreach ($reglages as $name => $value) {
|
|
$stmt->execute([
|
|
':name' => $name,
|
|
':value' => $value
|
|
]);
|
|
}
|
|
} catch (PDOException $e) {
|
|
die("Erreur lors de la modification de la notification :" . $e->getMessage());
|
|
}
|
|
|
|
// Log Discord
|
|
sendLog("Modification de la notification de la page d'accueil");
|
|
|
|
// On renvoie l'utilisateur sur admin.php
|
|
header('Location: ../pages/admin.php');
|
|
exit;
|