Subversion Repositories eFlore/Applications.del

Rev

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

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