Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1805 → Rev 1806

/trunk/services/bibliotheque/Navigation.php
18,7 → 18,10
 
private $conteneur;
private $parametresUrl;
private $urlNavigation;
private $serviceNom;
private $filtresPossibles;
private $filtresActifs;
 
private $total;
private $sansLimite;
 
26,18 → 29,33
* Constructeur de la classe Navigation
* @param Array $parametresUrl (optionnel) la liste des paramètre issus du Conteneur
*/
public function __construct($conteneur, $parametresUrl = null) {
public function __construct($conteneur) {
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
$this->parametresUrl = $parametresUrl;
$this->urlNavigation = $this->conteneur->getUrlService();
$this->urlNavigation->setOption(Url::OPTION_ENCODER_VALEURS, true);
 
$contexte = $this->conteneur->getContexte();
$this->parametresUrl = $contexte->getQS();
$this->serviceNom = $contexte->getRessource(1);
 
$this->filtresPossibles = $this->conteneur->getparametre($this->serviceNom.'.masques_possibles');
$this->chargerFiltresActifs();
}
 
private function chargerFiltresActifs() {
if ($this->parametresUrl != null) {
foreach ($this->parametresUrl as $paramNom => $valeur) {
if (in_array($paramNom, $this->filtresPossibles)) {
$this->filtresActifs[$paramNom] = $valeur;
}
}
}
}
 
/**
* Obtenir la valeur courante de départ
*/
public function getDepart() {
return $this->conteneur->getParametre('navigation.depart') == null ? 0 : $this->conteneur->getParametre('navigation.depart') ;
$navDepart = $this->getParamUrl('navigation.depart');
return ($navDepart == null) ? 0 : $navDepart ;
}
 
/**
44,14 → 62,19
* Obtenir la limite courante
*/
public function getLimite() {
$limiteParam = $this->getParamUrl('navigation.limite');
$limite = 10;
if ($this->conteneur->getParametre('navigation.limite') != null && is_numeric($this->conteneur->getParametre('navigation.limite'))) {
$limiteParam = $this->conteneur->getParametre('navigation.limite');
if ($limiteParam != null && is_numeric($limiteParam)) {
$limite = ($limiteParam < 1000) ? $limiteParam : 1000;// Pour éviter les abus !
}
return $limite;
}
 
private function getParamUrl($nom) {
$valeur = isset($this->parametresUrl[$nom]) ? $this->parametresUrl[$nom] : null;
return $valeur;
}
 
/**
* Récupérer l'url de navigation en concaténant d'éventuels paramètres
* @param $depart l'entier de départ de la recherche
63,8 → 86,11
$parametres['navigation.depart'] = $depart;
$parametres['navigation.limite'] = $limite;
 
$this->urlNavigation->setRequete($parametres);
$url = $this->urlNavigation->getURL();
$urlServiceBase = $this->getParametre('url_service_base').$this->serviceNom;
$urlNavigation = $this->conteneur->getUrl($urlServiceBase);
$urlNavigation->setOption(Url::OPTION_ENCODER_VALEURS, true);
$urlNavigation->setRequete($parametres);
$url = $urlNavigation->getURL();
return $url;
}
 
119,11 → 145,13
}
 
/**
* Créer l'entête en fonction des paramètres donnés
*/
* Génère un tableau contenant les informations pour l'entête des services renvoyant une liste de résultats.
*
* @return array Le tableau d'entête prés à être encodé en JSON.
*/
public function getEntete() {
$entete = array();
$entete['masque'] = $this->conteneur->getMasque()->getChaineMasque();
$entete['masque'] = $this->getChaineFiltresActifs();
 
$entete['total'] = $this->getTotal();
if ($this->sansLimite == false) {
143,4 → 171,30
 
return $entete;
}
 
/**
* Retourne les filtres au format chaine sous la forme filtre1=valeur1&filtre2=valeur2.
*
* @return String la chaine de caractères ou une chaine vide si pas de filtre.
*/
private function getChaineFiltresActifs() {
return (!empty($this->filtresActifs)) ? http_build_query($this->filtresActifs) : '';
}
 
/**
* Récupérer tout ou partie des filtres présent dans l'url.
*
* @param String $filtreNom (optionnel) le nom du filtre tel que présent dans l'url.
* @return mixed si un filtre est passé en paramètre retourn la valeur correspondante, si pas de paramétre
* retourne le tableau complet des filtres. False en cas d'erreur.
* */
public function getFiltre($filtreNom = null) {
$retour = false;
if ($filtreNom == null) {
$retour = $this->filtresActifs;
} else if ($filtreNom != null && isset($this->filtresActifs[$filtreNom])) {
$retour = $this->filtresActifs[$filtreNom];
}
return retour;
}
}