Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 6 Rev 13
Line 63... Line 63...
63
	protected $table_retour = array();
63
	protected $table_retour = array();
64
	/** Stocke le nombre total de résultats de la requete principale. Est calculée lors de l'assemblage de la requete */
64
	/** Stocke le nombre total de résultats de la requete principale. Est calculée lors de l'assemblage de la requete */
65
	protected $total_resultat;
65
	protected $total_resultat;
Line 66... Line 66...
66
 
66
 
67
// +-------------------------------------------------------------------------------------------------------------------+
67
// +-------------------------------------------------------------------------------------------------------------------+
68
	public function traiterParametres($parametres) {
68
	public function traiterParametres() {
69
		if (isset($parametres) && !empty($parametres)) {
69
		if (isset($this->parametres) && !empty($this->parametres)) {
Line 70... Line 70...
70
			$this->table_param = $parametres;
70
			$this->table_param = $$this->parametres;
71
 
71
 
72
		//   masque : filtre la liste en fonction d'un masque de recherche portant sur le code, le nom ou la region.
72
		//   masque : filtre la liste en fonction d'un masque de recherche portant sur le code, le nom ou la region.
73
        //   masque.code : filtre uniquement sur le code. masque.nom : filtre uniquement sur le nom.
73
        //   masque.code : filtre uniquement sur le code. masque.nom : filtre uniquement sur le nom.
74
        //   masque.region : filtre uniquement sur la region.
74
        //   masque.region : filtre uniquement sur la region.
75
			if (isset($parametres['recherche']) && $parametres['recherche'] != '') {
75
			if (isset($parametres['recherche']) && $parametres['recherche'] != '') {
Line 76... Line 76...
76
				$this->recherche = $parametres['recherche'];
76
				$this->recherche = $parametres['recherche'];
77
			}
77
			}
-
 
78
 
78
 
79
			foreach ($parametres as $param => $valeur) {
-
 
80
				switch ($param) {
-
 
81
					case 'masque' :
79
			foreach ($parametres as $param => $valeur) {
82
						$this->ajouterLeFiltreMasque('masque', $valeur);
-
 
83
						break;
-
 
84
					case 'masque.code' :
80
				switch ($param) {
85
						$this->ajouterLeFiltreMasque('id', $valeur);
-
 
86
						break;
-
 
87
					case 'masque.nom' :
81
					case 'masque' 			  :  $this->ajouterLeFiltreMasque('masque', $valeur); 				break;
88
						$this->ajouterLeFiltreMasque('nom', $valeur);
-
 
89
						break;
82
					case 'masque_code' 		  :  $this->ajouterLeFiltreMasque('id', $valeur); 				break;
90
					case 'retour.langue' :
-
 
91
						$this->retour_langue = $valeur;break;
-
 
92
					case 'retour.format' :
83
					case 'masque_nom' 		  :  $this->ajouterLeFiltreMasque('nom', $valeur); 					break;
93
						$this->retour_format = $valeur;
-
 
94
						break;
-
 
95
					case 'navigation.depart' :
84
					case 'retour_langue' 	:  $this->retour_langue = $valeur; 			break;
96
						$this->limite_requete['depart'] = $valeur;
-
 
97
						break;
85
					case 'retour_format' 	  :  $this->retour_format = $valeur;								break;
98
			        case 'navigation.limite' :
-
 
99
			        	$this->limite_requete['limite'] = $valeur;
-
 
100
			        	break;
86
					case 'navigation_depart'  :  $this->limite_requete['depart'] = $valeur;	  					break;
101
			        case 'recherche' :
87
			        case 'navigation_limite'  :  $this->limite_requete['limite'] = $valeur;	  					break;
102
			        	break;
88
			        case 'recherche'		: 																			break;
103
					default :
89
					default					:  $p = 'Erreur dans les paramètres de recherche de votre requête : '.
104
						$p = 'Erreur dans les paramètres de recherche de votre requête : '.
90
												'</br> Le paramètre " '.$param.' " n\'existe pas.';
105
						'</br> Le paramètre " '.$param.' " n\'existe pas.';
91
											$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $p);						break;
106
						$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $p);
92
				}
107
				}
Line 124... Line 139...
124
			}
139
			}
125
		}
140
		}
