* @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 $Id$ */ abstract class aControleur extends Controleur { const META_TITRE = 'titre'; const META_DESCRIPTION = 'description'; const META_TAGS = 'tags'; const RENDU_TETE = 'tete'; const RENDU_CORPS = 'corps'; const RENDU_PIED = 'pied'; private $sortie = array(); private $parametres = array(); protected $url = null; public function __construct() { $this->parametres = Registre::get('parametres'); $this->url = $this->parametres['url']; parent::__construct(); } /** * Attribue une position de sortie à un contenu. */ protected function setSortie($position, $contenu, $fusionner = false) { if ($this->verifierExistenceTypeSortie($position)) { if ($fusionner) { $this->sortie[$position] .= $contenu; } else { $this->sortie[$position] = $contenu; } } } /** * Vérifie l'existence du type de sortie indiqué pour son utilisation dans le tableau de sortie. * @param string le type de sortie à tester. * @return bool true si le type de sortie est valide, sinon false. */ private function verifierExistenceTypeSortie($type) { $existe = true; if ($type != self::RENDU_TETE && $type != self::RENDU_CORPS && $type != self::RENDU_PIED && $type != self::META_TITRE && $type != self::META_DESCRIPTION && $type != self::META_TAGS) { trigger_error("Le type de sortie '$type' n'est pas une valeur prédéfinie.", E_USER_WARNING); $existe = false; } return $existe; } /** * Retourne le tableau de sortie à utiliser dans le controleur principal de l'application. */ public function getSortie() { return $this->sortie; } /** * Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie. */ protected function executerAction($ClasseModule, $action) { $module = new $ClasseModule(); $module->$action(); $this->fusionnerSortie($module->getSortie()); } /** * Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre. * @param array le tableau à fusionner */ private function fusionnerSortie($sortie) { $this->sortie = array_merge($this->sortie, $sortie); } /** * Pour mutualiser la création du pied de page de l'application, sa gestion est gérée dans cette classe. */ protected function chargerPiedDePage() { $donnees['appli'] = Framework::getInfoAppli(); $this->setSortie(self::RENDU_PIED, $this->getVue('pied', $donnees)); } } ?>