From 63fb854560c2a437ebd72f3ab8b97349fd3eb61d Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 16 Jun 2026 23:52:55 +0200 Subject: =?UTF-8?q?s=C3=A9paration=20par=20r=C3=B4le=20de=20ViewDirector?= =?UTF-8?q?=20et=20ViewController?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/ViewController.php | 62 ++++++++++++++++++++++++++++++ src/controller/ViewDirector.php | 77 -------------------------------------- src/service/Router.php | 5 +-- src/view/ViewDirector.php | 28 ++++++++++++++ src/view/templates/maintenance.php | 2 +- 5 files changed, 93 insertions(+), 81 deletions(-) create mode 100644 src/controller/ViewController.php delete mode 100644 src/controller/ViewDirector.php create mode 100644 src/view/ViewDirector.php diff --git a/src/controller/ViewController.php b/src/controller/ViewController.php new file mode 100644 index 0000000..1acb19a --- /dev/null +++ b/src/controller/ViewController.php @@ -0,0 +1,62 @@ +query->has('mode') && $request->query->get('mode') === 'page_modif' + && !in_array(CURRENT_PAGE, ['article', 'new_page', 'menu_paths', 'user_edit', 'connection'])) + { + MainBuilder::$modif_mode = true; + } + // page article: mode création et erreurs d'id + if(CURRENT_PAGE === 'article'){ + if(IS_ADMIN){ + if(!$request->query->has('id')){ + return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? ''])); + } + else{ + // mode création d'article + // l'id du bloc et 'from=' sont vérifiés dans ArticleController::editorSubmit + if($request->query->get('id')[0] === 'n' && $request->query->has('from') && !empty($request->query->get('from'))){ + NewBuilder::$new_article_mode = true; + } + } + } + elseif($request->query->get('id')[0] === 'n'){ // accès page nouvelle article interdit sans être admin + return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? ''])); + } + } + // pas de else, l'id dans l'URL n'a pas d'effet ailleurs + + + /* 2/ accès au modèle */ + $model = new Model($entityManager); + $model->makeMenuAndPaths(); + $model->getWholePageData($request); + + + /* 3/ 2ème contrôle des paramètres avec les données récupérées */ + + // article non trouvé en BDD + if(CURRENT_PAGE === 'article' && !IS_ADMIN && $model->getNode()->getNodeByName('main')->getAdoptedChild() === null){ + return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? ''])); + } + + + /* 4/ construction de la page avec builders et vues */ + return new Response((new ViewDirector)->buildHTML($model->getNode())); + } +} \ No newline at end of file diff --git a/src/controller/ViewDirector.php b/src/controller/ViewDirector.php deleted file mode 100644 index 7c368b6..0000000 --- a/src/controller/ViewDirector.php +++ /dev/null @@ -1,77 +0,0 @@ -query->has('mode') && $request->query->get('mode') === 'page_modif' - && !in_array(CURRENT_PAGE, ['article', 'new_page', 'menu_paths', 'user_edit', 'connection'])) - { - MainBuilder::$modif_mode = true; - } - // page article: mode création et erreurs d'id - if(CURRENT_PAGE === 'article'){ - if(IS_ADMIN){ - if(!$request->query->has('id')){ - return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? ''])); - } - else{ - // mode création d'article - // l'id du bloc et 'from=' sont vérifiés dans ArticleController::editorSubmit - if($request->query->get('id')[0] === 'n' && $request->query->has('from') && !empty($request->query->get('from'))){ - NewBuilder::$new_article_mode = true; - } - } - } - elseif($request->query->get('id')[0] === 'n'){ // accès page nouvelle article interdit sans être admin - return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? ''])); - } - } - // pas de else, l'id dans l'URL n'a pas d'effet ailleurs - - - /* 2/ accès au modèle */ - $model = new Model($entityManager); - $model->makeMenuAndPaths(); - $model->getWholePageData($request); - $this->root_node = $model->getNode(); - - - /* 3/ 2ème contrôle des paramètres avec les données récupérées */ - - // article non trouvé en BDD - if(CURRENT_PAGE === 'article' && !IS_ADMIN && $this->root_node->getNodeByName('main')->getAdoptedChild() === null){ - return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? ''])); - } - - - /* 4/ construction de la page avec builders et vues */ - $this->useChildrenBuilder($this->root_node); - - if(isset($_SESSION['flash_message'])){ - $this->html .= ''; - unset($_SESSION['flash_message']); - } - - return new Response($this->html); - } -} \ No newline at end of file diff --git a/src/service/Router.php b/src/service/Router.php index 110512e..907baf4 100644 --- a/src/service/Router.php +++ b/src/service/Router.php @@ -83,9 +83,8 @@ class Router{ } } - // construction d'une page - return (new ViewDirector)->buildView($this->entityManager, $this->request); // utilise Model - // parenthèses nécéssaires autour de l'instanciation pour PHP < 8.4 + // affichage d'une page + return ViewController::getWebPage($this->entityManager, $this->request); } diff --git a/src/view/ViewDirector.php b/src/view/ViewDirector.php new file mode 100644 index 0000000..c1a38b8 --- /dev/null +++ b/src/view/ViewDirector.php @@ -0,0 +1,28 @@ +root_node = $root_node; + $this->useChildrenBuilder($this->root_node); + + if(isset($_SESSION['flash_message'])){ + $this->html .= ''; + unset($_SESSION['flash_message']); + } + + return $this->html; + } +} \ No newline at end of file diff --git a/src/view/templates/maintenance.php b/src/view/templates/maintenance.php index 5b8fd18..61d5146 100644 --- a/src/view/templates/maintenance.php +++ b/src/view/templates/maintenance.php @@ -21,7 +21,7 @@
- Obtenir un fichier SQL à conserver sur votre ordinateur. Une sauvegarde (désignée par "auto") est réalisée à chaque visite de cette page. + Obtenir un fichier SQL à conserver. Une sauvegarde (désignée par "auto") est réalisée à chaque connexion au mode admin.

-- cgit v1.2.3