Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1611 Rev 1694
1
<?php
1
<?php
2
/**
2
/**
3
 * Le conteneur encapsule les classe Masque, Navigation et GestionBdd
3
 * Le conteneur encapsule les classe Masque, Navigation et GestionBdd
4
 * Il gère leur instanciation, ainsi que la récupération des paramètres depuis l'url ou
4
 * Il gère leur instanciation, ainsi que la récupération des paramètres depuis l'url ou
5
 * les fichiers de configuration
5
 * les fichiers de configuration
6
 *
6
 *
7
 * @category DEL
7
 * @category DEL
8
 * @package Commun
8
 * @package Commun
9
 * @author Grégoire Duché <gregoire@tela-botanica.org>
9
 * @author Grégoire Duché <gregoire@tela-botanica.org>
10
 * @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
10
 * @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
11
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 */
13
 */
14
//TODO : initialiser tous les objets dans le conteneur
14
//TODO : initialiser tous les objets dans le conteneur
15
//TODO : créer un tableau de partage
15
//TODO : créer un tableau de partage
16
class Conteneur {
16
class Conteneur {
17
 
17
 
18
	protected $parametres;
18
	protected $parametres;
19
	protected $navigation;
19
	protected $navigation;
20
	protected $masque;
20
	protected $masque;
21
	protected $gestionBdd;
21
	protected $gestionBdd;
22
	protected $sansLimite = false;
22
	protected $sansLimite = false;
23
 
23
 
24
	/**
24
	/**
25
	 * Constructeur de la classe
25
	 * Constructeur de la classe
26
	 * @param Array $parametres (optionnel) les paramètres additionnels à ajouter à ceux des fichiers de config
26
	 * @param Array $parametres (optionnel) les paramètres additionnels à ajouter à ceux des fichiers de config
27
	 * */
27
	 * */
28
	public function __construct(array $parametres = null) {
28
	public function __construct(array $parametres = null) {
29
		$this->parametres = is_null($parametres) ? array() : $parametres;
29
		$this->parametres = is_null($parametres) ? array() : $parametres;
30
	}
30
	}
31
 
31
 
32
	/**
32
	/**
33
	 * Obtenir un paramètre depuis le tableau de paramètres ou depuis le fichier de config
33
	 * Obtenir un paramètre depuis le tableau de paramètres ou depuis le fichier de config
34
	 * @param String $cle le nom du paramètre
34
	 * @param String $cle le nom du paramètre
35
	 * @return la valeur du paramètre
35
	 * @return la valeur du paramètre
36
	 * */
36
	 * */
37
	public function getParametre($cle) {
37
	public function getParametre($cle) {
38
		$valeur = isset($this->parametres[$cle]) ? $this->parametres[$cle] : Config::get($cle);
38
		$valeur = isset($this->parametres[$cle]) ? $this->parametres[$cle] : Config::get($cle);
39
		return $valeur;
39
		return $valeur;
40
	}
40
	}
41
 
41
 
42
	/**
42
	/**
-
 
43
	 * Obtenir un paramètre depuis le tableau de paramètres ou depuis le fichier de config
-
 
44
	 * et le transformer en tableau s'il est de la forme : "cle=valeur,cle=valeur,..."
-
 
45
	 * @param String $cle le nom du paramètre
-
 
46
	 * @return la valeur du paramètre
-
 
47
	 */
-
 
48
	public function getParametreTableau($cle) {
-
 
49
		$tableau = array();
-
 
50
		$parametre = $this->getParametre($cle);
-
 
51
		if (empty($parametre) === false) {
-
 
52
			$tableauPartiel = explode(',', $parametre);
-
 
53
			foreach ($tableauPartiel as $champ) {
-
 
54
				if (strpos($champ, '=') === false) {
-
 
55
					$tableau[] = trim($champ);
-
 
56
				} else {
-
 
57
					list($cle, $val) = explode('=', $champ);
-
 
58
					$tableau[trim($cle)] = trim($val);
-
 
59
				}
-
 
60
			}
-
 
61
		}
-
 
62
		return $tableau;
-
 
63
	}
-
 
64
 
-
 
65
	/**
43
	 * Enregistrer la valeur d'un paramètre
66
	 * Enregistrer la valeur d'un paramètre
44
	 * */
67
	 * */
45
	public function setParametre($cle, $valeur) {
68
	public function setParametre($cle, $valeur) {
46
		$this->parametres[$cle] = $valeur;
69
		$this->parametres[$cle] = $valeur;
47
	}
70
	}
48
 
71
 
49
	/**
72
	/**
50
	 * Charger la configuration depuis le fichier
73
	 * Charger la configuration depuis le fichier
51
	 * @param String $chemin le chemin relatif depuis le dossier configurations du fichier
74
	 * @param String $chemin le chemin relatif depuis le dossier configurations du fichier
52
	 * */
75
	 * */
53
	public function chargerConfiguration($chemin) {
76
	public function chargerConfiguration($chemin) {
54
		$cheminConfigurations = Config::get('chemin_configurations');
77
		$cheminConfigurations = Config::get('chemin_configurations');
55
		if ($cheminConfigurations == null || $cheminConfigurations == '') {
78
		if ($cheminConfigurations == null || $cheminConfigurations == '') {
56
			$message = 'Le chemin vers le répertoire Configurations n\'est pas renseigné';
79
			$message = 'Le chemin vers le répertoire Configurations n\'est pas renseigné';
57
			$code = RestServeur::HTTP_CODE_ERREUR;
80
			$code = RestServeur::HTTP_CODE_ERREUR;
58
			throw new Exception($message, $code);
81
			throw new Exception($message, $code);
59
		}
82
		}
60
		Config::charger($cheminConfigurations.DS.$chemin);
83
		Config::charger($cheminConfigurations.DS.$chemin);
61
 
84
 
62
		if ($this->masque = $this->creerMasque()) {
85
		if ($this->masque = $this->creerMasque()) {
63
			$this->masque->chargerMasque();
86
			$this->masque->chargerMasque();
64
		} else {
87
		} else {
65
			$message = 'Erreur lors de la création du Masque';
88
			$message = 'Erreur lors de la création du Masque';
66
			$code = RestServeur::HTTP_CODE_ERREUR;
89
			$code = RestServeur::HTTP_CODE_ERREUR;
67
			throw new Exception($message, $code);
90
			throw new Exception($message, $code);
68
		}
91
		}
69
 
92
 
70
		if ($this->navigation = $this->creerNavigation()) {
93
		if ($this->navigation = $this->creerNavigation()) {
71
			$this->navigation->chargerUrl();
94
			$this->navigation->chargerUrl();
72
		} else {
95
		} else {
73
			$message = 'Erreur lors de la création de la Navigation';
96
			$message = 'Erreur lors de la création de la Navigation';
74
			$code = RestServeur::HTTP_CODE_ERREUR;
97
			$code = RestServeur::HTTP_CODE_ERREUR;
75
			throw new Exception($message, $code);
98
			throw new Exception($message, $code);
76
		}
99
		}
77
 
100
 
78
		$this->creerGestionBdd($this->navigation, Config::get('schemaBdd'));
101
		$this->creerGestionBdd($this->navigation, Config::get('schemaBdd'));
79
	}
102
	}
80
 
103
 
81
	/**
104
	/**
82
	 * Créer l'objet Masque en fonction des configurations
105
	 * Créer l'objet Masque en fonction des configurations
83
	 * */
106
	 * */
84
	private function creerMasque() {
107
	private function creerMasque() {
85
		$this->masque = new Masque(Config::get('masques_possibles'), $this->parametres);
108
		$this->masque = new Masque(Config::get('masques_possibles'), $this->parametres);
86
		return $this->masque;
109
		return $this->masque;
87
 
110
 
88
	}
111
	}
89
 
112
 
90
	/**
113
	/**
91
	 * Créer l'objet navigation avec les paramètres
114
	 * Créer l'objet navigation avec les paramètres
92
	 * */
115
	 * */
93
	private function creerNavigation() {
116
	private function creerNavigation() {
94
		return ($this->navigation = new Navigation($this->parametres));
117
		return ($this->navigation = new Navigation($this->parametres));
95
	}
118
	}
96
 
119
 
97
	/**
120
	/**
98
	 * Créer l'objet Gestion BDD
121
	 * Créer l'objet Gestion BDD
99
	 * */
122
	 * */
100
	private function creerGestionBdd($navigation, $schemaBdd) {
123
	private function creerGestionBdd($navigation, $schemaBdd) {
101
		$this->gestionBdd = new GestionBdd($navigation, $schemaBdd);
124
		$this->gestionBdd = new GestionBdd($navigation, $schemaBdd);
102
	}
125
	}
103
 
126
 
104
 
127
 
105
	/**
128
	/**
106
	 * Changer la valeur de sans limite pour ne pas l'afficher dans l'entete
129
	 * Changer la valeur de sans limite pour ne pas l'afficher dans l'entete
107
	 * */
130
	 * */
108
	public function setSansLimite() {
131
	public function setSansLimite() {
109
		$this->sansLimite = true;
132
		$this->sansLimite = true;
110
	}
133
	}
111
 
134
 
112
	/**
135
	/**
113
	 * Récupérer l'objet GestionBdd
136
	 * Récupérer l'objet GestionBdd
114
	 * */
137
	 * */
115
	public function getGestionBdd() {
138
	public function getGestionBdd() {
116
		return $this->gestionBdd;
139
		return $this->gestionBdd;
117
	}
140
	}
118
 
141
 
119
	/**
142
	/**
120
	 * Récupérer l'objet Navigation
143
	 * Récupérer l'objet Navigation
121
	 * */
144
	 * */
122
	public function getNavigation() {
145
	public function getNavigation() {
123
		return $this->navigation;
146
		return $this->navigation;
124
	}
147
	}
125
 
148
 
126
	/**
149
	/**
127
	 * Récupérer l'objet Masque
150
	 * Récupérer l'objet Masque
128
	 * */
151
	 * */
129
	public function getMasque() {
152
	public function getMasque() {
130
		return $this->masque;
153
		return $this->masque;
131
	}
154
	}
132
 
155
 
133
	/**
156
	/**
134
	* Créer l'entête en fonction des paramètres donnés
157
	* Créer l'entête en fonction des paramètres donnés
135
	* */
158
	* */
136
	public function getEntete() {
159
	public function getEntete() {
137
		$entete = array();
160
		$entete = array();
138
		$entete['masque'] = $this->masque->getChaineMasque();
161
		$entete['masque'] = $this->masque->getChaineMasque();
139
 
162
 
140
		$entete['total'] = $this->navigation->getTotal();
163
		$entete['total'] = $this->navigation->getTotal();
141
		if ($this->sansLimite == false) {
164
		if ($this->sansLimite == false) {
142
			$entete['depart'] = $this->navigation->getDepart();
165
			$entete['depart'] = $this->navigation->getDepart();
143
			$entete['limite'] = $this->navigation->getLimite();
166
			$entete['limite'] = $this->navigation->getLimite();
144
 
167
 
145
			$lienPrecedent = $this->navigation->recupererHrefPrecedent();
168
			$lienPrecedent = $this->navigation->recupererHrefPrecedent();
146
 
169
 
147
			if ($lienPrecedent != null) {
170
			if ($lienPrecedent != null) {
148
				$entete['href.precedent'] = $lienPrecedent;
171
				$entete['href.precedent'] = $lienPrecedent;
149
			}
172
			}
150
 
173
 
151
			$lienSuivant = $this->navigation->recupererHrefSuivant();
174
			$lienSuivant = $this->navigation->recupererHrefSuivant();
152
			if ($lienSuivant) {
175
			if ($lienSuivant) {
153
				$entete['href.suivant'] = $lienSuivant;
176
				$entete['href.suivant'] = $lienSuivant;
154
			}
177
			}
155
		}
178
		}
156
 
179
 
157
		return $entete;
180
		return $entete;
158
	}
181
	}
159
 
182
 
160
	public function getRestClient() {
183
	public function getRestClient() {
161
		if (!isset($this->restClient)) {
184
		if (!isset($this->restClient)) {
162
			$this->restClient = new RestClient();
185
			$this->restClient = new RestClient();
163
		}
186
		}
164
		return $this->restClient;
187
		return $this->restClient;
165
	}
188
	}
166
 
189
 
167
	public function getControleAcces() {
190
	public function getControleAcces() {
168
		if (!isset($this->controleAcces)) {
191
		if (!isset($this->controleAcces)) {
169
			$this->controleAcces = new ControleAcces($this);
192
			$this->controleAcces = new ControleAcces($this);
170
		}
193
		}
171
		return $this->controleAcces;
194
		return $this->controleAcces;
172
	}
195
	}
173
}
196
}
174
?>
197
?>