Subversion Repositories eFlore/Applications.del

Rev

Rev 1794 | Blame | Last modification | View Log | RSS feed

<?php
// declare(encoding='UTF-8');
/**
 * Gère les paramètres de type "masque..." utilisés dans l'URL.
 *
 * @category DEL
 * @package Services
 * @subpackage Bibliotheque
 * @version 0.1
 * @author Mathias CHOUET <mathias@tela-botanica.org>
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @author Aurelien PERONNET <aurelien@tela-botanica.org>
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 * @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
*/
class Masque {

        const PREFIXE = 'masque.';
        const MASQUE_GENERAL = 'masque';

        private $masquesPossibles;
        private $parametresUrl;
        private $masque;

        /**
         * Constructeur de la classe Masque
         * @param $masquesPossibles la liste des masques autorisés séparé par des ','
         * */
        public function __construct($masquesPossibles, $parametresUrl = null) {
                if ($masquesPossibles != null && trim($masquesPossibles) == '') {
                        $message = 'La liste des masques possibles est obligatoire';
                        $code = RestServeur::HTTP_CODE_ERREUR;
                        throw new Exception($message, $code);
                }
                $this->masquesPossibles = explode(',', $masquesPossibles);
                $this->parametresUrl = $parametresUrl;
                $this->chargerMasque();
        }

        /**
         * Parcourir le tableau Paramètres pour trouver tous les champs masque
         */
        private function chargerMasque() {
                if ($this->parametresUrl != null) {
                        foreach ($this->parametresUrl as $id => $parametre) {
                                if (in_array(str_replace(self::PREFIXE, '', $id), $this->masquesPossibles)) {
                                        $this->masque[$id] = $parametre;
                                }
                        }
                }
        }

        /**
         * Retourner les masques sous forme de chaine
         * @return String la chaine de caractère sous la forme masque=valeur&masque2=valeur
         */
        public function getChaineMasque() {
                return (!empty($this->masque)) ? http_build_query($this->masque) : '';
        }

        /**
         * Récupérer tout ou partie du masque
         * @param String $id (optionnel) l'idenfiant du masque
         * @return une chaine de caractère si l'identifiant est passé en paramètre, un tableau sinon
         * */
        public function getMasque($id = null) {
                return isset($id) ? $this->masque[self::PREFIXE.$id] : $this->masque;
        }
}