summaryrefslogtreecommitdiff
path: root/public/index.php
diff options
context:
space:
mode:
Diffstat (limited to 'public/index.php')
-rw-r--r--public/index.php65
1 files changed, 25 insertions, 40 deletions
diff --git a/public/index.php b/public/index.php
index b7eeeae..89bb203 100644
--- a/public/index.php
+++ b/public/index.php
@@ -1,10 +1,24 @@
1<?php 1<?php
2// public/index/php 2// public/index/php
3 3
4/* plan d'action pour symfonyfier le site
51/ intégrer les classes Request et Response sans changer modifier les liens
62/ méthodes HTTP: GET, HEAD, POST, PUT, PATCH, DELETE, etc, pour un pré-routage (légères modifications des liens)
73/ passer à des chemins modernes "ciblant des ressources" genre /chemin/de/la/page
8 le mode modification de page doit thérioquement être appelé comme ça: /chemin/de/la/page/modif_page
9 apparemment, le from=nom_page pour les formulaires ne se fait pas...
104/ utiliser le routeur de symfony: nécéssite que tous les contrôleurs soient des classes avec un namespace
115/ http-foundation possède aussi une classe Session. intéressant!
12*/
13
4declare(strict_types=1); 14declare(strict_types=1);
5 15
16use Symfony\Component\HttpFoundation\Request;
17//use Symfony\Component\HttpFoundation\Session\Session;
18
6 19
7/* -- partie 1: prétraitement -- */ 20/* -- partie 1: prétraitement --
21code à exécuter pour toutes requêtes */
8 22
9// une nouvelle classe? taper: composer dump-autoload -o 23// une nouvelle classe? taper: composer dump-autoload -o
10require "../vendor/autoload.php"; 24require "../vendor/autoload.php";
@@ -12,6 +26,11 @@ require "../vendor/autoload.php";
12// configuration possible par l'utilisateur 26// configuration possible par l'utilisateur
13Config::load('../config/config.ini'); 27Config::load('../config/config.ini');
14 28
29// générateur de liens
30URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443
31URL::setPort(Config::$port);
32URL::setHost($_SERVER['HTTP_HOST'] . Config::$index_path);
33
15// les messages d'erreur de déploiement qu'on aime 34// les messages d'erreur de déploiement qu'on aime
16require('../src/installation.php'); 35require('../src/installation.php');
17phpDependancies(); 36phpDependancies();
@@ -20,13 +39,10 @@ phpDependancies();
20// $entityManager 39// $entityManager
21require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter 40require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter
22 41
23// générateur de liens 42$request = Request::createFromGlobals();
24URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443
25URL::setPort(Config::$port);
26URL::setHost($_SERVER['HTTP_HOST'] . Config::$index_path);
27 43
28// session 44// session
29//require('controller/Session.php'); 45// (symfony/http-foundation pourrait nous aider avec les sessions)
30ini_set('session.cookie_samesite', 'Strict'); 46ini_set('session.cookie_samesite', 'Strict');
31ini_set('session.cookie_httponly', 'On'); 47ini_set('session.cookie_httponly', 'On');
32ini_set('session.use_strict_mode', 'On'); 48ini_set('session.use_strict_mode', 'On');
@@ -38,39 +54,8 @@ if($_SESSION['admin'] === false || empty($_SESSION['user'])){ // OUT !!
38 $_SESSION['admin'] = false; 54 $_SESSION['admin'] = false;
39} 55}
40 56
41// login, mot de passe et captcha
42require '../src/controller/password.php';
43existUsers($entityManager); // si la table user est vide, on en crée un
44
45
46/* -- partie 2: contrôleurs -- */
47
48// navigation avec des GET
49define('CURRENT_PAGE', !empty($_GET['page']) ? htmlspecialchars($_GET['page']) : 'accueil');
50$id = '';
51if(!empty($_GET['id']))
52{
53 $id = htmlspecialchars($_GET['id']); // nettoyage qui n'abime pas les id du genre "n16"
54}
55
56/* -- routeur des données de formulaires et requêtes AJAX -- */
57require '../src/request_router.php';
58
59
60/* -- affichage d'une page -- */
61// mode modification d'une page activé
62if($_SESSION['admin'] && isset($_GET['page']) && isset($_GET['action']) && $_GET['action'] === 'modif_page'
63 && $_GET['page'] !== 'connexion' && $_GET['page'] !== 'article' && $_GET['page'] !== 'nouvelle_page' && $_GET['page'] !== 'menu_chemins')
64{
65 // les contrôles de la 2è ligne devraient utiliser un tableau
66 MainBuilder::$modif_mode = true;
67}
68 57
69// contrôleur accédant au modèle 58/* -- partie 2: routage et contrôleurs -- */
70$director = new Director($entityManager, true);
71$director->makeRootNode($id);
72$node = $director->getNode();
73 59
74// contrôleur principal des vues 60define('CURRENT_PAGE', htmlspecialchars($request->query->get('page') ?? 'accueil'));
75$view_builder = new ViewBuilder($node); 61require '../src/router.php'; \ No newline at end of file
76echo $view_builder->render(); // et voilà! \ No newline at end of file