Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2458 → Rev 2557

/trunk/jrest/services/LocationSearch.php
41,46 → 41,7
}
 
private function executerRequeteLieu($lieu) {
$lieu_formate = $this->formaterChaineLieuPourRequete($lieu);
$retour = array();
 
if ($this->estUneChaineRequeteValide($lieu_formate)) {
$requete = 'SELECT DISTINCT nom, code '.
'FROM cel_zones_geo '.
'WHERE nom LIKE '.Cel::db()->proteger($lieu_formate.'%').' '.
'ORDER BY nom '.
'LIMIT 50 '.
' -- '.__FILE__.':'.__LINE__;
 
$liste_lieux = Cel::db()->requeter($requete);
if ($liste_lieux) {
foreach ($liste_lieux as $lieu_trouve) {
$retour[] = $this->formaterLigneResultat($lieu_trouve);
}
}
}
return $retour;
$recherche_infos_zone_geo = new RechercheInfosZoneGeo($this->config);
return $recherche_infos_zone_geo->obtenirListeInfosPourNom($lieu);
}
 
/**
* Remplace les * par % pour faire des recherches floues
* Remplace les + par _ (nginx envoie des "+" dans l'URL à la place des espaces)
* Remplace les espaces et les - par _ car les noms de communes peuvent avoir des espaces ou des tirets
* @param string $lieu
* @return string le lieu formaté pour la recherche
*/
private function formaterChaineLieuPourRequete($lieu) {
$lieu = ltrim($lieu);
$lieu = preg_replace('/\*+/', '%', $lieu);
$lieu = str_replace(['+', ' ', '-'], '_', $lieu);
return $lieu;
}
 
private function estUneChaineRequeteValide($lieu) {
return (strlen($lieu) > 0) && ($lieu != '%');
}
 
private function formaterLigneResultat($ligne) {
return array($ligne['nom'].' ('.substr(sprintf('%02s', $ligne['code']),0,2).')', $ligne['code']);
}
}