Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Rev 47 | Rev 69 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 47 Rev 61
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Classe abstraite dont chaque controleur de l'application doit hériter.
4
 * Classe abstraite dont chaque controleur de l'application doit hériter.
5
 *
5
 *
6
 * @category	PHP 5.2
6
 * @category	PHP 5.2
7
 * @package		eflore-consultation
7
 * @package		eflore-consultation
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @author		Delphine CAUQUIL <delphine@tela-botanica.org>
9
 * @author		Delphine CAUQUIL <delphine@tela-botanica.org>
10
 * @copyright	2011 Tela-Botanica
10
 * @copyright	2011 Tela-Botanica
11
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
11
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
12
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
12
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
13
 * @version		$Id$
13
 * @version		$Id$
14
 */
14
 */
15
abstract class aControleur extends Controleur {
15
abstract class aControleur extends Controleur {
16
	
16
	
17
	const META_TITRE = 'titre';
17
	const META_TITRE = 'titre';
18
	const META_DESCRIPTION = 'description';
18
	const META_DESCRIPTION = 'description';
19
	const META_TAGS = 'tags';
19
	const META_TAGS = 'tags';
20
	const RENDU_TETE = 'tete';
20
	const RENDU_TETE = 'tete';
21
	const RENDU_CORPS = 'corps';
21
	const RENDU_CORPS = 'corps';
22
	const RENDU_PIED = 'pied';
22
	const RENDU_PIED = 'pied';
23
	const RENDU_NAVIGATION = 'navigation';
23
	const RENDU_NAVIGATION = 'navigation';
24
	const RENDU_MENU = 'menu';
24
	const RENDU_MENU = 'menu';
25
	
25
	
26
	private $sortie = array();
26
	private $sortie = array();
27
	private $parametres = array();
27
	protected $urlBase = null;
28
	protected $url = null;
28
	protected $urlCourante = null;
29
	
29
	
30
	public function __construct()  {
30
	public function __construct()  {
31
		$chemin = Config::get('chemin_modules').
31
		$chemin = Config::get('chemin_modules').
32
			AppControleur::getNomDossierDepuisClasse(get_class($this)).DS.
32
			AppControleur::getNomDossierDepuisClasse(get_class($this)).DS.
33
			Config::get('dossier_squelettes').DS;
33
			Config::get('dossier_squelettes').DS;
34
		Registre::set('tbf.chemin_squelettes', $chemin);
34
		Registre::set('tbf.chemin_squelettes', $chemin);
-
 
35
		
35
		$this->parametres = Registre::get('parametres');
36
		$this->urlBase = Registre::get('eFlore.urlBase');
36
		$this->url = $this->parametres['url'];
37
		$this->urlCourante = Registre::get('eFlore.urlCourante');
-
 
38
		$this->urlRedirection = Registre::get('eFlore.urlRedirection');
-
 
39
		
37
		parent::__construct();
40
		parent::__construct();
38
	}
41
	}
-
 
42
	
-
 
43
	//+------------------------------------------------------------------------------------------------------+
-
 
44
	// GESTION de l'AFFICHAGE en SORTIE
39
	
45
	
40
	/**
46
	/**
41
 	* Attribue une position de sortie à un contenu.
47
 	* Attribue une position de sortie à un contenu.
42
 	*/
48
 	*/
43
	protected function setSortie($position, $contenu, $fusionner = false) {
49
	protected function setSortie($position, $contenu, $fusionner = false) {
44
		if ($this->verifierExistenceTypeSortie($position)) {
50
		if ($this->verifierExistenceTypeSortie($position)) {
45
			if ($fusionner) {
51
			if ($fusionner) {
46
				$this->sortie[$position] .= $contenu;
52
				$this->sortie[$position] .= $contenu;
47
			} else {
53
			} else {
48
				$this->sortie[$position] = $contenu;
54
				$this->sortie[$position] = $contenu;
49
			}
55
			}
50
		}
56
		}
51
	}
57
	}
52
	
58
	
53
	/**
59
	/**
54
	 * Vérifie l'existence du type de sortie indiqué pour son utilisation dans le tableau de sortie.
60
	 * Vérifie l'existence du type de sortie indiqué pour son utilisation dans le tableau de sortie.
55
	 * @param string le type de sortie à tester.
61
	 * @param string le type de sortie à tester.
56
	 * @return bool true si le type de sortie est valide, sinon false.
62
	 * @return bool true si le type de sortie est valide, sinon false.
57
	 */
63
	 */
58
	private function verifierExistenceTypeSortie($type) {
64
	private function verifierExistenceTypeSortie($type) {
59
		$existe = true;
65
		$existe = true;
60
		if ($type != self::RENDU_TETE &&
66
		if ($type != self::RENDU_TETE &&
61
			$type != self::RENDU_CORPS &&
67
			$type != self::RENDU_CORPS &&
62
			$type != self::RENDU_PIED &&
68
			$type != self::RENDU_PIED &&
63
			$type != self::RENDU_NAVIGATION &&
69
			$type != self::RENDU_NAVIGATION &&
64
			$type != self::RENDU_MENU &&
70
			$type != self::RENDU_MENU &&
65
			$type != self::META_TITRE &&
71
			$type != self::META_TITRE &&
66
			$type != self::META_DESCRIPTION &&
72
			$type != self::META_DESCRIPTION &&
67
			$type != self::META_TAGS) {
73
			$type != self::META_TAGS) {
68
			trigger_error("Le type de sortie '$type' n'est pas une valeur prédéfinie.", E_USER_WARNING);
74
			trigger_error("Le type de sortie '$type' n'est pas une valeur prédéfinie.", E_USER_WARNING);
69
			$existe = false;
75
			$existe = false;
70
		}
76
		}
71
		return $existe;
77
		return $existe;
72
	}
78
	}
73
	
79
	
74
	/**
80
	/**
75
	 * Retourne le tableau de sortie à utiliser dans le controleur principal de l'application.
81
	 * Retourne le tableau de sortie à utiliser dans le controleur principal de l'application.
76
	 */
82
	 */
77
	public function getSortie() {
83
	public function getSortie() {
78
		return $this->sortie;
84
		return $this->sortie;
79
	}
85
	}
80
 
86
 
81
	/**
87
	/**
-
 
88
	 * Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre.
-
 
89
	 * @param array le tableau à fusionner
-
 
90
	 */
-
 
91
	private function fusionnerSortie($sortie) {
-
 
92
		$this->sortie = array_merge($this->sortie, $sortie);
-
 
93
	}
-
 
94
 
-
 
95
	/**
82
	 * Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie.
96
	 * Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie.
83
	 * Permet à une action d'un module donnée de charger le résultat d'une autre action de module.
97
	 * Permet à une action d'un module donnée de charger le résultat d'une autre action de module.
84
	 */
98
	 */
85
	protected function executerAction($ClasseModule, $action) {
99
	protected function executerAction($ClasseModule, $action) {
86
		$module = new $ClasseModule();
100
		$module = new $ClasseModule();
87
		$module->$action();
101
		$module->$action();
88
		$this->fusionnerSortie($module->getSortie());
102
		$this->fusionnerSortie($module->getSortie());
89
		
103
		
90
	}
104
	}
91
	
-
 
92
	/**
105
	
93
	 * Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre.
106
	//+------------------------------------------------------------------------------------------------------+
94
	 * @param array le tableau à fusionner
-
 
95
	 */
-
 
96
	private function fusionnerSortie($sortie) {
-
 
97
		$this->sortie = array_merge($this->sortie, $sortie);
-
 
98
	}
-
 
99
	
107
	// GESTION du VUES COMMUNES
100
	/**
108
	/**
101
	 * Charge un squelette de vue depuis l'emplacement commune. 
109
	 * Charge un squelette de vue depuis l'emplacement commune. 
102
	 * @param String $tpl le nom du squelette à charger sans l'extenssion de fichier.
110
	 * @param String $tpl le nom du squelette à charger sans l'extenssion de fichier.
103
	 * @param Array $donnees les données à passer au squelette PHP.
111
	 * @param Array $donnees les données à passer au squelette PHP.
104
	 */
112
	 */
105
	private function getVueCommune($tpl, $donnees) {
113
	private function getVueCommune($tpl, $donnees) {
106
		$cheminOrigine = $this->getCheminSquelette();
114
		$cheminOrigine = $this->getCheminSquelette();
107
		$this->setCheminSquelette(Config::get('chemin_squelettes'));
115
		$this->setCheminSquelette(Config::get('chemin_squelettes'));
108
		$vue = $this->getVue($tpl, $donnees);
116
		$vue = $this->getVue($tpl, $donnees);
109
		$this->setCheminSquelette($cheminOrigine);
117
		$this->setCheminSquelette($cheminOrigine);
110
		return $vue;
118
		return $vue;
111
	}
119
	}
112
	
120
	
113
	/**
121
	/**
114
	 * Pour mutualiser la création du pied de page de l'application, sa gestion est gérée dans cette classe.
122
	 * Pour mutualiser la création du pied de page de l'application, sa gestion est gérée dans cette classe.
115
	 */
123
	 */
116
	public function chargerEnteteGeneral() {
124
	public function chargerEnteteGeneral() {
117
		$donnees['appli'] = Framework::getInfoAppli();
125
		$donnees['appli'] = Framework::getInfoAppli();
118
		$donnees['i18n'] = array_merge(I18n::get('Entete'), I18n::get('General'));
126
		$donnees['i18n'] = array_merge(I18n::get('Entete'), I18n::get('General'));
119
		$donnees['referentiel_titre'] = I18n::get('Referentiels-titres.'.Registre::get('parametres.referentiel'));
127
		$donnees['referentiel_titre'] = I18n::get('Referentiels-titres.'.Registre::get('parametres.referentiel'));
120
		
128
		
121
		$this->setSortie(self::RENDU_TETE, $this->getVueCommune('entete_page', $donnees));
129
		$this->setSortie(self::RENDU_TETE, $this->getVueCommune('entete_page', $donnees));
122
	}
130
	}
123
	
131
	
124
	/**
132
	/**
125
	 * Pour mutualiser la création du menu de l'application, sa gestion est gérée dans cette classe.
133
	 * Pour mutualiser la création du menu de l'application, sa gestion est gérée dans cette classe.
126
	 */
134
	 */
127
	public function chargerMenuGeneral() {
135
	public function chargerMenuGeneral() {
128
		$donnees['appli'] = Framework::getInfoAppli();
136
		$donnees['appli'] = Framework::getInfoAppli();
129
		$donnees['i18n'] = array_merge(I18n::get('Pied'), I18n::get('General'));
137
		$donnees['i18n'] = array_merge(I18n::get('Pied'), I18n::get('General'));
130
		$donnees['courrielContact'] = Config::get('courriel_contact');
138
		$donnees['courrielContact'] = Config::get('courriel_contact');
131
		
139
		
132
		$this->setSortie(self::RENDU_MENU, $this->getVueCommune('menu', $donnees));
140
		$this->setSortie(self::RENDU_MENU, $this->getVueCommune('menu', $donnees));
133
	}
141
	}
134
	
142
	
135
	/**
143
	/**
136
	 * Pour mutualiser la création du pied de page de l'application, sa gestion est gérée dans cette classe.
144
	 * Pour mutualiser la création du pied de page de l'application, sa gestion est gérée dans cette classe.
137
	 */
145
	 */
138
	public function chargerPiedGeneral() {
146
	public function chargerPiedGeneral() {
139
		$donnees['appli'] = Framework::getInfoAppli();
147
		$donnees['appli'] = Framework::getInfoAppli();
140
		$donnees['i18n'] = array_merge(I18n::get('Pied'), I18n::get('General'));
148
		$donnees['i18n'] = array_merge(I18n::get('Pied'), I18n::get('General'));
141
		$donnees['courrielContact'] = Config::get('courriel_contact');
149
		$donnees['courrielContact'] = Config::get('courriel_contact');
142
		
150
		
143
		$this->setSortie(self::RENDU_PIED, $this->getVueCommune('pied_page', $donnees));
151
		$this->setSortie(self::RENDU_PIED, $this->getVueCommune('pied_page', $donnees));
144
	}
152
	}
-
 
153
	
-
 
154
	//+------------------------------------------------------------------------------------------------------+
145
	
155
	// GESTION du CHARGEMENT des CLASSES MÉTIERS
-
 
156
	protected function getEfloreNoms() {
146
	protected function obtenirUrlRecherche($txt = null) {
157
		if (! isset($this->EfloreNoms)) {
-
 
158
			$this->EfloreNoms = new Noms();
147
		$this->url->setRequete(false);
159
		}
-
 
160
		return $this->EfloreNoms;
-
 
161
	}
148
		$this->url->setVariableRequete('module', 'Recherche');
162
	
149
		$this->url->setVariableRequete('action', 'rechercher');
163
	protected function getEfloreTaxons() {
150
		if (!is_null($txt)) {
164
		if (! isset($this->EfloreTaxons)) {
151
			$this->url->setVariableRequete('recherche', $txt);
165
			$this->EfloreTaxons = new Taxons();
-
 
166
		}
-
 
167
		return $this->EfloreTaxons;
-
 
168
	}
-
 
169
	
-
 
170
	//+------------------------------------------------------------------------------------------------------+
-
 
171
	// GESTION des URLs
152
		}
172
	protected function obtenirUrlBase() {
-
 
173
		$url = $this->urlBase->getURL();
-
 
174
		return $url;
-
 
175
	}
-
 
176
	
-
 
177
	private function getParametresUrlListe() {
-
 
178
		$parametres = array(
-
 
179
			'referentiel' => Registre::get('parametres.referentiel'),
-
 
180
			'module' => 'liste',
-
 
181
			'action' => 'liste',
-
 
182
			'rang' => $this->rang,
-
 
183
			'lettre' => $this->lettre
-
 
184
		);
-
 
185
		return $parametres;
-
 
186
	}
-
 
187
	
-
 
188
	protected function obtenirUrlListeFamille() {
-
 
189
		$parametres = $this->getParametresUrlListe();
-
 
190
		$parametres['rang'] = 'F';
-
 
191
		$this->urlBase->setRequete($parametres);
-
 
192
		$url = $this->urlBase->getURL();
-
 
193
		return $url;
-
 
194
	}
-
 
195
	
-
 
196
	protected function obtenirUrlListeGenre() {
-
 
197
		$parametres = $this->getParametresUrlListe();
153
		$url = $this->url->getURL();
198
		$parametres['rang'] = 'G';
-
 
199
		$this->urlBase->setRequete($parametres);
-
 
200
		$url = $this->urlBase->getURL();
-
 
201
		return $url;
-
 
202
	}
-
 
203
	
-
 
204
	
-
 
205
	protected function obtenirUrlRecherche($txt = null) {
154
		$this->url->unsetVariablesRequete(array('module', 'action', 'recherche'));
206
		// TODO : à revoir selon le modèle ci-dessus
155
		return $url;
207
		return $url;
156
	}
208
	}
157
}
209
}
158
?>
210
?>