Line 55... |
Line 55... |
55 |
$this->pays = isset($this->parametres['pays']) ? $this->parametres['pays'] : null;
|
55 |
$this->pays = isset($this->parametres['pays']) ? $this->parametres['pays'] : null;
|
Line 56... |
Line 56... |
56 |
|
56 |
|
57 |
if($this->masque != null) {
|
57 |
if($this->masque != null) {
|
58 |
$corps = $this->rechercherZoneGeoParNom($this->masque, $this->niveaux, $this->limite, $this->pays);
|
58 |
$corps = $this->rechercherZoneGeoParNom($this->masque, $this->niveaux, $this->limite, $this->pays);
|
59 |
} else {
|
59 |
} else {
|
60 |
$zoneTrouveeInfos = $this->localiserPointLatLon();
|
60 |
$zoneTrouveeInfos = $this->localiserPointLatLon();
|
61 |
$corps = $this->formaterResultats($zoneTrouveeInfos);
|
61 |
$corps = $this->formaterResultats($zoneTrouveeInfos);
|
Line 62... |
Line 62... |
62 |
}
|
62 |
}
|
63 |
|
63 |
|
Line 70... |
Line 70... |
70 |
private function verifierParametres() {
|
70 |
private function verifierParametres() {
|
71 |
extract($this->parametres);
|
71 |
extract($this->parametres);
|
72 |
$messages = array();
|
72 |
$messages = array();
|
Line 73... |
Line 73... |
73 |
|
73 |
|
74 |
if(array_key_exists('masque', $this->parametres)) {
|
74 |
if(array_key_exists('masque', $this->parametres)) {
|
75 |
if (empty($masque)) {
|
75 |
if (empty($masque)) {
|
76 |
$messages[] = "S'il est présent le paramètre recherche ne peut pas être vide";
|
76 |
$messages[] = "S'il est présent le paramètre recherche ne peut pas être vide";
|
77 |
}
|
77 |
}
|
78 |
} else {
|
78 |
} else {
|
79 |
if (! array_key_exists('lat', $this->parametres)) {
|
79 |
if (! array_key_exists('lat', $this->parametres)) {
|
80 |
$messages[] = "Vous devez indiquer une latitude en degré décimal à l'aide du paramètres d'url : lat";
|
80 |
$messages[] = "Vous devez indiquer une latitude en degré décimal à l'aide du paramètres d'url : lat";
|
Line 198... |
Line 198... |
198 |
// au lieu de la ville originelle, on les "déclasse" donc artificiellement
|
198 |
// au lieu de la ville originelle, on les "déclasse" donc artificiellement
|
199 |
$ordre = 'hors_amerique_du_nord DESC, niveau DESC, nom_present DESC, nom_fr_present DESC, nom_fr_present DESC, '.
|
199 |
$ordre = 'hors_amerique_du_nord DESC, niveau DESC, nom_present DESC, nom_fr_present DESC, nom_fr_present DESC, '.
|
200 |
'nom_es_present DESC, intitule_present DESC';
|
200 |
'nom_es_present DESC, intitule_present DESC';
|
Line 201... |
Line 201... |
201 |
|
201 |
|
202 |
$niveau_str = array();
|
202 |
$niveau_str = array();
|
203 |
if($niveaux != null) {
|
203 |
if($niveaux != null) {
|
204 |
foreach ($niveaux as $niveau) {
|
204 |
foreach ($niveaux as $niveau) {
|
205 |
$niveau_str[] = $this->bdd->proteger($niveau);
|
205 |
$niveau_str[] = $this->bdd->proteger($niveau);
|
206 |
}
|
206 |
}
|
207 |
}
|
207 |
}
|
208 |
|
- |
|
209 |
$pays_str = '';
|
208 |
|
- |
|
209 |
if($pays != null) {
|
210 |
if($pays != null) {
|
210 |
// Si le pays correspond, on fait remonter le résultat
|
211 |
$pays_str = '(code_iso_3166_1 = '.$this->bdd->proteger($pays).' OR '.
|
211 |
$champs_tri .= ', IF(code_iso_3166_1 = ' . $this->bdd->proteger($pays)
|
- |
|
212 |
. ' OR ' . 'code_iso_3166_2 LIKE ' . $this->bdd->proteger($pays."%") . ', 1, 0) as pays_correspond ';
|
212 |
'code_iso_3166_2 LIKE '.$this->bdd->proteger($pays."%").')';
|
213 |
$ordre = 'pays_correspond DESC, ' . $ordre;
|
Line 213... |
Line 214... |
213 |
}
|
214 |
}
|
214 |
|
215 |
|
215 |
$requete = "SELECT $champs, $champs_tri FROM osm_zones_admin ".
|
216 |
$requete = "SELECT $champs, $champs_tri FROM osm_zones_admin ".
|
216 |
"WHERE ".
|
- |
|
217 |
(!empty($niveau_str) ? ("niveau IN (".implode(',', $niveau_str).") AND ") : "").
|
217 |
"WHERE ".
|
218 |
(!empty($pays_str) ? $pays_str.' AND ' : "").
|
218 |
(!empty($niveau_str) ? ("niveau IN (".implode(',', $niveau_str).") AND ") : "").
|
219 |
"(nom LIKE ".$this->bdd->proteger($masque_fmt).' OR '.
|
219 |
"(nom LIKE ".$this->bdd->proteger($masque_fmt).' OR '.
|
220 |
"intitule LIKE ".$this->bdd->proteger($masque_fmt).' OR '.
|
220 |
"intitule LIKE ".$this->bdd->proteger($masque_fmt).' OR '.
|
221 |
"nom_fr LIKE ".$this->bdd->proteger($masque_fmt).' OR '.
|
221 |
"nom_fr LIKE ".$this->bdd->proteger($masque_fmt).' OR '.
|
222 |
"nom_en LIKE ".$this->bdd->proteger($masque_fmt).' OR '.
|
222 |
"nom_en LIKE ".$this->bdd->proteger($masque_fmt).' OR '.
|
Line 223... |
Line 223... |
223 |
"nom_es LIKE ".$this->bdd->proteger($masque_fmt).') '.
|
223 |
"nom_es LIKE ".$this->bdd->proteger($masque_fmt).') '.
|
224 |
"ORDER BY ".$ordre." LIMIT ".$limite;
|
224 |
"ORDER BY ".$ordre." LIMIT ".$limite;
|
225 |
|
225 |
|
226 |
$resultat = $this->bdd->recupererTous($requete);
|
226 |
$resultat = $this->bdd->recupererTous($requete);
|
227 |
if (empty($resultat)) {
|
227 |
if (empty($resultat)) {
|
228 |
$msgTpl = "Service '%s' : aucune zone correspondant au nom : %s .";
|
228 |
$msgTpl = "Service '%s' : aucune zone correspondant au nom : %s .";
|
229 |
$msg = sprintf($msgTpl, get_class($this), $masque);
|
229 |
$msg = sprintf($msgTpl, get_class($this), $masque);
|
230 |
throw new Exception($msg, RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
|
230 |
throw new Exception($msg, RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
|
Line 231... |
Line 231... |
231 |
} else {
|
231 |
} else {
|