summaryrefslogtreecommitdiff
path: root/public/index.php
blob: b7eeeae060021806345afa2c15c60d33757adaae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
// public/index/php

declare(strict_types=1);


/* -- partie 1: prétraitement -- */

// une nouvelle classe? taper: composer dump-autoload -o
require "../vendor/autoload.php";

// configuration possible par l'utilisateur
Config::load('../config/config.ini');

// les messages d'erreur de déploiement qu'on aime
require('../src/installation.php');
phpDependancies();
//installation(); // des mkdir et chmod, chiant en dev

// $entityManager
require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter

// générateur de liens
URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443
URL::setPort(Config::$port);
URL::setHost($_SERVER['HTTP_HOST'] . Config::$index_path);

// session
//require('controller/Session.php');
ini_set('session.cookie_samesite', 'Strict');
ini_set('session.cookie_httponly', 'On');
ini_set('session.use_strict_mode', 'On');
ini_set('session.cookie_secure', 'On');
session_start();
$_SESSION['admin'] = !isset($_SESSION['admin']) ? false : $_SESSION['admin']; // intialisation sur faux
if($_SESSION['admin'] === false || empty($_SESSION['user'])){ // OUT !!
    $_SESSION['user'] = '';
    $_SESSION['admin'] = false;
}

// login, mot de passe et captcha
require '../src/controller/password.php';
existUsers($entityManager); // si la table user est vide, on en crée un


/* -- partie 2: contrôleurs -- */

// navigation avec des GET
define('CURRENT_PAGE', !empty($_GET['page']) ? htmlspecialchars($_GET['page']) : 'accueil');
$id = '';
if(!empty($_GET['id']))
{
    $id = htmlspecialchars($_GET['id']); // nettoyage qui n'abime pas les id du genre "n16"
}

/* -- routeur des données de formulaires et requêtes AJAX -- */
require '../src/request_router.php';


/* -- affichage d'une page -- */
// mode modification d'une page activé
if($_SESSION['admin'] && isset($_GET['page']) && isset($_GET['action']) && $_GET['action'] === 'modif_page'
    && $_GET['page'] !== 'connexion' && $_GET['page'] !== 'article' && $_GET['page'] !== 'nouvelle_page' && $_GET['page'] !== 'menu_chemins')
{
    // les contrôles de la 2è ligne devraient utiliser un tableau
    MainBuilder::$modif_mode = true;
}

// contrôleur accédant au modèle
$director = new Director($entityManager, true);
$director->makeRootNode($id);
$node = $director->getNode();

// contrôleur principal des vues
$view_builder = new ViewBuilder($node);
echo $view_builder->render(); // et voilà!