Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1793 → Rev 1794

/trunk/services/bibliotheque/Navigation.php
1,4 → 1,5
<?php
// declare(encoding='UTF-8');
/**
* Navigation gère les url de navigation en fonction d'un départ et d'une limite
*
15,66 → 16,50
*/
class Navigation {
 
private $parametres;
private $conteneur;
private $parametresUrl;
private $urlNavigation;
private $total;
private $sansLimite;
 
/**
* Constructeur de la classe Navigation
* @param Array $parametres (optionnel) la liste des paramètre issus du Conteneur
* */
public function __construct($parametres = null) {
$this->parametres = $parametres;
* @param Array $parametresUrl (optionnel) la liste des paramètre issus du Conteneur
*/
public function __construct($conteneur, $parametresUrl = null) {
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
$this->parametresUrl = $parametresUrl;
$this->urlNavigation = $this->conteneur->getUrl($this->conteneur->getParametre('url_service'));
$this->urlNavigation->setOption(Url::OPTION_ENCODER_VALEURS, true);
}
 
/**
* Obtenir la valeur courante de départ
* */
*/
public function getDepart() {
return isset($this->parametres['navigation.depart']) ? $this->parametres['navigation.depart'] : 0;
return isset($this->getParametre('navigation.depart')) ? $this->getParametre('navigation.depart') : 0;
}
 
/**
* Obtenir la limite courante
* */
*/
public function getLimite() {
$limite = 10;
if (isset($this->parametres['navigation.limite']) && is_numeric($this->parametres['navigation.limite'])) {
$limite = $this->parametres['navigation.limite'];
$limite = ($limite < 1000) ? $limite : 1000;// Pour éviter les abus !
if (isset($this->getParametre('navigation.limite')) && is_numeric($this->getParametre('navigation.limite'))) {
$limiteParam = $this->getParametre('navigation.limite');
$limite = ($limiteParam < 1000) ? $limiteParam : 1000;// Pour éviter les abus !
}
return $limite;
}
 
/**
* Configurer l'Url de navigation en fonction du fichier de configuration
* */
public function chargerUrl() {
$this->urlNavigation = new Url(Config::get('url_service'));
$this->urlNavigation->setOption(Url::OPTION_ENCODER_VALEURS, true);
}
 
/**
* Obtenir l'url en fonction d'un départ et d'une limite donnée
* @param int $depart l'entier de départ
* @param int $limite le nombre d'éléments limite
* */
public function getUrl($depart = null, $limite = null) {
if ($depart == null && $limite == null) {
return $this->urlNavigation;
} else {
return $this->obtenirUrlNavigation($depart, $limite);
}
}
 
/**
* Récupérer l'url de navigation en concaténant d'éventuels paramètres
* @param $depart l'entier de départ de la recherche
* @param $limite le nombre de résultats à retourner
* @param $parametresAdditionnels le tableau contenant les parametres => valeurs additionnels
* */
* Récupérer l'url de navigation en concaténant d'éventuels paramètres
* @param $depart l'entier de départ de la recherche
* @param $limite le nombre de résultats à retourner
* @param $parametresAdditionnels le tableau contenant les parametres => valeurs additionnels
*/
private function obtenirUrlNavigation($depart, $limite) {
$parametres = $this->parametres;
$parametres = $this->parametresUrl;
$parametres['navigation.depart'] = $depart;
$parametres['navigation.limite'] = $limite;
 
84,17 → 69,15
}
 
/**
* Récupérer le lien pour afficher les images précédentes en fonction des paramètres
* */
* Récupérer le lien pour afficher les images précédentes en fonction des paramètres
*/
public function recupererHrefPrecedent() {
$departActuel = $this->getDepart();
$limite = $this->getLimite();
$departPrecedent = $departActuel - $limite;
 
$url = null;
 
if ($departActuel > 0) {
$url = $this->getUrl($departPrecedent, $limite);
$url = $this->obtenirUrlNavigation($departPrecedent, $limite);
}
return $url;
}
101,7 → 84,7
 
/**
* Récupérer le lien pour afficher les images suivantes en fonction des paramètres
* */
*/
public function recupererHrefSuivant() {
$departActuel = $this->getDepart();
$limite = $this->getLimite();
108,7 → 91,7
$departSuivant = $departActuel + $limite;
$url = null;
if ($departSuivant < $this->total) {
$url = $this->getUrl($departSuivant, $limite);
$url = $this->obtenirUrlNavigation($departSuivant, $limite);
}
return $url;
}
115,7 → 98,7
 
/**
* Retourner le nombre total d'éléments
* */
*/
public function getTotal() {
return $this->total;
}
123,8 → 106,42
/**
* Enregistrer le nombre total d'éléments
* @param int $total le nombre d'éléments
* */
*/
public function setTotal($total) {
$this->total = $total;
}
 
/**
* Changer la valeur de sans limite pour ne pas l'afficher dans l'entete
* */
public function setSansLimite() {
$this->sansLimite = true;
}
 
/**
* Créer l'entête en fonction des paramètres donnés
*/
public function getEntete() {
$entete = array();
$entete['masque'] = $this->conteneur->getMasque()->getChaineMasque();
 
$entete['total'] = $this->getTotal();
if ($this->sansLimite == false) {
$entete['depart'] = $this->getDepart();
$entete['limite'] = $this->getLimite();
 
$lienPrecedent = $this->recupererHrefPrecedent();
 
if ($lienPrecedent != null) {
$entete['href.precedent'] = $lienPrecedent;
}
 
$lienSuivant = $this->recupererHrefSuivant();
if ($lienSuivant) {
$entete['href.suivant'] = $lienSuivant;
}
}
 
return $entete;
}
}