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']); |
} |
} |