Subversion Repositories eFlore/Applications.del

Rev

Rev 1840 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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