Subversion Repositories eFlore/Applications.del

Rev

Rev 1293 | Rev 1794 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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