Subversion Repositories eFlore/Applications.cel

Rev

Rev 2153 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2153 Rev 2458
Line 1... Line 1...
1
<?php
1
<?php
2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
2
// declare(encoding='UTF-8');
3
 
-
 
4
/**
3
/**
5
 * Classe gérant la completion des noms de lieux
4
 * Service gérant la completion des noms de lieux.
6
 * Encodage en entrée : utf8
-
 
7
 * Encodage en sortie : utf8
-
 
8
 *
5
 *
9
 * @author David Delon <david.delon@clapas.net>
-
 
10
 * @author Aurélien Peronnet <aurelien@tela-botanica.org>
-
 
11
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
-
 
12
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
-
 
13
 * @version $Id$
-
 
14
 * @copyright © 2010, David Delon
-
 
15
 */
-
 
16
 
-
 
17
/**
-
 
18
 * Cas d'utilisation :
6
 * Cas d'utilisation :
19
 * Service completion nom de commune (plus tard de lieu en général)
7
 * Service completion nom de commune (plus tard de lieu en général)
20
 *
8
 *
21
 * 1 : L'application recoit un debut de nom de lieu
9
 * 1 : L'application recoit un debut de nom de lieu
22
 * 2 : Si la longueur du prefixe est > 2, l'application retourne les 50 premieres lieux 
10
 * 2 : Si la longueur du prefixe est > 2, l'application retourne les 50 premieres lieux commencant par ce prefixe
-
 
11
 *
-
 
12
 * @internal   Mininum PHP version : 5.2
-
 
13
 * @category   CEL
23
 * commencant par ce prefixe
14
 * @package    Services
-
 
15
 * @subpackage Auto-complétions
-
 
16
 * @version    0.1
-
 
17
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
-
 
18
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
-
 
19
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
-
 
20
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
-
 
21
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
-
 
22
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
24
 **/
23
 */
25
class LocationSearch extends Cel {
-
 
Line 26... Line 24...
26
 
24
 
Line -... Line 25...
-
 
25
class LocationSearch extends Cel {
27
	function getElement($uid){
26
 
28
 
27
	public function getElement($uid){
29
		$retour = array();
28
		$retour = array();
30
	
29
 
31
		if (isset($uid[0])) {
30
		if (isset($uid[0])) {
32
			$retour = $this->executerRequeteLieu($uid[0]);
31
			$retour = $this->executerRequeteLieu($uid[0]);
33
		}
32
		}
34
	
33
 
35
		$this->envoyerJson($retour);			
34
		$this->envoyerJson($retour);
Line 36... Line 35...
36
		return true;	
35
		return true;
37
	}
36
	}
38
 
37
 
39
	function getRessource(){
38
	public function getRessource() {
40
			print "[]";
39
		print '[]';
41
            return;
40
		return;
42
	}
-
 
43
	
41
	}
44
	private function executerRequeteLieu($lieu) {
42
 
45
		
43
	private function executerRequeteLieu($lieu) {
46
		$lieu_formate = $this->formaterChaineLieuPourRequete($lieu);
44
		$lieu_formate = $this->formaterChaineLieuPourRequete($lieu);
47
		$retour = array();
45
		$retour = array();
48
						
46
 
49
        if ($this->estUneChaineRequeteValide($lieu_formate)) {
-
 
50
		    $requete_information_lieu = 'SELECT DISTINCT nom, code '.
47
		if ($this->estUneChaineRequeteValide($lieu_formate)) {
51
					'FROM cel_zones_geo '.
48
			$requete = 'SELECT DISTINCT nom, code '.
-
 
49
				'FROM cel_zones_geo '.
-
 
50
				'WHERE nom LIKE '.Cel::db()->proteger($lieu_formate.'%').' '.
52
					'WHERE '.
51
				'ORDER BY nom '.
53
		    			'nom LIKE '.Cel::db()->proteger($lieu_formate.'%').' '.
52
				'LIMIT 50 '.
54
		    		'ORDER BY nom LIMIT 50';
-
 
55
 
53
				' -- '.__FILE__.':'.__LINE__;
56
    		$liste_lieux = Cel::db()->requeter($requete_information_lieu);
54
 
57
    		
55
			$liste_lieux = Cel::db()->requeter($requete);
58
    		if($liste_lieux) {
56
			if ($liste_lieux) {
59
    			foreach($liste_lieux as $lieu_trouve) {
57
				foreach ($liste_lieux as $lieu_trouve) {
60
    				$retour[] = $this->formaterLigneResultat($lieu_trouve);
-
 
61
    			}
58
					$retour[] = $this->formaterLigneResultat($lieu_trouve);
62
    		}
59
				}
63
        }
60
			}
Line 64... Line 61...
64
        
61
		}
65
        return $retour;
62
		return $retour;
66
	} 
63
	}
67
 
64
 
Line 76... Line 73...
76
		$lieu = ltrim($lieu);
73
		$lieu = ltrim($lieu);
77
		$lieu = preg_replace('/\*+/', '%', $lieu);
74
		$lieu = preg_replace('/\*+/', '%', $lieu);
78
		$lieu = str_replace(['+', ' ', '-'], '_', $lieu);
75
		$lieu = str_replace(['+', ' ', '-'], '_', $lieu);
79
		return $lieu;
76
		return $lieu;
80
	}
77
	}
81
	
78
 
82
	private function estUneChaineRequeteValide($lieu) {
79
	private function estUneChaineRequeteValide($lieu) {
83
		return (strlen($lieu) > 0) && ($lieu != '%');
80
		return (strlen($lieu) > 0) && ($lieu != '%');
84
	}
81
	}
85
	
82
 
86
	private function formaterLigneResultat($ligne) {
83
	private function formaterLigneResultat($ligne) {
87
		return array($ligne['nom']." (".substr(sprintf("%02s",$ligne['code']),0,2).")",$ligne['code']);
84
		return array($ligne['nom'].' ('.substr(sprintf('%02s', $ligne['code']),0,2).')', $ligne['code']);
88
	}
85
	}
89
}
-
 
90
/* +--Fin du code ---------------------------------------------------------------------------------------+
-
 
91
* $Log$
-
 
92
* Revision 1.4  2008-01-30 08:57:28  ddelon
-
 
93
* fin mise en place mygwt
-
 
94
*
-
 
95
* Revision 1.3  2007-05-21 18:13:03  ddelon
-
 
96
* Correction bug recherche commune du type "la canourgue"
-
 
97
*
-
 
98
*
-
 
99
*/
-
 
100
?>
-
 
101
86
}
-
 
87
102
88