From 3cf4360017906468d273a7c8aad6278c117a33be Mon Sep 17 00:00:00 2001 From: thomas Date: Wed, 12 Nov 2025 14:48:27 +0100 Subject: [PATCH] admin --- admin.php | 165 ++++++++++++++++++++++++++++++++++++++++++++++ config/config.php | 4 ++ 2 files changed, 169 insertions(+) create mode 100644 admin.php diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..61a9293 --- /dev/null +++ b/admin.php @@ -0,0 +1,165 @@ +beginTransaction(); + + $stmt = $pdo->prepare("INSERT INTO lootjes_rondes (naam) VALUES (?)"); + $stmt->execute([$rondeNaam]); + $ronde_id = $pdo->lastInsertId(); + + // Shuffle algoritme: geen enkel persoon mag zichzelf trekken + $gevers = $members; + $ontvangers = $members; + $maxRetries = 1000; + $retry = 0; + do { + shuffle($ontvangers); + $valid = true; + for ($i = 0; $i < count($gevers); $i++) { + if ($gevers[$i] === $ontvangers[$i]) { + $valid = false; + break; + } + } + $retry++; + if ($retry > $maxRetries) { + throw new Exception("Kan geen geldige lootjes toewijzen na $maxRetries pogingen."); + } + } while (!$valid); + + // Opslaan in database + $stmtInsert = $pdo->prepare("INSERT INTO lootjes (ronde_id, gever, ontvanger) VALUES (?, ?, ?)"); + for ($i = 0; $i < count($gevers); $i++) { + $stmtInsert->execute([$ronde_id, $gevers[$i], $ontvangers[$i]]); + } + + $pdo->commit(); + + log_action($pdo, $_SESSION['user']['username'], "Nieuwe ronde gestart: $rondeNaam", "Admin pagina"); + $message = "Nieuwe ronde '$rondeNaam' succesvol gestart!"; + } catch (Exception $e) { + $pdo->rollBack(); + $message = "Fout bij starten van nieuwe ronde: " . $e->getMessage(); + } + } +} + +// Ronde afronden +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['close_round'])) { + $ronde_id = $_POST['round_id'] ?? 0; + if ($ronde_id) { + $stmt = $pdo->prepare("UPDATE lootjes_rondes SET status='afgerond' WHERE id=?"); + $stmt->execute([$ronde_id]); + log_action($pdo, $_SESSION['user']['username'], "Ronde $ronde_id afgerond", "Admin pagina"); + $message = "Ronde afgerond!"; + } +} + +// Huidige rondes ophalen (nieuwste eerst) +try { + $stmt = $pdo->query("SELECT * FROM lootjes_rondes ORDER BY created_at DESC"); + $rondes = $stmt->fetchAll(); +} catch (PDOException $e) { + die("Fout bij ophalen van rondes: " . $e->getMessage()); +} +?> + + + + + +Admin - Lootjesbeheer + + + + +

Admin - Lootjesbeheer

+ +
+ +
+ + +

+ + +
+ +
+ +

Rondes

+ + + + + + + + + + + +
IDNaamStatusActiesLootjes
+ +
+ + +
+ + Afgerond + +
+ prepare("SELECT gever, ontvanger FROM lootjes WHERE ronde_id=?"); + $stmtLootjes->execute([$r['id']]); + $lootjes = $stmtLootjes->fetchAll(); + if ($lootjes): + ?> +
    + +
  • + +
+ + Nog geen lootjes + +
+ + + diff --git a/config/config.php b/config/config.php index 1c18f01..32675eb 100644 --- a/config/config.php +++ b/config/config.php @@ -18,6 +18,10 @@ return [ 'admin_user' => 'CN=ldap,OU=ServiceAccounts,OU=deRoo,DC=de-roo,DC=org', 'admin_pass' => 'ld@ps3arch', 'use_tls' => false + ], + 'admin_usernames' => [ + 'thomas', // vul hier de LDAP gebruikersnaam van de admin(s) in ] + ];