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 |
}
|