| 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 | }
 |