Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

<?php
// TODO : il est peut être nécessaire de mieux distinguer les attributs parametres et parametresOrigine
// TODO : déplacer les méthodes getMasquePourBdd et getPourBdd dans les DAO
class Parametres implements Iterator {

        private $parametres = array();
        private $parametresOrigine = array();
        private $parametresTypeEntier = array('navigation.limite', 'navigation.depart');
        private $bdd = null;

        public function __construct(Array $parametres, Bdd $bdd) {
                $this->parametresOrigine = $parametres;
                $this->parametres = $this->parametresOrigine;
                $this->bdd = $bdd;
                $this->definirValeursParDefaut();
        }

        public function current () {
                return current($this->parametresOrigine);
        }

        public function key() {
                return key($this->parametresOrigine);
        }

        public function next() {
                return next($this->parametresOrigine);
        }

        public function rewind() {
                return reset($this->parametresOrigine);
        }

        public function valid() {
                return current($this->parametresOrigine) == false ? false : true;
        }

        public function get($parametreCode) {
                $valeur = '';
                if ($this->exister($parametreCode)) {
                        $valeur = $this->parametres[$parametreCode];
                }
                return $this->etreParametreDeTypeEntier($parametreCode) ? (int) $valeur : $valeur;
        }

        private function etreParametreDeTypeEntier($parametreCode) {
                $entier = in_array($parametreCode, $this->parametresTypeEntier) ? true : false;
                return $entier;
        }

        public function getListe($parametreCode) {
                $valeurs = array();
                if ($this->exister($parametreCode)) {
                        $valeurs = explode(',', $this->parametres[$parametreCode]);
                        $valeurs = array_map('trim', $valeurs);
                }
                return $valeurs;
        }

        public function exister($parametreCode) {
                $existe = false;
                if (array_key_exists($parametreCode, $this->parametres) && $this->parametres[$parametreCode] != '') {
                        $existe = true;
                }
                return $existe;
        }

        public function getPourBdd($parametreCode) {
                $valeur = false;
                if ($this->exister($parametreCode)) {
                        $valeur = $this->get($parametreCode);
                        $valeur = $this->proteger($valeur);
                }
                return $valeur;
        }

        private function proteger($valeur) {
                $valeur = $this->bdd->proteger($valeur);
                return $valeur;
        }

        public function getMasquePourBdd($type = '') {
                $masque = false;
                $parametreMasque = 'masque'.($type != '' ? '.'.$type : $type);
                if ($this->exister($parametreMasque)) {
                        $masque = $this->get($parametreMasque);
                        $recherche = $this->get('recherche');
                        if ($recherche == 'etendue') {
                                $masque = str_replace(' ', '% ', $masque);
                                $masque .= '%';
                        }
                        $masque = $this->proteger($masque);
                }
                return $masque;
        }

        private function definirValeursParDefaut() {
                if ($this->exister('recherche') == false) {
                        $this->parametres['recherche'] = 'stricte';
                }
                if ($this->exister('ns.format') == false) {
                        $this->parametres['ns.format'] = 'txt';
                }
                if ($this->exister('retour') == false) {
                        $this->parametres['retour'] = 'application/json';
                }
                if ($this->exister('retour.format') == false) {
                        $this->parametres['retour.format'] = 'max';
                }
                if ($this->exister('retour.langue') == false) {
                        $this->parametres['retour.langue'] = 'fr';
                }
                if ($this->exister('version.projet') == false) {
                        $this->parametres['version.projet'] = '+';
                }
                if ($this->exister('navigation.depart') == false) {
                        $this->parametres['navigation.depart'] = (int) 0;
                }
                if ($this->exister('navigation.limite') == false) {
                        $this->parametres['navigation.limite'] = (int) 100;
                }
        }
}
?>