Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 1099 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1099 Rev 1104
Line 31... Line 31...
31
	 * Permet de stocker la requete formulée : /zone-geo | /zone-geo/#id | /zone-geo/#id/champ | /zone-geo/#id/relations
31
	 * Permet de stocker la requete formulée : /zone-geo | /zone-geo/#id | /zone-geo/#id/champ | /zone-geo/#id/relations
32
	 * Est remplit au cours de l'analyse des ressources (traiterRessources()), par défaut, a la valeur du service.
32
	 * Est remplit au cours de l'analyse des ressources (traiterRessources()), par défaut, a la valeur du service.
33
	 * Est utilisée principalement pr déterminer le format du tableau à retourner.	 */
33
	 * Est utilisée principalement pr déterminer le format du tableau à retourner.	 */
34
	protected $format_reponse = 'zone-geo';
34
	protected $format_reponse = 'zone-geo';
Line -... Line 35...
-
 
35
 
-
 
36
	/** Tri des résultats */
-
 
37
	protected $tri = 'dep';
-
 
38
	protected $ordre = 'ASC';
-
 
39
	/**
-
 
40
	 * Permet de trier selon les clefs des tableaux reçus, et que ça marche (en
-
 
41
	 * fait faut faire des alias de colonnes correspondant aux clefs de sortie
-
 
42
	 * mais bon bref...)
-
 
43
	 */
-
 
44
	protected $corres_tri = array('code' => 'dep', 'nom' => 'nccenr');
35
 
45
 
36
	/** Variables constituant les parametres de la requete SQL (champ, condition, group by, limit) remplie
46
	/** Variables constituant les parametres de la requete SQL (champ, condition, group by, limit) remplie
37
	 * selon ressources et paramètres	 */
47
	 * selon ressources et paramètres	 */
38
	protected $requete_champ = ' * ';
48
	protected $requete_champ = ' * ';
39
	protected $requete_condition = '';
49
	protected $requete_condition = '';
Line 43... Line 53...
43
	);
53
	);
Line 44... Line 54...
44
 
54
 
45
	/** Stockage des ressources et paramétres */
55
	/** Stockage des ressources et paramétres */
46
	protected $table_ressources = array();
56
	protected $table_ressources = array();
-
 
57
	protected $table_param = array();
47
	protected $table_param = array();
58
 
48
	/**
59
	/**
49
	 * Precise la contenance plus ou moins précise du tableau à retourner :
60
	 * Precise la contenance plus ou moins précise du tableau à retourner :
50
	 *  - min = les données présentes dans la table
61
	 *  - min = les données présentes dans la table
51
	 *  - max = les données de la table + les informations complémentaires (pour les identifiants et les codes)
62
	 *  - max = les données de la table + les informations complémentaires (pour les identifiants et les codes)
52
	 *  - oss = la liste des nom_sci (uniquement pour noms et taxons)
63
	 *  - oss = la liste des nom_sci (uniquement pour noms et taxons)
53
	 */
64
	 */
-
 
65
	protected $retour_format = 'max';
-
 
66
 
-
 
67
	/**
-
 
68
	 * Si "objet", renverra un objet dont les clefs sont les codes de départements;
-
 
69
	 * Si "liste", renverra une liste qui a le mérite de conserver l'ordre !
-
 
70
	 */
-
 
71
	protected $retour_type = 'objet';
54
	protected $retour_format = 'max';
72
 
55
	/** Valeur du paramètre de requete recherche :
73
	/** Valeur du paramètre de requete recherche :
56
	 *  - stricte : le masque est passé tel quel à l'opérateur LIKE.
74
	 *  - stricte : le masque est passé tel quel à l'opérateur LIKE.
57
	 *  - etendue : ajout automatique du signe % à la place des espaces et en fin de masque avec utilisation de LIKE.
75
	 *  - etendue : ajout automatique du signe % à la place des espaces et en fin de masque avec utilisation de LIKE.
58
	 *  - floue : recherche tolérante vis-à-vis d'approximations ou d'erreurs (fautes d'orthographe par exemple) */
