* @copyright 2010 Tela-Botanica * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL * @version SVN: $Id$ */ class Referentiel 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() { $meta = array('titre' => '', 'description' => '', 'tags' => ''); $sortie = array('metadonnees' => $meta, 'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => '', 'menu' => ''); $url = new Url(Config::get('url_base_index')); self::$parametres = array( 'module' => 'Accueil', '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(); restore_error_handler(); restore_exception_handler(); ini_set("display_errors", "1"); error_reporting(E_ALL); 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']); $registre = Registre::getInstance(); $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 Referentiel(); } } /** * Retourne le module courrant. */ public static function getModule() { return self::$parametres['module']; } /** * Retourne le titre du contenu de l'application. */ public static function getMetaTitre() { return self::$parametres['sortie']['metadonnees']['titre']; } /** * Retourne la description du contenu de l'application. */ public static function getMetaDescription() { return self::$parametres['sortie']['metadonnees']['description']; } /** * Retourne les mots-clés (tags) du contenu de l'application. */ public static function getMetaTags() { return self::$parametres['sortie']['metadonnees']['tags']; } /** * 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 menu de l'application. */ public static function getContenuMenu() { $sortie = self::$parametres['sortie']['menu']; 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 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; } } ?>