* @author Aurélien Peronnet * @license GPL v3 * @license CECILL v2 * @version $Id$ * @copyright © 2010, David Delon */ /** * Cas d'utilisation : * Service completion nom de commune (plus tard de lieu en général) * * 1 : L'application recoit un debut de nom de lieu * 2 : Si la longueur du prefixe est > 2, l'application retourne les 50 premieres lieux * commencant par ce prefixe **/ class LocationSearch extends Cel { function getElement($uid){ $retour = array(); if (isset($uid[0])) { $retour = $this->executerRequeteLieu($uid[0]); } $this->envoyerJson($retour); return true; } function getRessource(){ print "[]"; return; } private function executerRequeteLieu($lieu) { $lieu_formate = $this->formaterChaineLieuPourRequete($lieu); $retour = array(); if ($this->estUneChaineRequeteValide($lieu_formate)) { $requete_information_lieu = 'SELECT DISTINCT nom, code '. 'FROM cel_zones_geo '. 'WHERE '. 'nom LIKE '.Cel::db()->proteger($lieu_formate.'%').' '. 'ORDER BY nom LIMIT 50'; $liste_lieux = Cel::db()->requeter($requete_information_lieu); if($liste_lieux) { foreach($liste_lieux as $lieu_trouve) { $retour[] = $this->formaterLigneResultat($lieu_trouve); } } } return $retour; } private function formaterChaineLieuPourRequete($params) { $lieu = $params; $lieu=ltrim($lieu); $lieu=preg_replace('/\*+/','%',$lieu); $lieu = str_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']); } } /* +--Fin du code ---------------------------------------------------------------------------------------+ * $Log$ * Revision 1.4 2008-01-30 08:57:28 ddelon * fin mise en place mygwt * * Revision 1.3 2007-05-21 18:13:03 ddelon * Correction bug recherche commune du type "la canourgue" * * */ ?>