76
	 *  - floue : recherche tolérante vis-à-vis d'approximations ou d'erreurs (fautes d'orthographe par exemple) */
Line 59... Line 77...
59
	protected $recherche;
77
	protected $recherche;
60
 
78
 
-
 
79
	/** Permet de stocker le tableau de résultat (non encodé en json) */
61
	/** Permet de stocker le tableau de résultat (non encodé en json) */
80
	protected $table_retour = array();
62
	protected $table_retour = array();
81
 
Line 63... Line 82...
63
	/** Stocke le nombre total de résultats de la requete principale. Est calculée lors de l'assemblage de la requete */
82
	/** Stocke le nombre total de résultats de la requete principale. Est calculée lors de l'assemblage de la requete */
64
	protected $total_resultat;
83
	protected $total_resultat;
Line 92... Line 111...
92
						$this->ajouterLeFiltreMasque('region', $valeur);
111
						$this->ajouterLeFiltreMasque('region', $valeur);
93
						break;
112
						break;
94
					case 'retour.format' :
113
					case 'retour.format' :
95
						$this->retour_format = $valeur;
114
						$this->retour_format = $valeur;
96
						break;
115
						break;
-
 
116
					case 'retour.type' :
-
 
117
						if (in_array($valeur, array('objet', 'liste')))
-
 
118
							$this->retour_type = $valeur;
-
 
119
						break;
-
 
120
					case 'retour.tri' :
-
 
121
						if ($valeur != '' ) {
-
 
122
							if (in_array($valeur, array_keys($this->corres_tri))) {
-
 
123
								$this->tri = $this->corres_tri[$valeur];
-
 
124
							} else {
-
 
125
								$this->tri = $valeur; // au petit bonheur la chance
-
 
126
							}
-
 
127
						}
-
 
128
						break;
-
 
129
					case 'retour.ordre' :
-
 
130
						if (in_array(strtoupper($valeur), array('ASC', 'DESC')))
-
 
131
							$this->ordre = $valeur;
-
 
132
						break;
97
					case 'navigation.depart' :
133
					case 'navigation.depart' :
98
						if ($valeur != '')
134
						if ($valeur != '')
99
							$this->limite_requete['depart'] = $valeur;
135
							$this->limite_requete['depart'] = $valeur;
100
						break;
136
						break;
101
					case 'navigation.limite' :
137
					case 'navigation.limite' :
Line 190... Line 226...
190
	public function assemblerLaRequete() {
226
	public function assemblerLaRequete() {
191
		//assemblage de la requete :
227
		//assemblage de la requete :
192
		$requete = ' SELECT '.$this->requete_champ.
228
		$requete = ' SELECT '.$this->requete_champ.
193
					' FROM '.$this->table
229
					' FROM '.$this->table
194
					.$this->formerRequeteCondition()
230
					.$this->formerRequeteCondition()
-
 
231
					. ' ORDER BY ' . $this->tri . ' ' . $this->ordre
195
					.$this->formerRequeteLimite();
232
					.$this->formerRequeteLimite();
196
		return $requete;
233
		return $requete;
197
	}
234
	}
Line 198... Line 235...
198
 
235
 
Line 210... Line 247...
210
	public function formerRequeteLimite() {
247
	public function formerRequeteLimite() {
211
		if ($this->format_reponse != 'zone-geo' && $this->format_reponse != 'zone-geo/id/relations') {
248
		if ($this->format_reponse != 'zone-geo' && $this->format_reponse != 'zone-geo/id/relations') {
212
			$this->requete_limite = '';
249
			$this->requete_limite = '';
213
		} else {
250
		} else {
214
			$this->total_resultat = $this->recupererTotalResultat();
251
			$this->total_resultat = $this->recupererTotalResultat();
215
			/*if ($this->limite_requete['depart'] > $this->total_resultat) {
-
 
216
				//cas où la requete presente un navigation.depart supérieur au nb total de resultats.
-
 
217
				$this->limite_requete['depart'] =
-
 
218
					(($nb - $this->limite_requete['limite']) < 0) ? 0 : ($nb - $this->limite_requete['limite']);
-
 
219
			}*/
-
 
220
			$this->requete_limite = ' LIMIT '.$this->limite_requete['depart'].', '.$this->limite_requete['limite'];
252
			$this->requete_limite = ' LIMIT '.$this->limite_requete['depart'].', '.$this->limite_requete['limite'];
221
		}
253
		}
222
		return $this->requete_limite;
254
		return $this->requete_limite;
223
	}
255
	}
Line 277... Line 309...
277
				}
309
				}
278
			}
310
			}
279
			if ($this->retour_format == 'max') {
311
			if ($this->retour_format == 'max') {
280
				$this->table_retour['href'] = $this->ajouterHref('zone-geo', $num);
312
				$this->table_retour['href'] = $this->ajouterHref('zone-geo', $num);
281
			}
313
			}
-
 
314
			if ($this->retour_type == 'objet') {
282
			$resultat_json[$num] = $this->table_retour;
315
				$resultat_json[$num] = $this->table_retour;
-
 
316
			} elseif ($this->retour_type == 'liste') {
-
 
317
				$resultat_json[] = $this->table_retour;
-
 
318
			}
283
			$this->table_retour = array();
319
			$this->table_retour = array();
284
		}
320
		}
285
		$table_retour_json['resultat'] = $resultat_json;
321
		$table_retour_json['resultat'] = $resultat_json;
286
		return $table_retour_json;
322
		return $table_retour_json;
287
	}
323
	}