Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1605 Rev 1611
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
-
 
15
//TODO : créer un tableau de partage
14
class Conteneur {
16
class Conteneur {
15
 
17
 
16
	protected $parametres;
18
	protected $parametres;
17
	protected $navigation;
19
	protected $navigation;
18
	protected $masque;
20
	protected $masque;
19
	protected $gestionBdd;
21
	protected $gestionBdd;
20
	protected $sansLimite = false;
22
	protected $sansLimite = false;
21
 
-
 
22
	//TODO : initialiser tous les objets dans le conteneur
-
 
23
	//TODO : créer un tableau de partage
-
 
24
 
23
 
25
	/**
24
	/**
26
	 * Constructeur de la classe
25
	 * Constructeur de la classe
27
	 * @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
28
	 * */
27
	 * */
29
	public function __construct(array $parametres = null) {
28
	public function __construct(array $parametres = null) {
30
		$this->parametres = is_null($parametres) ? array() : $parametres;
29
		$this->parametres = is_null($parametres) ? array() : $parametres;
31
	}
30
	}
32
 
31
 
33
	/**
32
	/**
-
 
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
-
 
35
	 * @return la valeur du paramètre
-
 
36
	 * */
-
 
37
	public function getParametre($cle) {
-
 
38
		$valeur = isset($this->parametres[$cle]) ? $this->parametres[$cle] : Config::get($cle);
-
 
39
		return $valeur;
-
 
40
	}
-
 
41
 
-
 
42
	/**
-
 
43
	 * Enregistrer la valeur d'un paramètre
-
 
44
	 * */
-
 
45
	public function setParametre($cle, $valeur) {
-
 
46
		$this->parametres[$cle] = $valeur;
-
 
47
	}
-
 
48
 
-
 
49
	/**
34
	 * Charger la configuration depuis le fichier
50
	 * Charger la configuration depuis le fichier
35
	 * @param String $chemin le chemin relatif depuis le dossier configurations du fichier
51
	 * @param String $chemin le chemin relatif depuis le dossier configurations du fichier
36
	 * */
52
	 * */
37
	public function chargerConfiguration($chemin) {
53
	public function chargerConfiguration($chemin) {
38
		$cheminConfigurations = Config::get('chemin_configurations');
54
		$cheminConfigurations = Config::get('chemin_configurations');
39
		if ($cheminConfigurations == null || $cheminConfigurations == '') {
55
		if ($cheminConfigurations == null || $cheminConfigurations == '') {
40
			$message = 'Le chemin vers le répertoire Configurations n\'est pas renseigné';
56
			$message = 'Le chemin vers le répertoire Configurations n\'est pas renseigné';
41
			$code = RestServeur::HTTP_CODE_ERREUR;
57
			$code = RestServeur::HTTP_CODE_ERREUR;
42
			throw new Exception($message, $code);
58
			throw new Exception($message, $code);
43
		}
59
		}
44
		Config::charger($cheminConfigurations.DS.$chemin);
60
		Config::charger($cheminConfigurations.DS.$chemin);
45
 
61
 
46
		if ($this->masque = $this->creerMasque()) {
62
		if ($this->masque = $this->creerMasque()) {
47
			$this->masque->chargerMasque();
63
			$this->masque->chargerMasque();
48
		} else {
64
		} else {
49
			$message = 'Erreur lors de la création du Masque';
65
			$message = 'Erreur lors de la création du Masque';
50
			$code = RestServeur::HTTP_CODE_ERREUR;
66
			$code = RestServeur::HTTP_CODE_ERREUR;
51
			throw new Exception($message, $code);
67
			throw new Exception($message, $code);
52
		}
68
		}
53
 
69
 
54
		if ($this->navigation = $this->creerNavigation()) {
70
		if ($this->navigation = $this->creerNavigation()) {
55
			$this->navigation->chargerUrl();
71
			$this->navigation->chargerUrl();
56
		} else {
72
		} else {
57
			$message = 'Erreur lors de la création de la Navigation';
73
			$message = 'Erreur lors de la création de la Navigation';
58
			$code = RestServeur::HTTP_CODE_ERREUR;
74
			$code = RestServeur::HTTP_CODE_ERREUR;
59
			throw new Exception($message, $code);
75
			throw new Exception($message, $code);
60
		}
76
		}
61
 
77
 
62
		$this->creerGestionBdd($this->navigation, Config::get('schemaBdd'));
78
		$this->creerGestionBdd($this->navigation, Config::get('schemaBdd'));
63
	}
79
	}
64
 
80
 
65
	/**
81
	/**
66
	 * Créer l'objet Masque en fonction des configurations
82
	 * Créer l'objet Masque en fonction des configurations
67
	 * */
83
	 * */
68
	private function creerMasque() {
84
	private function creerMasque() {
69
		$this->masque = new Masque(Config::get('masques_possibles'), $this->parametres);
85
		$this->masque = new Masque(Config::get('masques_possibles'), $this->parametres);
70
		return $this->masque;
86
		return $this->masque;
71
 
87
 
72
	}
88
	}
73
 
89
 
74
	/**
90
	/**
75
	 * Créer l'objet navigation avec les paramètres
91
	 * Créer l'objet navigation avec les paramètres
76
	 * */
92
	 * */
77
	private function creerNavigation() {
93
	private function creerNavigation() {
78
		return ($this->navigation = new Navigation($this->parametres));
94
		return ($this->navigation = new Navigation($this->parametres));
79
	}
95
	}
80
 
96
 
81
	/**
97
	/**
82
	 * Créer l'objet Gestion BDD
98
	 * Créer l'objet Gestion BDD
83
	 * */
99
	 * */
84
	private function creerGestionBdd($navigation, $schemaBdd) {
100
	private function creerGestionBdd($navigation, $schemaBdd) {
85
		$this->gestionBdd = new GestionBdd($navigation, $schemaBdd);
101
		$this->gestionBdd = new GestionBdd($navigation, $schemaBdd);
86
	}
102
	}
-
 
103
 
-
 
104
 
-
 
105
	/**
-
 
106
	 * Changer la valeur de sans limite pour ne pas l'afficher dans l'entete
-
 
107
	 * */
-
 
108
	public function setSansLimite() {
-
 
109
		$this->sansLimite = true;
-
 
110
	}
87
 
111
 
88
	/**
112
	/**
89
	 * Récupérer l'objet GestionBdd
113
	 * Récupérer l'objet GestionBdd
90
	 * */
114
	 * */
91
	public function getGestionBdd() {
115
	public function getGestionBdd() {
92
		return $this->gestionBdd;
116
		return $this->gestionBdd;
93
	}
117
	}
94
 
118
 
95
	/**
119
	/**
96
	 * Récupérer l'objet Navigation
120
	 * Récupérer l'objet Navigation
97
	 * */
121
	 * */
98
	public function getNavigation() {
122
	public function getNavigation() {
99
		return $this->navigation;
123
		return $this->navigation;
100
	}
124
	}
101
 
125
 
102
	/**
126
	/**
103
	 * Changer la valeur de sans limite pour ne pas l'afficher dans l'entete
127
	 * Récupérer l'objet Masque
104
	 * */
128
	 * */
105
	public function setSansLimite() {
129
	public function getMasque() {
106
		$this->sansLimite = true;
130
		return $this->masque;
107
	}
131
	}
108
 
132
 
109
	/**
133
	/**
110
	* Créer l'entête en fonction des paramètres donnés
134
	* Créer l'entête en fonction des paramètres donnés
111
	* */
135
	* */
112
	public function getEntete() {
136
	public function getEntete() {
113
		$entete = array();
137
		$entete = array();
114
		$entete['masque'] = $this->masque->getChaineMasque();
138
		$entete['masque'] = $this->masque->getChaineMasque();
115
 
139
 
116
		$entete['total'] = $this->navigation->getTotal();
140
		$entete['total'] = $this->navigation->getTotal();
117
		if ($this->sansLimite == false) {
141
		if ($this->sansLimite == false) {
118
			$entete['depart'] = $this->navigation->getDepart();
142
			$entete['depart'] = $this->navigation->getDepart();
119
			$entete['limite'] = $this->navigation->getLimite();
143
			$entete['limite'] = $this->navigation->getLimite();
120
 
144
 
121
			$lienPrecedent = $this->navigation->recupererHrefPrecedent();
145
			$lienPrecedent = $this->navigation->recupererHrefPrecedent();
122
 
146
 
123
			if ($lienPrecedent != null) {
147
			if ($lienPrecedent != null) {
124
				$entete['href.precedent'] = $lienPrecedent;
148
				$entete['href.precedent'] = $lienPrecedent;
125
			}
149
			}
126
 
150
 
127
			$lienSuivant = $this->navigation->recupererHrefSuivant();
151
			$lienSuivant = $this->navigation->recupererHrefSuivant();
128
			if ($lienSuivant) {
152
			if ($lienSuivant) {
129
				$entete['href.suivant'] = $lienSuivant;
153
				$entete['href.suivant'] = $lienSuivant;
130
			}
154
			}
131
		}
155
		}
132
 
156
 
133
		return $entete;
157
		return $entete;
134
	}
158
	}
135
 
159
 
136
	public function getRestClient() {
160
	public function getRestClient() {
137
		if (!isset($this->restClient)) {
161
		if (!isset($this->restClient)) {
138
			$this->restClient = new RestClient();
162
			$this->restClient = new RestClient();
139
		}
163
		}
140
		return $this->restClient;
164
		return $this->restClient;
141
	}
165
	}
142
 
166
 
143
	public function getControleAcces() {
167
	public function getControleAcces() {
144
		if (!isset($this->controleAcces)) {
168
		if (!isset($this->controleAcces)) {
145
			$this->controleAcces = new ControleAcces($this);
169
			$this->controleAcces = new ControleAcces($this);
146
		}
170
		}
147
		return $this->controleAcces;
171
		return $this->controleAcces;
148
	}
172
	}
149
 
-
 
150
	/**
-
 
151
	 * Récupérer l'objet Masque
-
 
152
	 * */
-
 
153
	public function getMasque() {
-
 
154
		return $this->masque;
-
 
155
	}
-
 
156
 
-
 
157
	/**
-
 
158
	 * Obtenir un paramètre depuis le tableau de paramètres ou depuis le fichier de config
-
 
159
	 * @param String $cle le nom du paramètre
-
 
160
	 * @return la valeur du paramètre
-
 
161
	 * */
-
 
162
	public function getParametre($cle) {
-
 
163
		$valeur = isset($this->parametres[$cle]) ? $this->parametres[$cle] : Config::get($cle);
-
 
164
		return $valeur;
-
 
165
	}
-
 
166
 
-
 
167
	/**
-
 
168
	 * Enregistrer la valeur d'un paramètre
-
 
169
	 * */
-
 
170
	public function setParametre($cle, $valeur) {
-
 
171
		$this->parametres[$cle] = $valeur;
-
 
172
	}
-
 
173
}
173
}
174
?>
174
?>