Subversion Repositories eFlore/Applications.del

Rev

Rev 1249 | Rev 1611 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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