* @copyright 2010 Tela-Botanica * @license GPL-v3 et CECILL-v2 * @version $Id: AppControleur.php 160 2010-09-13 13:10:41Z aurelien $ */ class AppControleur extends Controleur { /** * Instance de la classe pointant sur elle même (pour le pattern singleton) */ private static $instance = null; /** * Instance de l'utilisateur en cours */ private static $utilisateur = null; /** * Paramètres */ 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' => 'Station', '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(); self::gererUtilisateur(); 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(); if(!self::utilisateurEstIdentifie()) { self::afficherFormulaireIdentification(); return; } 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')); if(!isset($_SESSION)){ // Démarrage de la session si besoin session_start(); } } } private static function gererUtilisateur() { if(Config::get('identification') == true) { $classe_utilisateur = Config::get('objet_utilisateur'); if(!class_exists($classe_utilisateur)) { trigger_error('Aucune classe n\'a été définie pour gérer les utilisateurs', E_USER_ERROR); } self::$utilisateur = new $classe_utilisateur(); if(self::$utilisateur->estAdmin()) { if($nouvelle_identite = self::changementIdentiteDemande()) { self::getUtilisateur()->setIdentite($nouvelle_identite); } self::afficherBarreAdmin(); } } } public static function getUtilisateur() { if(self::$utilisateur == null) { self::gererUtilisateur(); } return self::$utilisateur; } public static function utilisateurEstIdentifie() { return self::getUtilisateur()->estIdentifie(); } public static function changementIdentiteDemande() { if(self::getUtilisateur()->estAdmin() && isset($_POST['identite_utilisateur'])) { return $_POST['identite_utilisateur']; } return false; } private static function afficherFormulaireIdentification() { $donnees['formulaire_identification'] = self::getUtilisateur()->getFormulaireidentification(); $donnees['formulaire_inscription'] = self::getUtilisateur()->getFormulaireInscription(); $formulaire = self::$instance->getVue('formulaires/identification', $donnees); self::$parametres['sortie']['corps'] = $formulaire; } private static function afficherBarreAdmin() { $barre_admin = self::$instance->getVue('navigation/barre_admin', $donnees); self::$parametres['sortie']['tete'] = $barre_admin; } public static function getIdUtilisateur() { return self::getUtilisateur()->getIdentite(); //return self::getUtilisateur()->getIdentifiantNumerique(); } public static function getNomUtilisateur() { return self::getUtilisateur()->getNom(); //return self::getUtilisateur()->getIdentifiantNumerique(); } public static function changerUtilisateur() { return self::getUtilisateur()->setIdentite(); } /** * 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(); } } public static function getInstance() { self::verifierCreationInstance(); return self::$instance; } /** * 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 des styles de l'application. */ public static function getContenuStyle() { $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 des script de l'application. */ public static function getContenuScript() { $sortie = self::$parametres['sortie']['script']; 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 = (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; } } ?>