Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 1153 Rev 1227
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 {