Subversion Repositories eFlore/Applications.del

Rev

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

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