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.php62
1 files changed, 62 insertions, 0 deletions
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 @@
1<?php
2// src/controller/ViewController.php
3
4declare(strict_types=1);
5
6use Doctrine\ORM\EntityManager;
7use Symfony\Component\HttpFoundation\Request;
8use Symfony\Component\HttpFoundation\Response;
9use Symfony\Component\HttpFoundation\RedirectResponse;
10
11class ViewController
12{
13 static function getWebPage(EntityManager $entityManager, Request $request): RedirectResponse
14 {
15 /* 1/ 1er contrôle des paramètres */
16
17 // mode modification d'une page
18 if(IS_ADMIN
19 && $request->query->has('mode') && $request->query->get('mode') === 'page_modif'
20 && !in_array(CURRENT_PAGE, ['article', 'new_page', 'menu_paths', 'user_edit', 'connection']))
21 {
22 MainBuilder::$modif_mode = true;
23 }
24 // page article: mode création et erreurs d'id
25 if(CURRENT_PAGE === 'article'){
26 if(IS_ADMIN){
27 if(!$request->query->has('id')){
28 return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? '']));
29 }
30 else{
31 // mode création d'article
32 // l'id du bloc et 'from=' sont vérifiés dans ArticleController::editorSubmit
33 if($request->query->get('id')[0] === 'n' && $request->query->has('from') && !empty($request->query->get('from'))){
34 NewBuilder::$new_article_mode = true;
35 }
36 }
37 }
38 elseif($request->query->get('id')[0] === 'n'){ // accès page nouvelle article interdit sans être admin
39 return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? '']));
40 }
41 }
42 // pas de else, l'id dans l'URL n'a pas d'effet ailleurs
43
44
45 /* 2/ accès au modèle */
46 $model = new Model($entityManager);
47 $model->makeMenuAndPaths();
48 $model->getWholePageData($request);
49
50
51 /* 3/ 2ème contrôle des paramètres avec les données récupérées */
52
53 // article non trouvé en BDD
54 if(CURRENT_PAGE === 'article' && !IS_ADMIN && $model->getNode()->getNodeByName('main')->getAdoptedChild() === null){
55 return new RedirectResponse((string)new URL(['page' => $request->query->get('from') ?? '']));
56 }
57
58
59 /* 4/ construction de la page avec builders et vues */
60 return new Response((new ViewDirector)->buildHTML($model->getNode()));
61 }
62} \ No newline at end of file