Subversion Repositories eFlore/Applications.del

Rev

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