aboutsummaryrefslogtreecommitdiff
path: root/src/controller/ViewController.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/controller/ViewController.php')
-rw-r--r--src/controller/ViewController.php31
1 files changed, 18 insertions, 13 deletions
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
18 18
19 public function buildView(EntityManager $entityManager, Request $request): Response 19 public function buildView(EntityManager $entityManager, Request $request): Response
20 { 20 {
21 /* 1/ accès au modèle */ 21 /* 1/ 1er contrôle des paramètres */
22 $director = new Director($entityManager, true);
23 $director->makeRootNode(htmlspecialchars($request->query->get('id') ?? ''));
24 self::$root_node = $director->getNode();
25
26
27 /* 2/ traitement de quelques paramètres */
28 22
29 // mode modification d'une page activé 23 // mode modification d'une page
30 if($_SESSION['admin'] 24 if($_SESSION['admin']
31 && $request->query->has('mode') && $request->query->get('mode') === 'page_modif' 25 && $request->query->has('mode') && $request->query->get('mode') === 'page_modif'
32 && !in_array(CURRENT_PAGE, ['article', 'nouvelle_page', 'menu_chemins', 'user_edit', 'connection'])) 26 && !in_array(CURRENT_PAGE, ['article', 'nouvelle_page', 'menu_chemins', 'user_edit', 'connection']))
33 { 27 {
34 MainBuilder::$modif_mode = true; 28 MainBuilder::$modif_mode = true;
35 } 29 }
36
37 // page article: mode création et erreurs d'id 30 // page article: mode création et erreurs d'id
38 if(CURRENT_PAGE === 'article'){ 31 if(CURRENT_PAGE === 'article'){
39 if($_SESSION['admin']){ 32 if($_SESSION['admin']){
@@ -46,18 +39,30 @@ class ViewController extends AbstractBuilder // ViewController est aussi le prem
46 if($request->query->get('id')[0] === 'n' && $request->query->has('from') && !empty($request->query->get('from'))){ 39 if($request->query->get('id')[0] === 'n' && $request->query->has('from') && !empty($request->query->get('from'))){
47 NewBuilder::$new_article_mode = true; 40 NewBuilder::$new_article_mode = true;
48 } 41 }
49 elseif(self::$root_node->getNodeByName('main')->getAdoptedChild() === null){ // id inconnu
50 return new Response($this->html, 302);
51 }
52 } 42 }
53 } 43 }
54 elseif($request->query->get('id')[0] === 'n'){ // accès page nouvelle article interdit sans être admin 44 elseif($request->query->get('id')[0] === 'n'){ // accès page nouvelle article interdit sans être admin
55 return new Response($this->html, 302); 45 return new Response($this->html, 302);
56 } 46 }
57 } 47 }
48 //else // l'id dans l'adresse n'a pas d'effet sur la suite
49
50
51 /* 2/ accès au modèle */
52 $director = new Director($entityManager, true);
53 $director->getWholePageData($request);
54 self::$root_node = $director->getNode();
55
56
57 /* 3/ 2ème contrôle utilisant les données récupérées */
58
59 // article non trouvé en BDD
60 if(CURRENT_PAGE === 'article' && !$_SESSION['admin'] && self::$root_node->getNodeByName('main')->getAdoptedChild() === null){
61 return new Response($this->html, 302);
62 }
58 63
59 64
60 /* 3/ construction de la page avec builders et vues */ 65 /* 4/ construction de la page avec builders et vues */
61 $this->useChildrenBuilder(self::$root_node); 66 $this->useChildrenBuilder(self::$root_node);
62 67
63 return new Response($this->html, 200); 68 return new Response($this->html, 200);