aboutsummaryrefslogtreecommitdiff
path: root/src/controller/ViewDirector.php
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-05-10 17:01:21 +0200
committerpolo <ordipolo@gmx.fr>2026-05-10 17:01:21 +0200
commit895cf7a438929f74c2e11996667685245a571f2a (patch)
tree5dfad9d5e0d2f4a802482f5883dd4673ed971238 /src/controller/ViewDirector.php
parent2c47085b27253c4ad2d062d15c18c3a8c7591298 (diff)
downloadcms-895cf7a438929f74c2e11996667685245a571f2a.tar.gz
cms-895cf7a438929f74c2e11996667685245a571f2a.tar.bz2
cms-895cf7a438929f74c2e11996667685245a571f2a.zip
partie client de la restauration de BDD, script bin/mysqldump.php, changements permissions dossiers, renommage ViewDirector
Diffstat (limited to 'src/controller/ViewDirector.php')
-rw-r--r--src/controller/ViewDirector.php74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/controller/ViewDirector.php b/src/controller/ViewDirector.php
new file mode 100644
index 0000000..6883b73
--- /dev/null
+++ b/src/controller/ViewDirector.php
@@ -0,0 +1,74 @@
1<?php
2// src/view/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;
12
13class ViewDirector extends AbstractBuilder // ViewDirector est aussi le premier Builder
14{
15 static public Node $root_node;
16
17 public function __construct(){} // surcharge celui de AbstractBuilder
18
19 public function buildView(EntityManager $entityManager, Request $request): Response
20 {
21 /* 1/ 1er contrôle des paramètres */
22
23 // mode modification d'une page
24 if(IS_ADMIN
25 && $request->query->has('mode') && $request->query->get('mode') === 'page_modif'
26 && !in_array(CURRENT_PAGE, ['article', 'new_page', 'menu_paths', 'user_edit', 'connection']))
27 {
28 MainBuilder::$modif_mode = true;
29 }
30 // page article: mode création et erreurs d'id
31 if(CURRENT_PAGE === 'article'){
32 if(IS_ADMIN){
33 if(!$request->query->has('id')){
34 return new Response($this->html, 302);
35 }
36 else{
37 // mode création d'article
38 // l'id du bloc et 'from=' sont vérifiés dans ArticleController::editorSubmit
39 if($request->query->get('id')[0] === 'n' && $request->query->has('from') && !empty($request->query->get('from'))){
40 NewBuilder::$new_article_mode = true;
41 }
42 }
43 }
44 elseif($request->query->get('id')[0] === 'n'){ // accès page nouvelle article interdit sans être admin
45 return new Response($this->html, 302);
46 }
47 }
48 //else // l'id dans l'URL n'a pas d'effet ailleurs
49
50
51 /* 2/ accès au modèle */
52 $model = new Model($entityManager);
53 $model->makeMenuAndPaths();
54 $model->getWholePageData($request);
55 self::$root_node = $model->getNode();
56
57
58 /* 3/ 2ème contrôle des paramètres avec les données récupérées */
59
60 // article non trouvé en BDD
61 if(CURRENT_PAGE === 'article' && !IS_ADMIN && self::$root_node->getNodeByName('main')->getAdoptedChild() === null){
62 return new Response($this->html, 302);
63 }
64 elseif(CURRENT_PAGE === 'maintenance'){
65 Backup::mySQLdump($entityManager); // créer un nouveau backup
66 }
67
68
69 /* 4/ construction de la page avec builders et vues */
70 $this->useChildrenBuilder(self::$root_node);
71
72 return new Response($this->html, 200);
73 }
74} \ No newline at end of file