174 lines
5.3 KiB
PHP
174 lines
5.3 KiB
PHP
<?php
|
|
|
|
|
|
/**
|
|
* @brief Gère l'affichage des pages en fonction de l'argument 'page' de la barre d'adresse
|
|
* @note définit également la structure de la page (<head>)
|
|
*/
|
|
class controller
|
|
{
|
|
|
|
///Instance de la classe
|
|
private static $Ctrl;
|
|
|
|
///Code de la page courante
|
|
private $currpage_code;
|
|
|
|
///Titre de la page courante
|
|
private $currpage_title;
|
|
|
|
///URL de la page courante
|
|
private $currpage_url;
|
|
|
|
|
|
/**
|
|
* @brief Instancie le contrôleur et charge les données de la barre d'adresse
|
|
* @note Si le contrôleur a déja été instancié, cette methode executera uniquement route()
|
|
*/
|
|
public static function init()
|
|
{
|
|
//Si l'instance de la classe est NULL
|
|
if (!isset(self::$Ctrl))
|
|
{
|
|
//On instancie un nouveau controlleur
|
|
self::$Ctrl = new controller();
|
|
}
|
|
|
|
//On lance le routage
|
|
self::$Ctrl->route();
|
|
}
|
|
|
|
/**
|
|
* @brief Récupère le contrôleur utilisé
|
|
* @return controller
|
|
* @warning Si le contrôleur n'a pas été instancié, renverra null
|
|
*/
|
|
public static function get()
|
|
{
|
|
return self::$Ctrl;
|
|
}
|
|
|
|
/**
|
|
* @brief Génère le code HTML de la page désirée, enfonction du terminal
|
|
* @note le contrôleur doit avoir été instancié et être routé
|
|
*/
|
|
public function render()
|
|
{
|
|
//Chargement du fichier user.php pour la session et de la classe DAO
|
|
require_once "metier/user.php";
|
|
|
|
//Dérrage de la sessions
|
|
session_start();
|
|
|
|
|
|
//Detection du type de terminal (smartphone ou normal)
|
|
$bSmartphone =
|
|
strstr($_SERVER['HTTP_USER_AGENT'], 'Android')
|
|
|| strstr($_SERVER['HTTP_USER_AGENT'], 'BlackBerry')
|
|
|| strstr($_SERVER['HTTP_USER_AGENT'], 'Windows')
|
|
|| strstr($_SERVER['HTTP_USER_AGENT'], 'Opera Mini')
|
|
|| strstr($_SERVER['HTTP_USER_AGENT'], 'Mobile')
|
|
|| strstr($_SERVER['HTTP_USER_AGENT'], 'iPad');
|
|
|
|
//Cette variable permettra par la suite de décider du placement de
|
|
// certains menus ainsi que de la feuille de style
|
|
?>
|
|
|
|
<!-- Structure globale du template -->
|
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
<?php
|
|
echo "<link href=\"style/global.css\" rel=\"stylesheet\" type=\"text/css\" />";
|
|
if ($bSmartphone)
|
|
{
|
|
echo "<link href=\"style/smartphone.css\" rel=\"stylesheet\" type=\"text/css\" />";
|
|
}
|
|
?>
|
|
<script type="text/javascript" src ="scripts/manager.js"></script>
|
|
<?php echo " <title>BurgerQuizz - $this->currpage_title</title>"; ?>
|
|
<link rel="icon" type="image/ico" href="favicon.ico" />
|
|
</head>
|
|
<body>
|
|
|
|
<?php
|
|
// Bandeau de haut de page
|
|
include 'view/template/header.php';
|
|
|
|
// Menu de GAUCHE
|
|
if ($bSmartphone)
|
|
{
|
|
include 'view/template/smartphone_menu_left.php';
|
|
}
|
|
else
|
|
{
|
|
include 'view/template/menu_left.php';
|
|
}
|
|
|
|
|
|
// Menu de DROITE
|
|
if ($bSmartphone)
|
|
{
|
|
include 'view/template/smartphone_menu_right.php';
|
|
}
|
|
else
|
|
{
|
|
include 'view/template/menu_right.php';
|
|
}
|
|
|
|
//Contenu principal de la page
|
|
echo "<div id=\"core\">";
|
|
echo " <div id=\"content\">";
|
|
include $this->currpage_url;
|
|
echo " </div>";
|
|
echo "</div>";
|
|
?>
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* @brief Charge les données de la barre d'adresse
|
|
* @brief Charge les vars $currpage_code, $currpage_title, $currpage_url correspondant à la page en cours grace au param 'page'
|
|
*/
|
|
function route()
|
|
{
|
|
//Récupération de la page actuelle
|
|
if (isset($_GET['page']))
|
|
{//si le code est inscrit {
|
|
if (!array_key_exists($_GET['page'], config::$pages))
|
|
{//si le code n'est pas dans la liste des pages
|
|
$this->currpage_code = '404';
|
|
} else
|
|
{
|
|
$this->currpage_code = $_GET['page'];
|
|
}
|
|
} else
|
|
{
|
|
$this->currpage_code = 'welcome';
|
|
}
|
|
|
|
|
|
//Récupération du template à utiliser (smartphone/normal)
|
|
if (isset($_GET['tmpl']) && $_GET['tmpl'] == "smartphone")
|
|
{
|
|
$this->currpage_template = "smartphone";
|
|
} else
|
|
{
|
|
$this->currpage_template = "global";
|
|
}
|
|
|
|
//Titre & URL
|
|
$this->currpage_title = config::$pages[$this->currpage_code][0];
|
|
$this->currpage_url = config::$pages[$this->currpage_code][1];
|
|
}
|
|
|
|
}
|
|
?>
|