New file |
0,0 → 1,99 |
<?php |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
|
/** |
* Classe gérant la completion des noms de lieux |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* |
* @author David Delon <david.delon@clapas.net> |
* @author Aurélien Peronnet <aurelien@tela-botanica.org> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @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" |
* |
* |
*/ |
?> |