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