Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1795 Rev 1806
Line 16... Line 16...
16
*/
16
*/
17
class Navigation {
17
class Navigation {
Line 18... Line 18...
18
 
18
 
19
	private $conteneur;
19
	private $conteneur;
-
 
20
	private $parametresUrl;
-
 
21
	private $serviceNom;
20
	private $parametresUrl;
22
	private $filtresPossibles;
-
 
23
	private $filtresActifs;
21
	private $urlNavigation;
24
 
22
	private $total;
25
	private $total;
Line 23... Line 26...
23
	private $sansLimite;
26
	private $sansLimite;
24
 
27
 
25
	/**
28
	/**
26
	 * Constructeur de la classe Navigation
29
	 * Constructeur de la classe Navigation
27
	 * @param Array $parametresUrl (optionnel) la liste des paramètre issus du Conteneur
30
	 * @param Array $parametresUrl (optionnel) la liste des paramètre issus du Conteneur
28
	 */
31
	 */
-
 
32
	public function __construct($conteneur) {
-
 
33
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
29
	public function __construct($conteneur, $parametresUrl = null) {
34
 
30
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
35
		$contexte = $this->conteneur->getContexte();
-
 
36
		$this->parametresUrl = $contexte->getQS();
31
		$this->parametresUrl = $parametresUrl;
37
		$this->serviceNom = $contexte->getRessource(1);
-
 
38
 
-
 
39
		$this->filtresPossibles = $this->conteneur->getparametre($this->serviceNom.'.masques_possibles');
-
 
40
		$this->chargerFiltresActifs();
-
 
41
	}
-
 
42
 
-
 
43
	private function chargerFiltresActifs() {
-
 
44
		if ($this->parametresUrl != null) {
-
 
45
			foreach ($this->parametresUrl as $paramNom => $valeur) {
-
 
46
				if (in_array($paramNom, $this->filtresPossibles)) {
-
 
47
					$this->filtresActifs[$paramNom] = $valeur;
-
 
48
				}
32
		$this->urlNavigation = $this->conteneur->getUrlService();
49
			}
Line 33... Line 50...
33
		$this->urlNavigation->setOption(Url::OPTION_ENCODER_VALEURS, true);
50
		}
34
	}
51
	}
35
 
52
 
36
	/**
53
	/**
37
	 * Obtenir la valeur courante de départ
54
	 * Obtenir la valeur courante de départ
-
 
55
	 */
38
	 */
56
	public function getDepart() {
Line 39... Line 57...
39
	public function getDepart() {
57
		$navDepart = $this->getParamUrl('navigation.depart');
40
		return $this->conteneur->getParametre('navigation.depart') == null ? 0 : $this->conteneur->getParametre('navigation.depart') ;
58
		return ($navDepart == null) ? 0 : $navDepart ;
41
	}
59
	}
42
 
60
 
-
 
61
	/**
43
	/**
62
	 * Obtenir la limite courante
44
	 * Obtenir la limite courante
-
 
45
	 */
63
	 */
46
	public function getLimite() {
64
	public function getLimite() {
47
		$limite = 10;
65
		$limiteParam = $this->getParamUrl('navigation.limite');
48
		if ($this->conteneur->getParametre('navigation.limite') != null && is_numeric($this->conteneur->getParametre('navigation.limite'))) {
66
		$limite = 10;
49
			$limiteParam = $this->conteneur->getParametre('navigation.limite');
67
		if ($limiteParam != null && is_numeric($limiteParam)) {
Line -... Line 68...
-
 
68
			$limite = ($limiteParam < 1000) ? $limiteParam : 1000;// Pour éviter les abus !
-
 
69
		}
-
 
70
		return $limite;
-
 
71
	}
-
 
72
 
50
			$limite = ($limiteParam < 1000) ? $limiteParam : 1000;// Pour éviter les abus !
73
	private function getParamUrl($nom) {
51
		}
74
		$valeur = isset($this->parametresUrl[$nom]) ? $this->parametresUrl[$nom] : null;
52
		return $limite;
75
		return $valeur;
53
	}
76
	}
54
 
77
 
Line 61... Line 84...
61
	private function obtenirUrlNavigation($depart, $limite) {
84
	private function obtenirUrlNavigation($depart, $limite) {
62
		$parametres = $this->parametresUrl;
85
		$parametres = $this->parametresUrl;
63
		$parametres['navigation.depart'] = $depart;
86
		$parametres['navigation.depart'] = $depart;
64
		$parametres['navigation.limite'] = $limite;
87
		$parametres['navigation.limite'] = $limite;
Line -... Line 88...
-
 
88
 
-
 
89
		$urlServiceBase = $this->getParametre('url_service_base').$this->serviceNom;
-
 
90
		$urlNavigation = $this->conteneur->getUrl($urlServiceBase);
65
 
91
		$urlNavigation->setOption(Url::OPTION_ENCODER_VALEURS, true);
66
		$this->urlNavigation->setRequete($parametres);
92
		$urlNavigation->setRequete($parametres);
67
		$url = $this->urlNavigation->getURL();
93
		$url = $urlNavigation->getURL();
68
		return $url;
94
		return $url;
Line 69... Line 95...
69
	}
95
	}
70
 
96
 
Line 117... Line 143...
117
	public function setSansLimite() {
143
	public function setSansLimite() {
118
		$this->sansLimite = true;
144
		$this->sansLimite = true;
119
	}
145
	}
Line 120... Line 146...
120
 
146
 
-
 
147
	/**
-
 
148
	 * Génère un tableau contenant les informations pour l'entête des services renvoyant une liste de résultats.
121
	/**
149
	 *
122
	* Créer l'entête en fonction des paramètres donnés
150
	 * @return array Le tableau d'entête prés à être encodé en JSON.
123
	*/
151
	 */
124
	public function getEntete() {
152
	public function getEntete() {
125
		$entete = array();
153
		$entete = array();
Line 126... Line 154...
126
		$entete['masque'] = $this->conteneur->getMasque()->getChaineMasque();
154
		$entete['masque'] = $this->getChaineFiltresActifs();
127
 
155
 
128
		$entete['total'] = $this->getTotal();
156
		$entete['total'] = $this->getTotal();
129
		if ($this->sansLimite == false) {
157
		if ($this->sansLimite == false) {
Line 141... Line 169...
141
			}
169
			}
142
		}
170
		}
Line 143... Line 171...
143
 
171
 
144
		return $entete;
172
		return $entete;
-
 
173
	}
-
 
174
 
-
 
175
	/**
-
 
176
	 * Retourne les filtres au format chaine sous la forme filtre1=valeur1&filtre2=valeur2.
-
 
177
	 *
-
 
178
	 * @return String la chaine de caractères ou une chaine vide si pas de filtre.
-
 
179
	 */
-
 
180
	private function getChaineFiltresActifs() {
-
 
181
		return (!empty($this->filtresActifs)) ? http_build_query($this->filtresActifs) : '';
-
 
182
	}
-
 
183
 
-
 
184
	/**
-
 
185
	 * Récupérer tout ou partie des filtres présent dans l'url.
-
 
186
	 *
-
 
187
	 * @param String $filtreNom (optionnel) le nom du filtre tel que présent dans l'url.
-
 
188
	 * @return mixed si un filtre est passé en paramètre retourn la valeur correspondante, si pas de paramétre
-
 
189
	 * retourne le tableau complet des filtres. False en cas d'erreur.
-
 
190
	 * */
-
 
191
	public function getFiltre($filtreNom = null) {
-
 
192
		$retour = false;
-
 
193
		if ($filtreNom == null) {
-
 
194
			$retour = $this->filtresActifs;
-
 
195
		} else if ($filtreNom != null && isset($this->filtresActifs[$filtreNom])) {
-
 
196
			$retour = $this->filtresActifs[$filtreNom];
-
 
197
		}
-
 
198
		return retour;
145
	}
199
	}
146
}
200
}