Subversion Repositories eFlore/Applications.del

Rev

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

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