Sauvegarde

This commit is contained in:
Esteban
2026-07-02 17:44:40 +02:00
parent 481fbc9498
commit 97caf2275c
10 changed files with 362 additions and 18 deletions
+59
View File
@@ -0,0 +1,59 @@
<?php
session_start();
require_once '../functions/databaseConnection.php';
require_once('../functions/sendLogs.php');
// Pour faire cette fonction l'utilisateur doit être administrateur
if (!isset($_SESSION['role']) || $_SESSION['role'] !== 'admin') {
header('Location: ../pages/home.php');
exit;
}
// La requête doit être un POST sinon on l'a refuse
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Récupération des données dans la requete POST
// La catégorie est restreinte à 'tool' ou 'partner' (sinon on retombe sur 'tool')
$category = ($_POST['category'] ?? '') === 'partner' ? 'partner' : 'tool';
$name = trim($_POST['name'] ?? '');
$logo_url = trim($_POST['logourl'] ?? '');
$link_url = trim($_POST['linkurl'] ?? '');
$position = (int) ($_POST['position'] ?? 0);
// On vérifie que les champs obligatoires ne sont pas vide
if (!empty($name) && !empty($logo_url)) {
try {
// On prépare la requête SQL pour insérer le nouveau logo
$stmt = $dbh->prepare('INSERT INTO logo_banners (category, name, logo_url, link_url, position) VALUES (:category, :name, :logo_url, :link_url, :position)');
// On execute la requete préparée
$stmt->execute([
':category' => $category,
':name' => $name,
':logo_url' => $logo_url,
':link_url' => $link_url,
':position' => $position
]);
// Log Discord
sendLog("Ajout d'un logo (" . $category . ") : " . $name);
// Redirection vers home.php dès que la requete est executée
header('Location: ../pages/home.php');
exit;
} catch (PDOException $e) {
// En cas d'erreur :
echo "Erreur pendant l'ajout du logo: " . $e->getMessage();
exit;
}
} else {
echo "Veuillez remplir tous les champs obligatoires.";
exit;
}
} else {
// Si on y accède de façon peu légitime sans requête POST on refuse
header('Location: ../pages/home.php');
exit;
}
?>
+37
View File
@@ -0,0 +1,37 @@
<?php
// On démarre la session
session_start();
// 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;
}
//L'id doit être collecté sinon l'utilisateur ne peux pas executer le reste du script
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
header('Location: ../pages/admin.php');
exit;
}
// On collecte l'id et on le met en variable locale
$id = (int) $_GET['id'];
try { // On essaie d'executer une requête qui est préparée
$stmt = $dbh->prepare('DELETE FROM logo_banners WHERE id = :id');
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
$stmt->execute(); // Sinon on renvoie l'erreur
} catch (PDOException $e) {
die("Erreur lors de la suppression du logo :" . $e->getMessage());
}
// Log Discord
sendLog("Suppression du logo id " . $id);
// On renvoie l'utilisateur sur admin.php, directement sur la section Logos
header('Location: ../pages/admin.php#admin-logos');
exit;
+54
View File
@@ -0,0 +1,54 @@
<?php
// On démarre la session
session_start();
// 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;
}
if ( // Si les champs sont vides on renvoie vers admin.php
!isset($_POST['id']) || !is_numeric($_POST['id']) ||
empty($_POST['name']) ||
empty($_POST['logourl'])
) {
header('Location: ../pages/admin.php');
exit;
}
// On récupère les données pour les mettres en variables locales
$id = (int) $_POST['id'];
$category = ($_POST['category'] ?? '') === 'partner' ? 'partner' : 'tool';
$name = trim($_POST['name']);
$logourl = trim($_POST['logourl']);
$linkurl = trim($_POST['linkurl'] ?? '');
$position = (int) ($_POST['position'] ?? 0);
try { // On essaie d'executer une requête qui est préparée
$stmt = $dbh->prepare('
UPDATE logo_banners
SET category = :category, name = :name, logo_url = :logo_url, link_url = :link_url, position = :position
WHERE id = :id
');
$stmt->bindValue(':category', $category, PDO::PARAM_STR);
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindValue(':logo_url', $logourl, PDO::PARAM_STR);
$stmt->bindValue(':link_url', $linkurl, PDO::PARAM_STR);
$stmt->bindValue(':position', $position, PDO::PARAM_INT);
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
$stmt->execute(); // Sinon on renvoie l'erreur
} catch (PDOException $e) {
die("Erreur lors de la modification du logo :" . $e->getMessage());
}
// Log Discord
sendLog("Modification du logo : " . $name . " (id " . $id . ")");
// On renvoie l'utilisateur sur admin.php, directement sur la section Logos
header('Location: ../pages/admin.php#admin-logos');
exit;