Subversion Repositories eFlore/Applications.del

Rev

Rev 1293 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
723 gduche 1
<?php
2
/**
3
* Navigation gère les url de navigation en fonction d'un départ et d'une limite
4
 
5
* @category php 5.2
6
* @package del
7
* @author Grégoire Duché <gregoire@tela-botanica.org>
8
* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
9
* @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
* @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
11
* @version	$Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $
12
*/
13
class Navigation {
14
 
15
	private $parametres;
16
	private $urlNavigation;
17
	private $total;
18
 
19
	/**
20
	 * Constructeur de la classe Navigation
21
	 * @param Array $parametres (optionnel) la liste des paramètre issus du Conteneur
22
	 * */
23
	public function __construct($parametres = null) {
24
		$this->parametres = $parametres;
25
	}
26
 
27
	/**
28
	 * Obtenir la valeur courante de départ
29
	 * */
30
	public function getDepart() {
31
		return isset($this->parametres['navigation.depart']) ? $this->parametres['navigation.depart'] : 0;
32
	}
33
 
34
	/**
35
	 * Obtenir la limite courante
36
	 * */
37
	public function getLimite() {
38
		return isset($this->parametres['navigation.limite']) ? $this->parametres['navigation.limite'] : 10;
39
	}
40
 
41
	/**
42
	 * Configurer l'Url de navigation en fonction du fichier de configuration
43
	 * */
44
	public function chargerUrl() {
45
		$this->urlNavigation = new Url(Config::get('url_service'));
46
		$this->urlNavigation->setOption(Url::OPTION_ENCODER_VALEURS, true);
47
	}
48
 
49
	/**
50
	 * Obtenir l'url en fonction d'un départ et d'une limite donnée
51
	 * @param int $depart l'entier de départ
52
	 * @param int $limite le nombre d'éléments limite
53
	 * */
54
	public function getUrl($depart = null, $limite = null) {
55
		if ($depart == null && $limite == null) {
56
			return $this->urlNavigation;
57
		} else {
58
			return $this->obtenirUrlNavigation($depart, $limite);
59
		}
60
	}
61
 
62
	/**
63
	* Récupérer l'url de navigation en concaténant d'éventuels paramètres
64
	* @param $depart l'entier de départ de la recherche
65
	* @param $limite le nombre de résultats à retourner
66
	* @param $parametresAdditionnels le tableau contenant les parametres => valeurs additionnels
67
	* */
68
	private function obtenirUrlNavigation($depart, $limite) {
69
 
70
	$parametres = $this->parametres;
71
	$parametres['navigation.depart'] = $depart;
72
	$parametres['navigation.limite'] = $limite;
73
 
74
	$this->urlNavigation->setRequete($parametres);
75
	$url = $this->urlNavigation->getURL();
76
	return $url;
77
	}
78
 
79
	/**
80
	* Récupérer le lien pour afficher les images précédentes en fonction des paramètres
81
	* */
82
	public function recupererHrefPrecedent() {
83
		$departActuel = $this->getDepart();
84
		$limite = $this->getLimite();
85
		$departPrecedent = $departActuel - $limite;
86
 
87
		$url = null;
88
 
89
		if ($departActuel > 0) {
90
			$url = $this->getUrl($departPrecedent, $limite);
91
		}
92
		return $url;
93
	}
94
 
95
	/**
96
	 * Récupérer le lien pour afficher les images suivantes en fonction des paramètres
97
	 * */
98
	public function recupererHrefSuivant() {
99
 
100
		$departActuel = $this->getDepart();
101
		$limite = $this->getLimite();
102
		$departSuivant = $departActuel + $limite;
103
		$url = null;
104
		if ($departSuivant < $this->total) {
105
			$url = $this->getUrl($departSuivant, $limite);
106
		}
107
		return $url;
108
	}
109
 
110
	/**
111
	 * Retourner le nombre total d'éléments
112
	 * */
113
	public function getTotal() {
114
		return $this->total;
115
	}
116
 
117
	/**
118
	 * Enregistrer le nombre total d'éléments
119
	 * @param int $total le nombre d'éléments
120
	 * */
121
	public function setTotal($total) {
122
		$this->total = $total;
123
	}
124
 
125
}
126
?>