Subversion Repositories eFlore/Applications.del

Rev

Rev 1793 | Rev 1795 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1793 Rev 1794
Line 1... Line 1...
1
<?php
1
<?php
-
 
2
// declare(encoding='UTF-8');
2
/**
3
/**
3
 * Navigation gère les url de navigation en fonction d'un départ et d'une limite
4
 * Navigation gère les url de navigation en fonction d'un départ et d'une limite
4
 *
5
 *
5
 * @category DEL
6
 * @category DEL
6
 * @package Services
7
 * @package Services
Line 13... Line 14...
13
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
14
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
14
 * @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
15
 * @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
15
*/
16
*/
16
class Navigation {
17
class Navigation {
Line -... Line 18...
-
 
18
 
17
 
19
	private $conteneur;
18
	private $parametres;
20
	private $parametresUrl;
19
	private $urlNavigation;
21
	private $urlNavigation;
-
 
22
	private $total;
Line 20... Line 23...
20
	private $total;
23
	private $sansLimite;
21
 
24
 
22
	/**
25
	/**
23
	 * Constructeur de la classe Navigation
26
	 * Constructeur de la classe Navigation
24
	 * @param Array $parametres (optionnel) la liste des paramètre issus du Conteneur
27
	 * @param Array $parametresUrl (optionnel) la liste des paramètre issus du Conteneur
-
 
28
	 */
25
	 * */
29
	public function __construct($conteneur, $parametresUrl = null) {
-
 
30
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
-
 
31
		$this->parametresUrl = $parametresUrl;
26
	public function __construct($parametres = null) {
32
		$this->urlNavigation = $this->conteneur->getUrl($this->conteneur->getParametre('url_service'));
Line 27... Line 33...
27
		$this->parametres = $parametres;
33
		$this->urlNavigation->setOption(Url::OPTION_ENCODER_VALEURS, true);
28
	}
34
	}
29
 
35
 
30
	/**
36
	/**
31
	 * Obtenir la valeur courante de départ
37
	 * Obtenir la valeur courante de départ
32
	 * */
38
	 */
Line 33... Line 39...
33
	public function getDepart() {
39
	public function getDepart() {
34
		return isset($this->parametres['navigation.depart']) ? $this->parametres['navigation.depart'] : 0;
40
		return isset($this->getParametre('navigation.depart')) ? $this->getParametre('navigation.depart') : 0;
35
	}
41
	}
36
 
42
 
37
	/**
43
	/**
38
	 * Obtenir la limite courante
44
	 * Obtenir la limite courante
39
	 * */
45
	 */
40
	public function getLimite() {
46
	public function getLimite() {
41
		$limite = 10;
47
		$limite = 10;
42
		if (isset($this->parametres['navigation.limite']) && is_numeric($this->parametres['navigation.limite'])) {
48
		if (isset($this->getParametre('navigation.limite')) && is_numeric($this->getParametre('navigation.limite'))) {
43
			$limite = $this->parametres['navigation.limite'];
49
			$limiteParam = $this->getParametre('navigation.limite');
Line 44... Line 50...
44
			$limite = ($limite < 1000) ? $limite : 1000;// Pour éviter les abus !
50
			$limite = ($limiteParam < 1000) ? $limiteParam : 1000;// Pour éviter les abus !
45
		}
-
 
46
		return $limite;
-
 
47
	}
-
 
48
 
-
 
49
	/**
-
 
50
	 * Configurer l'Url de navigation en fonction du fichier de configuration
-
 
51
	 * */
-
 
52
	public function chargerUrl() {
-
 
53
		$this->urlNavigation = new Url(Config::get('url_service'));
-
 
54
		$this->urlNavigation->setOption(Url::OPTION_ENCODER_VALEURS, true);
-
 
55
	}
-
 
56
 
-
 
57
	/**
-
 
58
	 * Obtenir l'url en fonction d'un départ et d'une limite donnée
-
 
59
	 * @param int $depart l'entier de départ
-
 
60
	 * @param int $limite le nombre d'éléments limite
-
 
61
	 * */
-
 
62
	public function getUrl($depart = null, $limite = null) {
-
 
63
		if ($depart == null && $limite == null) {
-
 
64
			return $this->urlNavigation;
-
 
65
		} else {
-
 
66
			return $this->obtenirUrlNavigation($depart, $limite);
51
		}
67
		}
52
		return $limite;
68
	}
53
	}
69
 
54
 
70
	/**
55
	/**
71
	* Récupérer l'url de navigation en concaténant d'éventuels paramètres
56
	 * Récupérer l'url de navigation en concaténant d'éventuels paramètres
72
	* @param $depart l'entier de départ de la recherche
57
	 * @param $depart l'entier de départ de la recherche
73
	* @param $limite le nombre de résultats à retourner
58
	 * @param $limite le nombre de résultats à retourner
74
	* @param $parametresAdditionnels le tableau contenant les parametres => valeurs additionnels
59
	 * @param $parametresAdditionnels le tableau contenant les parametres => valeurs additionnels
Line 75... Line 60...
75
	* */
60
	 */
76
	private function obtenirUrlNavigation($depart, $limite) {
61
	private function obtenirUrlNavigation($depart, $limite) {
77
		$parametres = $this->parametres;
62
		$parametres = $this->parametresUrl;
78
		$parametres['navigation.depart'] = $depart;
63
		$parametres['navigation.depart'] = $depart;
Line 79... Line 64...
79
		$parametres['navigation.limite'] = $limite;
64
		$parametres['navigation.limite'] = $limite;
80
 
65
 
81
		$this->urlNavigation->setRequete($parametres);
66
		$this->urlNavigation->setRequete($parametres);
82
		$url = $this->urlNavigation->getURL();
67
		$url = $this->urlNavigation->getURL();
83
		return $url;
68
		return $url;
84
	}
69
	}
85
 
70
 
86
	/**
-
 
87
	* Récupérer le lien pour afficher les images précédentes en fonction des paramètres
71
	/**
88
	* */
-
 
89
	public function recupererHrefPrecedent() {
72
	 * Récupérer le lien pour afficher les images précédentes en fonction des paramètres
90
		$departActuel = $this->getDepart();
73
	 */
91
		$limite = $this->getLimite();
74
	public function recupererHrefPrecedent() {
92
		$departPrecedent = $departActuel - $limite;
75
		$departActuel = $this->getDepart();
93
 
76
		$limite = $this->getLimite();
Line 94... Line 77...
94
		$url = null;
77
		$departPrecedent = $departActuel - $limite;
95
 
78
		$url = null;
96
		if ($departActuel > 0) {
79
		if ($departActuel > 0) {
97
			$url = $this->getUrl($departPrecedent, $limite);
80
			$url = $this->obtenirUrlNavigation($departPrecedent, $limite);
98
		}
81
		}
99
		return $url;
82
		return $url;
100
	}
83
	}
101
 
84
 
102
	/**
85
	/**
103
	 * Récupérer le lien pour afficher les images suivantes en fonction des paramètres
86
	 * Récupérer le lien pour afficher les images suivantes en fonction des paramètres
104
	 * */
87
	 */
105
	public function recupererHrefSuivant() {
88
	public function recupererHrefSuivant() {
106
		$departActuel = $this->getDepart();
89
		$departActuel = $this->getDepart();
Line 107... Line 90...
107
		$limite = $this->getLimite();
90
		$limite = $this->getLimite();
108
		$departSuivant = $departActuel + $limite;
91
		$departSuivant = $departActuel + $limite;
109
		$url = null;
92
		$url = null;
110
		if ($departSuivant < $this->total) {
93
		if ($departSuivant < $this->total) {
111
			$url = $this->getUrl($departSuivant, $limite);
94
			$url = $this->obtenirUrlNavigation($departSuivant, $limite);
112
		}
95
		}
Line 113... Line 96...
113
		return $url;
96
		return $url;
114
	}
97
	}
115
 
98
 
116
	/**
99
	/**
117
	 * Retourner le nombre total d'éléments
100
	 * Retourner le nombre total d'éléments
118
	 * */
101
	 */
119
	public function getTotal() {
102
	public function getTotal() {
-
 
103
		return $this->total;
-
 
104
	}
-
 
105
 
-
 
106
	/**
-
 
107
	 * Enregistrer le nombre total d'éléments
-
 
108
	 * @param int $total le nombre d'éléments
-
 
109
	 */
-
 
110
	public function setTotal($total) {
-
 
111
		$this->total = $total;
-
 
112
	}
-
 
113
 
-
 
114
	/**
-
 
115
	 * Changer la valeur de sans limite pour ne pas l'afficher dans l'entete
-
 
116
	 * */
-
 
117
	public function setSansLimite() {
-
 
118
		$this->sansLimite = true;
-
 
119
	}
-
 
120
 
-
 
121
	/**
-
 
122
	* Créer l'entête en fonction des paramètres donnés
-
 
123
	*/
-
 
124
	public function getEntete() {
-
 
125
		$entete = array();
-
 
126
		$entete['masque'] = $this->conteneur->getMasque()->getChaineMasque();
-
 
127
 
-
 
128
		$entete['total'] = $this->getTotal();
-
 
129
		if ($this->sansLimite == false) {
-
 
130
			$entete['depart'] = $this->getDepart();
-
 
131
			$entete['limite'] = $this->getLimite();
-
 
132
 
-
 
133
			$lienPrecedent = $this->recupererHrefPrecedent();
-
 
134
 
-
 
135
			if ($lienPrecedent != null) {
-
 
136
				$entete['href.precedent'] = $lienPrecedent;
120
		return $this->total;
137
			}
121
	}
138