| 311 | jpm | 1 | <?php
 | 
        
           |  |  | 2 | // declare(encoding='UTF-8');
 | 
        
           |  |  | 3 | /**
 | 
        
           |  |  | 4 |  * Classe abstraite dont chaque controleur de l'application doit hériter.
 | 
        
           |  |  | 5 |  *
 | 
        
           |  |  | 6 |  * @category	php5.2
 | 
        
           |  |  | 7 |  * @package		exemple
 | 
        
           |  |  | 8 |  * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
 | 
        
           |  |  | 9 |  * @copyright	2010 Tela-Botanica
 | 
        
           |  |  | 10 |  * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
 | 
        
           |  |  | 11 |  * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
 | 
        
           |  |  | 12 |  * @version		$Id$
 | 
        
           |  |  | 13 |  */
 | 
        
           |  |  | 14 | abstract class aControleur extends Controleur {
 | 
        
           |  |  | 15 |   | 
        
           |  |  | 16 |     const META_TITRE = 'titre';
 | 
        
           |  |  | 17 |     const META_DESCRIPTION = 'description';
 | 
        
           |  |  | 18 |     const META_TAGS = 'tags';
 | 
        
           |  |  | 19 |     const RENDU_TETE = 'tete';
 | 
        
           |  |  | 20 |     const RENDU_CORPS = 'corps';
 | 
        
           |  |  | 21 |     const RENDU_PIED = 'pied';
 | 
        
           |  |  | 22 |   | 
        
           |  |  | 23 |     private $sortie = array();
 | 
        
           |  |  | 24 |     private $parametres = array();
 | 
        
           |  |  | 25 |     protected $url = null;
 | 
        
           |  |  | 26 |   | 
        
           |  |  | 27 |     public function __construct()  {
 | 
        
           | 317 | jpm | 28 |         $this->parametres = Registre::get('parametres');
 | 
        
           | 311 | jpm | 29 |         $this->url = $this->parametres['url'];
 | 
        
           |  |  | 30 |         parent::__construct();
 | 
        
           |  |  | 31 |     }
 | 
        
           |  |  | 32 |   | 
        
           |  |  | 33 |     /**
 | 
        
           |  |  | 34 |      * Attribue une position de sortie à un contenu.
 | 
        
           |  |  | 35 |      */
 | 
        
           |  |  | 36 |     protected function setSortie($position, $contenu, $fusionner = false) {
 | 
        
           |  |  | 37 |         if ($this->verifierExistenceTypeSortie($position)) {
 | 
        
           |  |  | 38 |             if ($fusionner) {
 | 
        
           |  |  | 39 |                 $this->sortie[$position] .= $contenu;
 | 
        
           |  |  | 40 |             } else {
 | 
        
           |  |  | 41 |                 $this->sortie[$position] = $contenu;
 | 
        
           |  |  | 42 |             }
 | 
        
           |  |  | 43 |         }
 | 
        
           |  |  | 44 |     }
 | 
        
           |  |  | 45 |   | 
        
           |  |  | 46 |     /**
 | 
        
           |  |  | 47 |      * Vérifie l'existence du type de sortie indiqué pour son utilisation dans le tableau de sortie.
 | 
        
           |  |  | 48 |      * @param string le type de sortie à tester.
 | 
        
           |  |  | 49 |      * @return bool true si le type de sortie est valide, sinon false.
 | 
        
           |  |  | 50 |      */
 | 
        
           |  |  | 51 |     private function verifierExistenceTypeSortie($type) {
 | 
        
           |  |  | 52 |         $existe = true;
 | 
        
           |  |  | 53 |         if ($type != self::RENDU_TETE &&
 | 
        
           |  |  | 54 |             $type != self::RENDU_CORPS &&
 | 
        
           |  |  | 55 |             $type != self::RENDU_PIED &&
 | 
        
           |  |  | 56 |             $type != self::META_TITRE &&
 | 
        
           |  |  | 57 |             $type != self::META_DESCRIPTION &&
 | 
        
           |  |  | 58 |             $type != self::META_TAGS) {
 | 
        
           |  |  | 59 |             trigger_error("Le type de sortie '$type' n'est pas une valeur prédéfinie.", E_USER_WARNING);
 | 
        
           |  |  | 60 |             $existe = false;
 | 
        
           |  |  | 61 |         }
 | 
        
           |  |  | 62 |         return $existe;
 | 
        
           |  |  | 63 |     }
 | 
        
           |  |  | 64 |   | 
        
           |  |  | 65 |     /**
 | 
        
           |  |  | 66 |      * Retourne le tableau de sortie à utiliser dans le controleur principal de l'application.
 | 
        
           |  |  | 67 |      */
 | 
        
           |  |  | 68 |     public function getSortie() {
 | 
        
           |  |  | 69 |         return $this->sortie;
 | 
        
           |  |  | 70 |     }
 | 
        
           |  |  | 71 |   | 
        
           |  |  | 72 |     /**
 | 
        
           |  |  | 73 |      * Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie.
 | 
        
           |  |  | 74 |      */
 | 
        
           |  |  | 75 |     protected function executerAction($ClasseModule, $action) {
 | 
        
           |  |  | 76 |         $module = new $ClasseModule();
 | 
        
           |  |  | 77 |         $module->$action();
 | 
        
           |  |  | 78 |         $this->fusionnerSortie($module->getSortie());
 | 
        
           |  |  | 79 |   | 
        
           |  |  | 80 |     }
 | 
        
           |  |  | 81 |   | 
        
           |  |  | 82 |     /**
 | 
        
           |  |  | 83 |      * Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre.
 | 
        
           |  |  | 84 |      * @param array le tableau à fusionner
 | 
        
           |  |  | 85 |      */
 | 
        
           |  |  | 86 |     private function fusionnerSortie($sortie) {
 | 
        
           |  |  | 87 |         $this->sortie = array_merge($this->sortie, $sortie);
 | 
        
           |  |  | 88 |     }
 | 
        
           |  |  | 89 |   | 
        
           |  |  | 90 |     /**
 | 
        
           |  |  | 91 |      * Pour mutualiser la création du pied de page de l'application, sa gestion est gérée dans cette classe.
 | 
        
           |  |  | 92 |      */
 | 
        
           |  |  | 93 |     protected function chargerPiedDePage() {
 | 
        
           |  |  | 94 |         $donnees['appli'] = Framework::getInfoAppli();
 | 
        
           |  |  | 95 |         $this->setSortie(self::RENDU_PIED, $this->getVue('pied', $donnees));
 | 
        
           |  |  | 96 |     }
 | 
        
           |  |  | 97 | }
 | 
        
           |  |  | 98 | ?>
 |