Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2458 Rev 2557
Line 39... Line 39...
39
		print '[]';
39
		print '[]';
40
		return;
40
		return;
41
	}
41
	}
Line 42... Line 42...
42
 
42
 
43
	private function executerRequeteLieu($lieu) {
43
	private function executerRequeteLieu($lieu) {
44
		$lieu_formate = $this->formaterChaineLieuPourRequete($lieu);
-
 
45
		$retour = array();
-
 
46
 
-
 
47
		if ($this->estUneChaineRequeteValide($lieu_formate)) {
-
 
48
			$requete = 'SELECT DISTINCT nom, code '.
-
 
49
				'FROM cel_zones_geo '.
-
 
50
				'WHERE nom LIKE '.Cel::db()->proteger($lieu_formate.'%').' '.
-
 
51
				'ORDER BY nom '.
-
 
52
				'LIMIT 50 '.
-
 
53
				' -- '.__FILE__.':'.__LINE__;
-
 
54
 
-
 
55
			$liste_lieux = Cel::db()->requeter($requete);
-
 
56
			if ($liste_lieux) {
-
 
57
				foreach ($liste_lieux as $lieu_trouve) {
-
 
58
					$retour[] = $this->formaterLigneResultat($lieu_trouve);
-
 
59
				}
-
 
60
			}
-
 
61
		}
-
 
62
		return $retour;
-
 
63
	}
-
 
64
 
-
 
65
	/**
-
 
66
	 * Remplace les * par % pour faire des recherches floues
-
 
67
	 * Remplace les + par _ (nginx envoie des "+" dans l'URL à la place des espaces)
-
 
68
	 * Remplace les espaces et les - par _ car les noms de communes peuvent avoir des espaces ou des tirets
-
 
69
	 * @param string $lieu
-
 
70
	 * @return string le lieu formaté pour la recherche
-
 
71
	 */
44
		$recherche_infos_zone_geo = new RechercheInfosZoneGeo($this->config);
72
	private function formaterChaineLieuPourRequete($lieu) {
-
 
73
		$lieu = ltrim($lieu);
-
 
74
		$lieu = preg_replace('/\*+/', '%', $lieu);
-
 
75
		$lieu = str_replace(['+', ' ', '-'], '_', $lieu);
-
 
76
		return $lieu;
-
 
77
	}
-
 
78
 
-
 
79
	private function estUneChaineRequeteValide($lieu) {
-
 
80
		return (strlen($lieu) > 0) && ($lieu != '%');
-
 
81
	}
-
 
82
 
-
 
83
	private function formaterLigneResultat($ligne) {
-
 
84
		return array($ligne['nom'].' ('.substr(sprintf('%02s', $ligne['code']),0,2).')', $ligne['code']);
45
		return $recherche_infos_zone_geo->obtenirListeInfosPourNom($lieu);
85
	}
46
	}
86
}
47
}