Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2457 → Rev 2458

/trunk/jrest/services/LocationSearch.php
1,70 → 1,67
<?php
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
 
// declare(encoding='UTF-8');
/**
* Classe gérant la completion des noms de lieux
* Encodage en entrée : utf8
* Encodage en sortie : utf8
* Service gérant la completion des noms de lieux.
*
* @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
**/
* 2 : Si la longueur du prefixe est > 2, l'application retourne les 50 premieres lieux commencant par ce prefixe
*
* @internal Mininum PHP version : 5.2
* @category CEL
* @package Services
* @subpackage Auto-complétions
* @version 0.1
* @author Mathias CHOUET <mathias@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Aurelien 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>
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
*/
 
class LocationSearch extends Cel {
 
function getElement($uid){
public function getElement($uid){
$retour = array();
 
$retour = array();
if (isset($uid[0])) {
$retour = $this->executerRequeteLieu($uid[0]);
}
$this->envoyerJson($retour);
return true;
 
$this->envoyerJson($retour);
return true;
}
 
function getRessource(){
print "[]";
return;
public 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;
}
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;
}
 
/**
* Remplace les * par % pour faire des recherches floues
* Remplace les + par _ (nginx envoie des "+" dans l'URL à la place des espaces)
78,23 → 75,12
$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']);
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"
*
*
*/
?>
}