From 95c8411a353fd909f2ebd25cdf7d2130f7d43f96 Mon Sep 17 00:00:00 2001 From: Jean-Marc Date: Thu, 3 Sep 2026 08:26:01 +0000 Subject: [PATCH] =?UTF-8?q?V1.008=20rectifi=C3=A9e=20Evolution=20des=20par?= =?UTF-8?q?am=C3=A9trages=20de=20l'=C3=A9cran=20de=20fond?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- todolist.php | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/todolist.php b/todolist.php index 4c8d1ff..e1a98b2 100644 --- a/todolist.php +++ b/todolist.php @@ -105,6 +105,25 @@ function comparerDateNullEnPremier(?string $a, ?string $b): int return strcmp($a, $b); } +/** + * Capacité maximale de post-its "en attente" affichables sur le tableau de + * liège de l'écran de fond, par attributaire (voir journal de développement, + * section 28 — "bureau à l'ancienne"). Ajoutée le 2 septembre 2026, en amont + * du code réel du tableau : Jean-Marc a posé le principe avant d'avoir les + * pixels pour le calculer précisément ("mets-le où tu veux, il faudra le + * faire évoluer") — valeur ronde provisoire, à corriger dès que la taille + * réelle de la zone et celle d'un post-it seront posées à l'écran. + * + * Choix de principe explicite de Jean-Marc : PAS d'ascenseur/défilement sur + * le tableau, même si ça permettrait d'accepter plus de post-its — un vrai + * bureau a une capacité finie, et c'est justement cette contrainte physique + * qui pousse à traiter ses tâches plutôt qu'à les empiler indéfiniment. Une + * fois cette capacité atteinte, la création est refusée avec un message + * clair (voir POST ci-dessous) plutôt que de trouver un moyen d'entasser + * plus de post-its ou de faire défiler le tableau. + */ +const CAPACITE_TABLEAU_PAR_UTILISATEUR = 20; + try { switch ($method) { case 'GET': @@ -167,6 +186,25 @@ try { $todoUser = $_SESSION['USR_Code']; } + // Capacité du tableau (voir CAPACITE_TABLEAU_PAR_UTILISATEUR + // ci-dessus) : ne s'applique qu'aux tâches qui vont réellement + // occuper un post-it "en attente" sur le bureau de $todoUser. + // Une tâche créée déjà réalisée (TDL_RealDate fourni dès la + // création, voir doc d'en-tête — permet de journaliser une tâche + // déjà faite) n'occupe jamais de place sur le tableau, donc + // n'est jamais bloquée par cette limite. + if (empty($data['TDL_RealDate'])) { + $stmtCompte = $pdo->prepare( + 'SELECT COUNT(*) FROM ASP_ToDoList WHERE TDL_Actif = 1 AND TDL_ToDoUser = ? AND TDL_RealDate IS NULL' + ); + $stmtCompte->execute([$todoUser]); + if ((int)$stmtCompte->fetchColumn() >= CAPACITE_TABLEAU_PAR_UTILISATEUR) { + http_response_code(409); + echo json_encode(['error' => 'Ton tableau est plein, tu ne peux plus ajouter de post-it !']); + exit; + } + } + // TDL_ToDoDate : incluse dans l'INSERT seulement si fournie par le // client (permet de dater rétroactivement une tâche oubliée) — // sinon on laisse MySQL appliquer DEFAULT CURRENT_TIMESTAMP