Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
716 gduche 1
<?php
1794 jpm 2
// declare(encoding='UTF-8');
716 gduche 3
/**
1793 jpm 4
 * Le conteneur encapsule l'instanciation des classes 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
1793 jpm 8
 * @package Bibliotheque
9
 * @version 0.1
10
 * @author Mathias CHOUET <mathias@tela-botanica.org>
11
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @author Aurelien PERONNET <aurelien@tela-botanica.org>
13
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
 * @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
723 gduche 16
 */
1611 jpm 17
//TODO : initialiser tous les objets dans le conteneur
18
//TODO : créer un tableau de partage
716 gduche 19
class Conteneur {
1605 jpm 20
 
723 gduche 21
	protected $parametres;
1793 jpm 22
	protected $partages = array();
1605 jpm 23
 
723 gduche 24
	/**
25
	 * Constructeur de la classe
26
	 * @param Array $parametres (optionnel) les paramètres additionnels à ajouter à ceux des fichiers de config
27
	 * */
716 gduche 28
	public function __construct(array $parametres = null) {
29
		$this->parametres = is_null($parametres) ? array() : $parametres;
30
	}
1605 jpm 31
 
723 gduche 32
	/**
1611 jpm 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
	/**
1694 jpm 43
	 * 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,..."
45
	 * @param String $cle le nom du paramètre
46
	 * @return la valeur du paramètre
47
	 */
48
	public function getParametreTableau($cle) {
49
		$tableau = array();
50
		$parametre = $this->getParametre($cle);
51
		if (empty($parametre) === false) {
52
			$tableauPartiel = explode(',', $parametre);
53
			foreach ($tableauPartiel as $champ) {
54
				if (strpos($champ, '=') === false) {
55
					$tableau[] = trim($champ);
56
				} else {
57
					list($cle, $val) = explode('=', $champ);
58
					$tableau[trim($cle)] = trim($val);
59
				}
60
			}
61
		}
62
		return $tableau;
63
	}
64
 
65
	/**
1611 jpm 66
	 * Enregistrer la valeur d'un paramètre
67
	 * */
68
	public function setParametre($cle, $valeur) {
69
		$this->parametres[$cle] = $valeur;
70
	}
71
 
1793 jpm 72
	//--------------------------------------------------------------------------------------------------------
1794 jpm 73
	// TODO : Supprimer le chargement de configuration présent dans des fichiers séparés.
1611 jpm 74
	/**
1794 jpm 75
	 * Charger la configuration depuis un fichier .ini.
76
	 *
77
	 * @param String $fichier le nom du fichier de configuration
723 gduche 78
	 * */
1794 jpm 79
	public function chargerConfiguration($fichier) {
716 gduche 80
		$cheminConfigurations = Config::get('chemin_configurations');
723 gduche 81
		if ($cheminConfigurations == null || $cheminConfigurations == '') {
1794 jpm 82
			$message = "Le parametre de configuration 'chemin_configurations' n'est pas défini.";
723 gduche 83
			$code = RestServeur::HTTP_CODE_ERREUR;
84
			throw new Exception($message, $code);
85
		}
1605 jpm 86
 
1795 jpm 87
		$cheminConfigService = $cheminConfigurations.$fichier;
1794 jpm 88
		if (file_exists($cheminConfigService) === false) {
1795 jpm 89
			$nomClasse = get_class($this);
90
			$message = "Classe $nomClasse : le fichier de configuration du service est introuvable : $cheminConfigService ";
723 gduche 91
			$code = RestServeur::HTTP_CODE_ERREUR;
92
			throw new Exception($message, $code);
716 gduche 93
		}
1605 jpm 94
 
1794 jpm 95
		Config::charger($cheminConfigService);
716 gduche 96
	}
1605 jpm 97
 
1793 jpm 98
	public function getBdd() {
99
		if (!isset($this->partages['Bdd'])){
100
			$this->partages['Bdd'] = new Bdd();
101
		}
102
		return $this->partages['Bdd'];
103
	}
104
 
1249 aurelien 105
	public function getRestClient() {
1793 jpm 106
		if (!isset($this->partages['restClient'])){
107
			$this->partages['restClient'] = new RestClient();
1249 aurelien 108
		}
1793 jpm 109
		return $this->partages['restClient'];
1249 aurelien 110
	}
1605 jpm 111
 
1794 jpm 112
	public function getUrl($base) {
113
		return new Url($base);
114
	}
115
 
1605 jpm 116
	public function getControleAcces() {
1793 jpm 117
		if (!isset($this->partages['controleAcces'])) {
118
			$this->partages['controleAcces'] = new ControleAcces($this);
1605 jpm 119
		}
1793 jpm 120
		return $this->partages['controleAcces'];
1605 jpm 121
	}
1794 jpm 122
 
123
	public function getNavigation() {
124
		if (!isset($this->partages['navigation'])) {
1806 jpm 125
			$this->partages['navigation'] = new Navigation($this);
1794 jpm 126
		}
127
		return $this->partages['navigation'];
128
	}
129
 
1795 jpm 130
	public function getContexte() {
131
		if (!isset($this->partages['contexte'])) {
132
			$this->partages['contexte'] = new Contexte($this, $_SERVER, $_GET, $_POST, $_SESSION, $_COOKIE);
133
		}
134
		return $this->partages['contexte'];
135
	}
136
 
137
	public function getUtilisateur() {
138
		if (!isset($this->partages['utilisateur'])) {
139
			$this->partages['utilisateur'] = new GestionUtilisateur($this);
140
		}
141
		return $this->partages['utilisateur'];
142
	}
1794 jpm 143
}