diff options
Diffstat (limited to 'public/index.php')
-rw-r--r-- | public/index.php | 65 |
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 | ||
5 | 1/ intégrer les classes Request et Response sans changer modifier les liens | ||
6 | 2/ méthodes HTTP: GET, HEAD, POST, PUT, PATCH, DELETE, etc, pour un pré-routage (légères modifications des liens) | ||
7 | 3/ 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... | ||
10 | 4/ utiliser le routeur de symfony: nécéssite que tous les contrôleurs soient des classes avec un namespace | ||
11 | 5/ http-foundation possède aussi une classe Session. intéressant! | ||
12 | */ | ||
13 | |||
4 | declare(strict_types=1); | 14 | declare(strict_types=1); |
5 | 15 | ||
16 | use Symfony\Component\HttpFoundation\Request; | ||
17 | //use Symfony\Component\HttpFoundation\Session\Session; | ||
18 | |||
6 | 19 | ||
7 | /* -- partie 1: prétraitement -- */ | 20 | /* -- partie 1: prétraitement -- |
21 | code à 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 |
10 | require "../vendor/autoload.php"; | 24 | require "../vendor/autoload.php"; |
@@ -12,6 +26,11 @@ require "../vendor/autoload.php"; | |||
12 | // configuration possible par l'utilisateur | 26 | // configuration possible par l'utilisateur |
13 | Config::load('../config/config.ini'); | 27 | Config::load('../config/config.ini'); |
14 | 28 | ||
29 | // générateur de liens | ||
30 | URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443 | ||
31 | URL::setPort(Config::$port); | ||
32 | URL::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 |
16 | require('../src/installation.php'); | 35 | require('../src/installation.php'); |
17 | phpDependancies(); | 36 | phpDependancies(); |
@@ -20,13 +39,10 @@ phpDependancies(); | |||
20 | // $entityManager | 39 | // $entityManager |
21 | require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter | 40 | require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter |
22 | 41 | ||
23 | // générateur de liens | 42 | $request = Request::createFromGlobals(); |
24 | URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443 | ||
25 | URL::setPort(Config::$port); | ||
26 | URL::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) |
30 | ini_set('session.cookie_samesite', 'Strict'); | 46 | ini_set('session.cookie_samesite', 'Strict'); |
31 | ini_set('session.cookie_httponly', 'On'); | 47 | ini_set('session.cookie_httponly', 'On'); |
32 | ini_set('session.use_strict_mode', 'On'); | 48 | ini_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 | ||
42 | require '../src/controller/password.php'; | ||
43 | existUsers($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 | ||
49 | define('CURRENT_PAGE', !empty($_GET['page']) ? htmlspecialchars($_GET['page']) : 'accueil'); | ||
50 | $id = ''; | ||
51 | if(!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 -- */ | ||
57 | require '../src/request_router.php'; | ||
58 | |||
59 | |||
60 | /* -- affichage d'une page -- */ | ||
61 | // mode modification d'une page activé | ||
62 | if($_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 | 60 | define('CURRENT_PAGE', htmlspecialchars($request->query->get('page') ?? 'accueil')); |
75 | $view_builder = new ViewBuilder($node); | 61 | require '../src/router.php'; \ No newline at end of file |
76 | echo $view_builder->render(); // et voilà! \ No newline at end of file | ||