New file |
0,0 → 1,126 |
<?php |
/** |
* Navigation gère les url de navigation en fonction d'un départ et d'une limite |
|
* @category php 5.2 |
* @package del |
* @author Grégoire Duché <gregoire@tela-botanica.org> |
* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version $Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $ |
*/ |
class Navigation { |
|
private $parametres; |
private $urlNavigation; |
private $total; |
|
/** |
* 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; |
} |
|
/** |
* Obtenir la valeur courante de départ |
* */ |
public function getDepart() { |
return isset($this->parametres['navigation.depart']) ? $this->parametres['navigation.depart'] : 0; |
} |
|
/** |
* Obtenir la limite courante |
* */ |
public function getLimite() { |
return isset($this->parametres['navigation.limite']) ? $this->parametres['navigation.limite'] : 10; |
} |
|
/** |
* 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 |
* */ |
private function obtenirUrlNavigation($depart, $limite) { |
|
$parametres = $this->parametres; |
$parametres['navigation.depart'] = $depart; |
$parametres['navigation.limite'] = $limite; |
|
$this->urlNavigation->setRequete($parametres); |
$url = $this->urlNavigation->getURL(); |
return $url; |
} |
|
/** |
* 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); |
} |
return $url; |
} |
|
/** |
* Récupérer le lien pour afficher les images suivantes en fonction des paramètres |
* */ |
public function recupererHrefSuivant() { |
|
$departActuel = $this->getDepart(); |
$limite = $this->getLimite(); |
$departSuivant = $departActuel + $limite; |
$url = null; |
if ($departSuivant < $this->total) { |
$url = $this->getUrl($departSuivant, $limite); |
} |
return $url; |
} |
|
/** |
* Retourner le nombre total d'éléments |
* */ |
public function getTotal() { |
return $this->total; |
} |
|
/** |
* Enregistrer le nombre total d'éléments |
* @param int $total le nombre d'éléments |
* */ |
public function setTotal($total) { |
$this->total = $total; |
} |
|
} |
?> |