Subversion Repositories eFlore/Applications.del

Rev

Rev 1249 | Rev 1611 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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