* @copyright 2010 Tela-Botanica * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3 * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 * @version $Id$ */ class AppControleur extends Controleur { /** * Instance de la classe pointant sur elle même (pour le pattern singleton) */ private static $instance = null; /** * Paramètres pour les collections */ private static $parametres = array(); /** * Constructeur vide */ public function __construct() { $sortie = array('titre' => '', 'description' => '', 'tags' => '', 'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => ''); $url = new Url(Config::get('url_base_index')); self::$parametres = array( 'module' => Config::get('module_defaut'), 'action' => Config::get('action_defaut'), 'sortie' => $sortie, 'url' => $url); parent::__construct(); } /** * Initialisation du controleur principal en fonction des paramêtres de l'url. */ public static function initialiser() { self::verifierCreationInstance(); self::gererSession(); if (isset($_GET['module'])) { self::$parametres['module'] = $_GET['module']; } if (isset($_GET['action'])) { self::$parametres['action'] = $_GET['action']; } self::$parametres['url']->setRequete(array('action' => self::$parametres['action'], 'module' => self::$parametres['module'])); Registre::set('parametres', &self::$parametres); $ClasseModule = self::$parametres['module']; $action = self::$parametres['action']; $module = new $ClasseModule(); $module->$action(); self::fusionnerSortie($module->getSortie()); } private static function gererSession() { if (Config::get('session_demarrage')) { // Attribution d'un nom à la session session_name(Config::get('session_nom')); // Démarrage de la session session_start(); } } /** * Fusionne un tableau de sortie par défaut avec le tableau renvoyé par l'action du module. * @param array le tableau à fusionner */ private static function fusionnerSortie($sortie) { self::$parametres['sortie'] = array_merge(self::$parametres['sortie'], $sortie); } /** * Vérifie si l'instance de classe à été crée, si non la crée. */ private static function verifierCreationInstance() { if (empty(self::$instance)) { self::$instance = new AppControleur(); } } /** * Retourne le titre du contenu de l'application. */ public static function getMetaTitre() { $contenu = self::$parametres['sortie']['titre']; $sortie = self::convertirEncodage($contenu); return $sortie; } /** * Retourne la description du contenu de l'application. */ public static function getMetaDescription() { $contenu = self::$parametres['sortie']['description']; $sortie = self::convertirEncodage($contenu); return $sortie; } /** * Retourne les mots-clés (tags) du contenu de l'application. */ public static function getMetaTags() { $contenu = self::$parametres['sortie']['tags']; $sortie = self::convertirEncodage($contenu); return $sortie; } /** * Retourne le contenu du corps de l'application. */ public static function getContenuCorps() { $contenu = self::$parametres['sortie']['corps']; $sortie = self::convertirEncodage($contenu); return $sortie; } /** * Retourne le contenu de la tête de l'application. */ public static function getContenuTete() { $contenu = self::$parametres['sortie']['tete']; $sortie = self::convertirEncodage($contenu); return $sortie; } /** * Retourne le contenu du pied de l'application. */ public static function getContenuPied() { $contenu = self::$parametres['sortie']['pied']; $sortie = self::convertirEncodage($contenu); return $sortie; } /** * Retourne les éléments de navigation de l'application. */ public static function getContenuNavigation() { $contenu = self::$parametres['sortie']['navigation']; $sortie = self::convertirEncodage($contenu); return $sortie; } /** * Retourne les chronos pris dans l'appli */ public static function getChrono() { $sortie = ''; if (Config::get('benchmark_chrono')) { $chrono = Chronometre::afficherChrono(); $sortie = self::convertirEncodage($chrono); } return $sortie; } /** * Retourne les messages d'exceptions et d'erreurs. */ public static function getExceptions() { $contenu = (Config::get('debogage')) ? GestionnaireException::getExceptions() : ''; $sortie = self::convertirEncodage($contenu); return $sortie; } /** * Convertion du contenu de l'application (voir fichier config.ini : appli_encodage), * dans le format de sortie désiré (voir fichier config.ini : sortie_encodage). * Cette convertion a lieu seulement si les formats sont différents. */ private static function convertirEncodage($contenu) { if (Config::get('sortie_encodage') != Config::get('appli_encodage')) { $contenu = mb_convert_encoding($contenu, Config::get('sortie_encodage'), Config::get('appli_encodage')); } return $contenu; } } ?>