126
	}
141
	}
Line 127... Line 142...
127
 
142
 
128
// +-------------------------------------------------------------------------------------------------------------------+
143
// +-------------------------------------------------------------------------------------------------------------------+
129
	public function traiterRessources(&$ressources) {
144
	public function traiterRessources() {
130
		if (isset($ressources) && !empty($ressources)) {
145
		if (isset($this->ressources) && !empty($this->ressources)) {
131
			$this->table_ressources = $ressources;
146
			$this->table_ressources = $this->ressources;
132
			if (isset($this->table_ressources[0]) && !empty($this->table_ressources[0])) {
147
			if (isset($this->table_ressources[0]) && !empty($this->table_ressources[0])) {
133
				//requete = /langues/#id
148
				//requete = /langues/#id
134
				$this->traiterRessourceId();
149
				$this->traiterRessourceId();
135
				if (isset($this->table_ressources[1]) && !empty($this->table_ressources[1])) {
150
				if (isset($this->table_ressources[1]) && !empty($this->table_ressources[1])) {
Line 166... Line 181...
166
	}
181
	}
Line 167... Line 182...
167
 
182
 
168
// +-------------------------------------------------------------------------------------------------------------------+
183
// +-------------------------------------------------------------------------------------------------------------------+
169
	public function assemblerLaRequete() {
184
	public function assemblerLaRequete() {
170
      	$requete = 	' SELECT '.$this->requete_champ.
185
      	$requete = 	' SELECT '.$this->requete_champ.
171
      					' FROM '.$this->table
186
      				' FROM '.$this->table
172
      						.$this->formerRequeteCondition()
187
      				.$this->formerRequeteCondition()
173
      						.$this->formerRequeteLimite();
188
      				.$this->formerRequeteLimite();
174
      	return $requete;
189
      	return $requete;
Line 175... Line 190...
175
	}
190
	}
176
 
191
 
Line 197... Line 212...
197
		return $this->requete_limite;
212
		return $this->requete_limite;
198
	}
213
	}
Line 199... Line 214...
199
 
214
 
200
	public function recupererTotalResultat() {
215
	public function recupererTotalResultat() {
201
		//on récupère le nombre total de résultats de la requete (ex : le nombre d'id contenu dans la liste /langues)
216
		//on récupère le nombre total de résultats de la requete (ex : le nombre d'id contenu dans la liste /langues)
202
		$requete = 'SELECT count(*) as nombre FROM '
217
		$requete = 'SELECT count(*) as nombre FROM '.
203
			.$this->table
218
			$this->table.
204
			.$this->formerRequeteCondition();
219
			$this->formerRequeteCondition();
Line 205... Line 220...
205
		$res = $this->getBdd()->recuperer($requete);
220
		$res = $this->getBdd()->recuperer($requete);
206
 
221
 
207
		if ($res) {
222
		if ($res) {
Line 217... Line 232...
217
	// determine en fct du service appelé (/langues | /langues/#id | /langues/#id/champ |
232
	// determine en fct du service appelé (/langues | /langues/#id | /langues/#id/champ |
218
	// /langues/#id/relations) le format du tableau à retourner. Encode en json
233
	// /langues/#id/relations) le format du tableau à retourner. Encode en json
219
	public function retournerResultatFormate($resultat) {
234
	public function retournerResultatFormate($resultat) {
220
		$this->recupererTableConfig('correspondance_champs');
235
		$this->recupererTableConfig('correspondance_champs');
221
		switch ($this->format_reponse) {
236
		switch ($this->format_reponse) {
-
 
237
			case 'langues' :
222
			case 'langues' 				: $reponse = $this->formaterLangues($resultat); 			 break;
238
				$reponse = $this->formaterLangues($resultat);
-
 
239
				break;
-
 
240
			case 'langues/id' :
223
			case 'langues/id' 			: $reponse = $this->formaterLanguesId($resultat[0]); 	 break;
241
				$reponse = $this->formaterLanguesId($resultat[0]);
-
 
242
				break;
-
 
243
			case 'langues/id/champ' :
224
			case 'langues/id/champ' 		: $reponse = $this->formaterLanguesIdChamp($resultat[0]); break;
244
				$reponse = $this->formaterLanguesIdChamp($resultat[0]);
225
			default : break;
245
				break;
226
		}
246
		}
227
		return $reponse;
247
		return $reponse;
228
	}
248
	}
Line 229... Line 249...
229
 
249
 
Line 232... Line 252...
232
		$this->table_retour['depart'] = $this->limite_requete['depart'];
252
		$this->table_retour['depart'] = $this->limite_requete['depart'];
233
		$this->table_retour['limite'] = $this->limite_requete['limite'];
253
		$this->table_retour['limite'] = $this->limite_requete['limite'];
234
		$this->table_retour['total']  = $this->total_resultat;
254
		$this->table_retour['total']  = $this->total_resultat;
235
		//formuler les urls precedentes et suivantes affichées dans l'entete du resultat
255
		//formuler les urls precedentes et suivantes affichées dans l'entete du resultat
236
		$url = $this->formulerUrl($this->total_resultat, '/langues');
256
		$url = $this->formulerUrl($this->total_resultat, '/langues');
-
 
257
		if (isset($url['precedent']) && $url['precedent'] != '') {
237
		if ($url['precedent'] != '') { $this->table_retour['href.precedent'] = $url['precedent']; }
258
			$this->table_retour['href.precedent'] = $url['precedent'];
-
 
259
		}
-
 
260
		if (isset($url['suivant']) && $url['suivant'] != '') {
238
		if ($url['suivant']   != '') { $this->table_retour['href.suivant']   = $url['suivant']; }
261
			$this->table_retour['href.suivant']   = $url['suivant'];
-
 
262
		}
Line 239... Line 263...
239
 
263
 
240
		$table_retour_json['entete'] = $this->table_retour;
264
		$table_retour_json['entete'] = $this->table_retour;
241
		$this->table_retour = array();
265
		$this->table_retour = array();
242
		if ($this->retour_langue == 'fr') {$nom = 'nom'; } else {$nom = 'nom_'.$this->retour_langue;}
266
		if ($this->retour_langue == 'fr') {$nom = 'nom'; } else {$nom = 'nom_'.$this->retour_langue;}
243
		if (isset($this->table_param['masque_nom'])) $resultat = $this->trierRechercheFloue($this->table_param['masque_nom'], $resultat, $nom);
267
		if (isset($this->table_param['masque_nom'])) $resultat = $this->trierRechercheFloue($this->table_param['masque_nom'], $resultat, $nom);
244
		//on remplit la table $table_retour_json['resultat']
268
		//on remplit la table $table_retour_json['resultat']
245
		foreach ($resultat as $tab) {
269
		foreach ($resultat as $tab) {
246
			foreach ($tab as $key => $valeur) {
270
			foreach ($tab as $key => $valeur) {
-
 
271
				if ($valeur != '') {
-
 
272
					//TODO : vérifier d'où venez $id
247
				if ($valeur != '') {
273
					if ($key == 'id') {// ATTENTION : au départ valait $id!
248
					if ($key == $id) {
274
						$num = $valeur;
-
 
275
						$this->table_retour['code'] = $valeur;
249
						$num = $valeur; $this->table_retour['code'] = $valeur; break;
276
						break;
250
					} elseif ($key == 'nom_'.$this->retour_langue || ($this->retour_langue == 'fr' && $key == 'nom')) {
277
					} elseif ($key == 'nom_'.$this->retour_langue || ($this->retour_langue == 'fr' && $key == 'nom')) {
-
 
278
						$this->table_retour['nom'] = $valeur;
251
						$this->table_retour['nom'] = $valeur; break;
279
						break;
252
					} else {
280
					} else {
-
 
281
						switch ($key) {
253
						switch ($key) {
282
							case 'id' :
-
 
283
								$num = $valeur; $this->table_retour['code'] = $valeur;
-
 
284
								break;
254
							case 'id'  : $num = $valeur; $this->table_retour['code'] = $valeur;	break;
285
							case 'nom' :
255
							case 'nom' : $this->table_retour['nom'] = $valeur;					break;
286
								$this->table_retour['nom'] = $valeur;
256
							default    : 						 									break;
287
								break;
257
						}
288
						}
258
					}
289
					}
259
				}
290
				}
260
			}
291
			}