* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org) * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL */ //TODO : initialiser tous les objets dans le conteneur //TODO : créer un tableau de partage class Conteneur { protected $parametres; protected $navigation; protected $masque; protected $gestionBdd; protected $sansLimite = false; /** * 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; } /** * Enregistrer la valeur d'un paramètre * */ public function setParametre($cle, $valeur) { $this->parametres[$cle] = $valeur; } /** * Charger la configuration depuis le fichier * @param String $chemin le chemin relatif depuis le dossier configurations du fichier * */ public function chargerConfiguration($chemin) { $cheminConfigurations = Config::get('chemin_configurations'); if ($cheminConfigurations == null || $cheminConfigurations == '') { $message = 'Le chemin vers le répertoire Configurations n\'est pas renseigné'; $code = RestServeur::HTTP_CODE_ERREUR; throw new Exception($message, $code); } Config::charger($cheminConfigurations.DS.$chemin); if ($this->masque = $this->creerMasque()) { $this->masque->chargerMasque(); } else { $message = 'Erreur lors de la création du Masque'; $code = RestServeur::HTTP_CODE_ERREUR; throw new Exception($message, $code); } if ($this->navigation = $this->creerNavigation()) { $this->navigation->chargerUrl(); } else { $message = 'Erreur lors de la création de la Navigation'; $code = RestServeur::HTTP_CODE_ERREUR; throw new Exception($message, $code); } $this->creerGestionBdd($this->navigation, Config::get('schemaBdd')); } /** * Créer l'objet Masque en fonction des configurations * */ private function creerMasque() { $this->masque = new Masque(Config::get('masques_possibles'), $this->parametres); return $this->masque; } /** * Créer l'objet navigation avec les paramètres * */ private function creerNavigation() { return ($this->navigation = new Navigation($this->parametres)); } /** * Créer l'objet Gestion BDD * */ private function creerGestionBdd($navigation, $schemaBdd) { $this->gestionBdd = new GestionBdd($navigation, $schemaBdd); } /** * Changer la valeur de sans limite pour ne pas l'afficher dans l'entete * */ public function setSansLimite() { $this->sansLimite = true; } /** * Récupérer l'objet GestionBdd * */ public function getGestionBdd() { return $this->gestionBdd; } /** * Récupérer l'objet Navigation * */ public function getNavigation() { return $this->navigation; } /** * Récupérer l'objet Masque * */ public function getMasque() { return $this->masque; } /** * Créer l'entête en fonction des paramètres donnés * */ public function getEntete() { $entete = array(); $entete['masque'] = $this->masque->getChaineMasque(); $entete['total'] = $this->navigation->getTotal(); if ($this->sansLimite == false) { $entete['depart'] = $this->navigation->getDepart(); $entete['limite'] = $this->navigation->getLimite(); $lienPrecedent = $this->navigation->recupererHrefPrecedent(); if ($lienPrecedent != null) { $entete['href.precedent'] = $lienPrecedent; } $lienSuivant = $this->navigation->recupererHrefSuivant(); if ($lienSuivant) { $entete['href.suivant'] = $lienSuivant; } } return $entete; } public function getRestClient() { if (!isset($this->restClient)) { $this->restClient = new RestClient(); } return $this->restClient; } public function getControleAcces() { if (!isset($this->controleAcces)) { $this->controleAcces = new ControleAcces($this); } return $this->controleAcces; } } ?>