* @copyright 2010 Tela-Botanica * @license GPL-v3 et 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' => 'Recherche', 'action' => 'executerActionParDefaut', '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']; } self::$parametres['url']->setVariableRequete('module', self::$parametres['module']); if (isset($_GET['action'])) { self::$parametres['action'] = $_GET['action']; } self::$parametres['url']->setVariableRequete('action', self::$parametres['action']); self::initialiserRegistre(); $ClasseModule = self::$parametres['module']; $action = self::$parametres['action']; $module = new $ClasseModule(); $module->$action(); self::fusionnerSortie($module->getSortie()); } private static function initialiserRegistre() { $registre = Registre::getInstance(); // Ajout des paramètres au registre $registre->set('parametres', self::$parametres); // Ajout du contexte au registre if (isset($_GET['contexte'])) { $registre->set('contexte', $_GET['contexte']); } } 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() { $sortie = self::$parametres['sortie']['titre']; if (Config::get('sortie_encodage') != Config::get('appli_encodage')) { $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage')); } return $sortie; } /** * Retourne la description du contenu de l'application. */ public static function getMetaDescription() { $sortie = self::$parametres['sortie']['description']; if (Config::get('sortie_encodage') != Config::get('appli_encodage')) { $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage')); } return $sortie; } /** * Retourne les mots-clés (tags) du contenu de l'application. */ public static function getMetaTags() { $sortie = self::$parametres['sortie']['tags']; if (Config::get('sortie_encodage') != Config::get('appli_encodage')) { $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage')); } return $sortie; } /** * Retourne le contenu du corps de l'application. */ public static function getContenuCorps() { $sortie = self::$parametres['sortie']['corps']; if (Config::get('sortie_encodage') != Config::get('appli_encodage')) { $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage')); } return $sortie; } /** * Retourne le contenu de la tête de l'application. */ public static function getContenuTete() { $sortie = self::$parametres['sortie']['tete']; if (Config::get('sortie_encodage') != Config::get('appli_encodage')) { $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage')); } return $sortie; } /** * Retourne le contenu du pied de l'application. */ public static function getContenuPied() { $sortie = self::$parametres['sortie']['pied']; if (Config::get('sortie_encodage') != Config::get('appli_encodage')) { $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage')); } return $sortie; } /** * Retourne les éléments de navigation de l'application. */ public static function getContenuNavigation() { $sortie = self::$parametres['sortie']['navigation']; if (Config::get('sortie_encodage') != Config::get('appli_encodage')) { $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage')); } return $sortie; } /** * Retourne le nom du module en cours (défini par GET ou par la config), * pour l'intégration Wordpress notamment */ public static function getModule() { return self::$parametres['module']; } /** * Retourne les chronos pris dans l'appli */ public static function getChrono() { $sortie = ''; if (Config::get('chronometrage')) { $chrono = Chronometre::afficherChrono(); $sortie = mb_convert_encoding($chrono, Config::get('sortie_encodage'), Config::get('appli_encodage')); } return $sortie; } /** * Retourne les messages d'exceptions et d'erreurs. */ public static function getExceptions() { $sortie = (Config::get('fw_debogage')) ? GestionnaireException::getExceptions() : ''; if (Config::get('sortie_encodage') != Config::get('appli_encodage')) { $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage')); } return $sortie; } }