From d6d7351259e104ab10b5dda3483c281830ce4ff3 Mon Sep 17 00:00:00 2001 From: polo Date: Fri, 3 Oct 2025 02:28:22 +0200 Subject: pagination partie 1, ordre des articles avec ORDER BY, optimisations dans ViewController --- src/controller/ViewController.php | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'src/controller/ViewController.php') diff --git a/src/controller/ViewController.php b/src/controller/ViewController.php index 9117f0f..9818c6e 100644 --- a/src/controller/ViewController.php +++ b/src/controller/ViewController.php @@ -18,22 +18,15 @@ class ViewController extends AbstractBuilder // ViewController est aussi le prem public function buildView(EntityManager $entityManager, Request $request): Response { - /* 1/ accès au modèle */ - $director = new Director($entityManager, true); - $director->makeRootNode(htmlspecialchars($request->query->get('id') ?? '')); - self::$root_node = $director->getNode(); - - - /* 2/ traitement de quelques paramètres */ + /* 1/ 1er contrôle des paramètres */ - // mode modification d'une page activé + // mode modification d'une page if($_SESSION['admin'] && $request->query->has('mode') && $request->query->get('mode') === 'page_modif' && !in_array(CURRENT_PAGE, ['article', 'nouvelle_page', 'menu_chemins', 'user_edit', 'connection'])) { MainBuilder::$modif_mode = true; } - // page article: mode création et erreurs d'id if(CURRENT_PAGE === 'article'){ if($_SESSION['admin']){ @@ -46,18 +39,30 @@ class ViewController extends AbstractBuilder // ViewController est aussi le prem if($request->query->get('id')[0] === 'n' && $request->query->has('from') && !empty($request->query->get('from'))){ NewBuilder::$new_article_mode = true; } - elseif(self::$root_node->getNodeByName('main')->getAdoptedChild() === null){ // id inconnu - return new Response($this->html, 302); - } } } elseif($request->query->get('id')[0] === 'n'){ // accès page nouvelle article interdit sans être admin return new Response($this->html, 302); } } + //else // l'id dans l'adresse n'a pas d'effet sur la suite + + + /* 2/ accès au modèle */ + $director = new Director($entityManager, true); + $director->getWholePageData($request); + self::$root_node = $director->getNode(); + + + /* 3/ 2ème contrôle utilisant les données récupérées */ + + // article non trouvé en BDD + if(CURRENT_PAGE === 'article' && !$_SESSION['admin'] && self::$root_node->getNodeByName('main')->getAdoptedChild() === null){ + return new Response($this->html, 302); + } - /* 3/ construction de la page avec builders et vues */ + /* 4/ construction de la page avec builders et vues */ $this->useChildrenBuilder(self::$root_node); return new Response($this->html, 200); -- cgit v1.2.3