Sélectionner une révision Git
Router.php
Router.php 11,16 Kio
<?php
class Router
{ // classe PHP permettant l'analyse de l'URL des requêtes
public static function analyze($query)
{ // méthode d'analyse de la requête
// on définit une variable, par défaut initialisée sur les paramètres de page d'erreur 404 (page non trouvée)
$result = array(
"controller" => "Error", // le nom du contrôleur à instancier
"action" => "error404", // le nom de l'action à effectuer, autrement dit de la méthode à appeler dans ce contrôleur
"params" => array() // les paramètres de la requête (dans un tableau), par défaut aucun
);
if($query === "" || $query === "/") { // on regarde si la requête est identique (===) à la chaîne vide ou "/", et si oui, c'est qu'on voulait accéder à la page d'accueil
$result["controller"] = "Index"; // le contrôleur est donc Index
$result["action"] = "display"; // on va afficher la page, l'action est donc display
// il n'y a pas de paramètres, donc pas d'affectation de "params"
}
else { // sinon, on a des infos sur la page demandée
$parts = explode("/", $query); // on sépare la requête selon les /, et on regarde ce qu'on connait comme ordres dedans
/*** consultation des jeux ***/
if($parts[0] == "jeu" && count($parts) == 2) { // on veut consulter la fiche d'un jeu (jeu/nomDuJeu)
$result["controller"] = "Jeu"; // le contrôleur à instancier sera "JeuController", on met donc "Jeu" dans la variable de résultat
$result["action"] = "display"; // on veut afficher les informations d'un jeu, donc on donne l'action "display"
$result["params"]["slug"] = $parts[1]; //on a des paramètres dans l'URL (normalement le nom/id du jeu), on le stocke aussi
}
else if($parts[0] == "jeu" && count($parts) == 1 && isset($_POST['rechercheJeu'])) { // on veut consulter la fiche d'un jeu via la barre de recherche du header
$result["controller"] = "Jeu"; // le contrôleur à instancier sera "JeuController", on met donc "Jeu" dans la variable de résultat
$result["action"] = "redirect"; // on veut rediriger vers la page d'un jeu, donc on donne l'action "redirect"
$result["params"]["slug"] = $_POST['rechercheJeu']; //on a un paramètre (le nom du jeu), on le stocke aussi
}
else if($parts[0] == "listejeux") { // on veut consulter la liste des jeux (listejeux/, avec n'importe quoi derrière)
$result["controller"] = "Jeu"; // le contrôleur à instancier sera "JeuController", on met donc "Jeu" dans la variable de résultat
$result["action"] = "displayListe"; // on veut afficher la liste des jeux, donc on donne l'action "displayListe"
// il n'y a pas de paramètres attendus, on n'affecte pas $result["params"]
}
else if($parts[0] == "jeux") { // on veut récupérer la liste des jeux au format JSON
$result["controller"] = "Jeu"; // le contrôleur à instancier sera "JeuController", on met donc "Jeu" dans la variable de résultat
$result["action"] = "listeJson"; // on veut générer une sortie au format json, on donne donc l'action "listeJson"
// il n'y a pas de paramètres attendus, on n'affecte pas $result["params"]
}
else if($parts[0] == "addjeu" && count($parts) == 1) { // on veut afficher le formulaire d'ajout(url/addjeu)
$result["controller"] = "Jeu";
$result["action"] = "displayFormAdd"; // on veut afficher le formulaire
// il n'y a pas de paramètres attendus, on n'affecte pas $result["params"]
}
else if($parts[0] == "addjeu" && count($parts) == 2 && $parts[1] == "addrequest") { // on veut enregistrer la demande d'ajout (addjeu/addrequest)
$result["controller"] = "Jeu"; // le contrôleur à instancier sera "JeuController", on met donc "Jeu" dans la variable de résultat
$result["action"] = "addRequest"; // on veut ajouter le jeu à la BDD, donc on donne l'action "addRequest"
// il n'y a pas de paramètres attendus, on n'affecte pas $result["params"]
}
else if($parts[0] == "addjeu" && count($parts) == 2 && $parts[1] == "requestvalid") { // l'enregistrement de la demande a été effectué, on affiche un message de confirmation (addjeu/requestvalid)
$result["controller"] = "Jeu";
$result["action"] = "displayRequestValid";
// il n'y a pas de paramètres attendus, on n'affecte pas $result["params"]
}
else if($parts[0] == "add_favoris" && count($parts) == 2) { // pour ajouter un jeu à ses favoris (add_favoris/nomdujeu)
$result["controller"] = "Jeu";
$result["action"] = "displayFavorisValid";
$result["params"]["slug"] = $parts[1]; //on a des paramètres dans l'URL (normalement le slug du jeu), on le stocke aussi
}
/*** consultation des profils ***/
else if($parts[0] == "profil" && count($parts) == 2) { // consultation d'un profil : 2 morceaux (profil/pseudoDeLaPersonne)
$result["controller"] = "Profil";
$result["action"] = "display";
$result["params"]["slug"] = $parts[1];
}
else if($parts[0] == "profil" && count($parts) == 3 && $parts[2] == "edit") {
$result["controller"] = "Profil";
$result["action"] = "displayEdit";
$result["params"]["slug"] = $parts[1];
}
else if($parts[0] == "profil" && count($parts) == 4 && $parts[2] == "edit" && $parts[3] == "verify") {
$result["controller"] = "Profil";
$result["action"] = "verifyEdit";
$result["params"]["slug"] = $parts[1];
}
else if($parts[0] == "profil" && count($parts) == 4 && $parts[2] == "edit" && $parts[3] == "valid") {
$result["controller"] = "Profil";
$result["action"] = "displayValid";
$result["params"]["slug"] = $parts[1];
}
/*** consultation des classements ***/
else if($parts[0] == "classement" && count($parts) > 1) { // si classement général : 2 morceaux(classement/global), si classement spécifique : 3 morceaux (classement/jeu/nomDuJeu)
$result["controller"] = "Classement";
$result["action"] = "display";
$result["params"]["slug"] = $parts[1]; //on a des paramètres dans l'URL, on le stocke aussi
for($k=2; $k<count($parts); $k++) { // on recompose le bout d'URL encore inutilisé
$result["params"]["slug"] = $result["params"]["slug"].'/'.$parts[$k];
}
}
/*** connexion au site ***/
else if($parts[0] == "connexion" && count($parts) == 1) { // formulaire de connexion
$result["controller"] = "Connexion";
$result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire
}
else if($parts[0] == "deconnexion" && count($parts) == 1) { // page de déconnexion
$result["controller"] = "Connexion";
$result["action"] = "displayDisconnect"; // "displayDisconnect" pour afficher la page de déconnexion réussie
}
else if($parts[0] == "connexion" && count($parts) == 2 && $parts[1] == "valid") { // connexion réussie
$result["controller"] = "Connexion";
$result["action"] = "displayValid"; // "displayValid" pour afficher la page avec le message de réussite
}
else if($parts[0] == "connexion" && count($parts) == 2 && $parts[1] == "verify") { // connexion réussie
$result["controller"] = "Connexion";
$result["action"] = "verify"; // "verify" pour appeler la méthode de vérification
}
/*** inscription au site ***/
else if($parts[0] == "inscription" && count($parts) == 1) { // formulaire de connexion
$result["controller"] = "Register";
$result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire
}
else if($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "valid") { // connexion réussie
$result["controller"] = "Register";
$result["action"] = "displayValid"; // "displayValid" pour afficher la page avec le message de réussite
}
else if($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "verify") { // vérification de la validité des champs
$result["controller"] = "Register";
$result["action"] = "verify"; // "verify" pour appeler la méthode de vérification
}
else if($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "save") { // réalisation de l'inscription dans la BDD
$result["controller"] = "Register";
$result["action"] = "save"; // "save" pour appeler la méthode d'enregistrement dans la BDD
}
/*** Ajout de partie ***/
else if ($parts[0] == "add_partie" && count($parts) == 1) {
$result["controller"] = "Partie";
$result["action"] = "displayStep0";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "valid") {
$result["controller"] = "Partie";
$result["action"] = "displayValid";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "step1") {
$result["controller"] = "Partie";
$result["action"] = "displayStep1";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "step2") {
$result["controller"] = "Partie";
$result["action"] = "displayStep2";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "stepe1") {
$result["controller"] = "Partie";
$result["action"] = "displayStepe1";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "stepe2") {
$result["controller"] = "Partie";
$result["action"] = "displayStepe2";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "verifystep0") {
$result["controller"] = "Partie";
$result["action"] = "verifyStep0";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "verifystep1") {
$result["controller"] = "Partie";
$result["action"] = "verifyStep1";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "verifystep2") {
$result["controller"] = "Partie";
$result["action"] = "verifyStep2";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "addjoueurs1") {
$result["controller"] = "Partie";
$result["action"] = "addjoueurs1";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "deljoueurs1") {
$result["controller"] = "Partie";
$result["action"] = "deljoueurs1";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "addequipe") {
$result["controller"] = "Partie";
$result["action"] = "addequipe";
}
else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "delequipe") {
$result["controller"] = "Partie";
$result["action"] = "delequipe";
}
// à chaque fois qu'on crée une nouvelle page, il faut rajouter un cas à cet endroit !
// si on n'a rien trouvé que l'on connaissait, alors la page demandée n'existe pas => erreur 404. Ça tombe bien, c'est comme ça qu'on a initialisé la variable ! :-D
}
return $result; // on renvoie le tableau avec les informations nécessaires pour savoir quoi faire
}
}