* @author Jean-Pascal MILCENT * @author Aurelien PERONNET * @license GPL v3 * @license CECILL v2 * @copyright 1999-2014 Tela Botanica */ //TODO : initialiser tous les objets dans le conteneur //TODO : créer un tableau de partage class Conteneur { protected $parametres; protected $partages = array(); /** * Constructeur de la classe * @param Array $parametres (optionnel) les paramètres additionnels à ajouter à ceux des fichiers de config * */ public function __construct(array $parametres = null) { $this->parametres = is_null($parametres) ? array() : $parametres; } /** * Obtenir un paramètre depuis le tableau de paramètres ou depuis le fichier de config * @param String $cle le nom du paramètre * @return la valeur du paramètre * */ public function getParametre($cle) { $valeur = isset($this->parametres[$cle]) ? $this->parametres[$cle] : Config::get($cle); return $valeur; } /** * Obtenir un paramètre depuis le tableau de paramètres ou depuis le fichier de config * et le transformer en tableau s'il est de la forme : "cle=valeur,cle=valeur,..." * @param String $cle le nom du paramètre * @return la valeur du paramètre */ public function getParametreTableau($cle) { $tableau = array(); $parametre = $this->getParametre($cle); if (empty($parametre) === false) { $tableauPartiel = explode(',', $parametre); foreach ($tableauPartiel as $champ) { if (strpos($champ, '=') === false) { $tableau[] = trim($champ); } else { list($cle, $val) = explode('=', $champ); $tableau[trim($cle)] = trim($val); } } } return $tableau; } /** * Enregistrer la valeur d'un paramètre * */ public function setParametre($cle, $valeur) { $this->parametres[$cle] = $valeur; } //-------------------------------------------------------------------------------------------------------- // TODO : Supprimer le chargement de configuration présent dans des fichiers séparés. /** * Charger la configuration depuis un fichier .ini. * * @param String $fichier le nom du fichier de configuration * */ public function chargerConfiguration($fichier) { $cheminConfigurations = Config::get('chemin_configurations'); if ($cheminConfigurations == null || $cheminConfigurations == '') { $message = "Le parametre de configuration 'chemin_configurations' n'est pas défini."; $code = RestServeur::HTTP_CODE_ERREUR; throw new Exception($message, $code); } $cheminConfigService = $cheminConfigurations.$fichier; if (file_exists($cheminConfigService) === false) { $nomClasse = get_class($this); $message = "Classe $nomClasse : le fichier de configuration du service est introuvable : $cheminConfigService "; $code = RestServeur::HTTP_CODE_ERREUR; throw new Exception($message, $code); } Config::charger($cheminConfigService); } public function getBdd() { if (!isset($this->partages['Bdd'])){ $this->partages['Bdd'] = new Bdd(); } return $this->partages['Bdd']; } public function getRestClient() { if (!isset($this->partages['restClient'])){ $this->partages['restClient'] = new RestClient(); } return $this->partages['restClient']; } public function getUrl($base) { return new Url($base); } public function getControleAcces() { if (!isset($this->partages['controleAcces'])) { $this->partages['controleAcces'] = new ControleAcces($this); } return $this->partages['controleAcces']; } public function getNavigation() { if (!isset($this->partages['navigation'])) { $this->partages['navigation'] = new Navigation($this); } return $this->partages['navigation']; } public function getContexte() { if (!isset($this->partages['contexte'])) { $this->partages['contexte'] = new Contexte($this, $_SERVER, $_GET, $_POST, $_SESSION, $_COOKIE); } return $this->partages['contexte']; } public function getUtilisateur() { if (!isset($this->partages['utilisateur'])) { $this->partages['utilisateur'] = new GestionUtilisateur($this); } return $this->partages['utilisateur']; } public function getSyndicationOutils() { if (!isset($this->partages['syndicationOutils'])) { $this->partages['syndicationOutils'] = new SyndicationOutils($this); } return $this->partages['syndicationOutils']; } public function getParametresFiltrage() { if (!isset($this->partages['parametresFiltrage'])) { $this->partages['parametresFiltrage'] = new ParametresFiltrage($this); } return $this->partages['parametresFiltrage']; } public function getSql() { if (!isset($this->partages['sql'])) { $this->partages['sql'] = new Sql($this); } return $this->partages['sql']; } public function getSquelettePhp() { if (!isset($this->partages['SquelettePhp'])) { $this->partages['SquelettePhp'] = new SquelettePhp(); } return $this->partages['SquelettePhp']; } public function getMessagerie() { if (!isset($this->partages['Messagerie'])) { $this->partages['Messagerie'] = new TelaBotanica\Del\Commun\Messagerie($this); } return $this->partages['Messagerie']; } }