* @copyright 2010 Tela-Botanica * @license GPL-v3 et CECILL-v2 * @version SVN: */ class Collection 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' => ''); $url = new Url(Config::get('url_base')); 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']); $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 Collection(); } } /** * 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 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 = 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; } }