Rev 880 | Blame | Compare with Previous | 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;
}
}
}
?>