75 lines
2.8 KiB
PHP
75 lines
2.8 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'
|
|
];
|
|
} elseif ($groupeReglages === 'contact') {
|
|
$reglages = [
|
|
'contact_email' => trim($_POST['contact_email'] ?? ''),
|
|
'contact_email_enabled' => isset($_POST['contact_email_enabled']) ? '1' : '0',
|
|
'contact_address_line1' => trim($_POST['contact_address_line1'] ?? ''),
|
|
'contact_address_line2' => trim($_POST['contact_address_line2'] ?? ''),
|
|
'contact_address_enabled' => isset($_POST['contact_address_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
|
|
$libellesGroupes = [
|
|
'captcha' => 'Modification du réglage du captcha',
|
|
'contact' => 'Modification des coordonnées de contact',
|
|
'notice' => "Modification de la notification de la page d'accueil"
|
|
];
|
|
sendLog($libellesGroupes[$groupeReglages] ?? "Modification des réglages du site");
|
|
|
|
// On renvoie l'utilisateur sur admin.php
|
|
header('Location: ../pages/admin.php');
|
|
exit;
|