aboutsummaryrefslogtreecommitdiff
path: root/src/controller/ViewDirector.php
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-06-16 23:52:55 +0200
committerpolo <ordipolo@gmx.fr>2026-06-16 23:52:55 +0200
commit63fb854560c2a437ebd72f3ab8b97349fd3eb61d (patch)
tree350eece664c163efaf87017f09296239d29a8595 /src/controller/ViewDirector.php
parent361287c4b7f543b9ea0fc8182777a864f6f9f335 (diff)
downloadcms-63fb854560c2a437ebd72f3ab8b97349fd3eb61d.tar.gz
cms-63fb854560c2a437ebd72f3ab8b97349fd3eb61d.tar.bz2
cms-63fb854560c2a437ebd72f3ab8b97349fd3eb61d.zip
séparation par rôle de ViewDirector et ViewControllerHEADmain
Diffstat (limited to 'src/controller/ViewDirector.php')
-rw-r--r--src/controller/ViewDirector.php77
1 files changed, 0 insertions, 77 deletions
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 @@
1<?php
2// src/controller/ViewDirector.php
3//
4// génère le HTML avec des Builder
5
6declare(strict_types=1);
7
8use App\Entity\Node;
9use Doctrine\ORM\EntityManager;
10use Symfony\Component\HttpFoundation\Request;
11use Symfony\Component\HttpFoundation\Response;
12use Symfony\Component\HttpFoundation\RedirectResponse;
13
14class ViewDirector extends AbstractBuilder // ViewDirector est aussi le premier Builder
15{
16 public Node $root_node;
17
18 public function __construct(){} // surcharge celui de AbstractBuilder
19
20 public function buildView(EntityManager $entityManager, Request $request): Response
21 {
22 /* 1/ 1er contrôle des paramètres */
23
24 // mode modification d'une page
25 if(IS_ADMIN
26 && $request->query->has('mode') && $request->query->get('mode') === 'page_modif'
27 && !in_array(CURRENT_PAGE, ['article', 'new_page', 'menu_paths', 'user_edit', 'connection']))
28 {
29 MainBuilder::$modif_mode = true;
30 }
31 // page article: mode création et erreurs d'id
32 if(CURRENT_PAGE === 'article'){
33 if(IS_ADMIN){
34 if(!$request->query->has('id')){
35 return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? '']));
36 }
37 else{
38 // mode création d'article
39 // l'id du bloc et 'from=' sont vérifiés dans ArticleController::editorSubmit
40 if($request->query->get('id')[0] === 'n' && $request->query->has('from') && !empty($request->query->get('from'))){
41 NewBuilder::$new_article_mode = true;
42 }
43 }
44 }
45 elseif($request->query->get('id')[0] === 'n'){ // accès page nouvelle article interdit sans être admin
46 return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? '']));
47 }
48 }
49 // pas de else, l'id dans l'URL n'a pas d'effet ailleurs
50
51
52 /* 2/ accès au modèle */
53 $model = new Model($entityManager);
54 $model->makeMenuAndPaths();
55 $model->getWholePageData($request);
56 $this->root_node = $model->getNode();
57
58
59 /* 3/ 2ème contrôle des paramètres avec les données récupérées */
60
61 // article non trouvé en BDD
62 if(CURRENT_PAGE === 'article' && !IS_ADMIN && $this->root_node->getNodeByName('main')->getAdoptedChild() === null){
63 return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? '']));
64 }
65
66
67 /* 4/ construction de la page avec builders et vues */
68 $this->useChildrenBuilder($this->root_node);
69
70 if(isset($_SESSION['flash_message'])){
71 $this->html .= '<script>window.flash_message = "' . $_SESSION['flash_message'] . '";</script>';
72 unset($_SESSION['flash_message']);
73 }
74
75 return new Response($this->html);
76 }
77} \ No newline at end of file