Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 423 Rev 770
Line 1... Line 1...
1
<?php
1
<?php
2
 
-
 
3
/**
2
/**
4
 
-
 
5
 David Delon david.delon@clapas.net 2007
-
 
6
 
-
 
7
 Ce logiciel est r�gi par la licence CeCILL soumise au droit fran�ais et
-
 
8
 respectant les principes de diffusion des logiciels libres. Vous pouvez
-
 
9
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
-
 
10
 de la licence CeCILL telle que diffus�e par le CEA, le CNRS et l'INRIA
-
 
11
 sur le site "http://www.cecill.info".
-
 
12
 En contrepartie de l'accessibilit� au code source et des droits de copie,
-
 
13
 de modification et de redistribution accord�s par cette licence, il n'est
-
 
14
 offert aux utilisateurs qu'une garantie limit�e.  Pour les m�mes raisons,
-
 
15
 seule une responsabilit� restreinte p�se sur l'auteur du programme,  le
-
 
16
 titulaire des droits patrimoniaux et les conc�dants successifs.
-
 
17
 
-
 
18
 A cet �gard  l'attention de l'utilisateur est attir�e sur les risques
-
 
19
 associ�s au chargement,  � l'utilisation,  � la modification et/ou au
-
 
20
 d�veloppement et � la reproduction du logiciel par l'utilisateur �tant
3
 * Classe gérant l'acceptation de la licence utilisateur  
21
 donn� sa sp�cificit� de logiciel libre, qui peut le rendre complexe �
-
 
22
 manipuler et qui le r�serve donc � des d�veloppeurs et des professionnels
-
 
23
 avertis poss�dant  des  connaissances  informatiques approfondies.  Les
-
 
24
 utilisateurs sont donc invit�s � charger  et  tester  l'ad�quation  du
-
 
25
 logiciel � leurs besoins dans des conditions permettant d'assurer la
-
 
26
 s�curit� de leurs syst�mes et ou de leurs donn�es et, plus g�n�ralement,
-
 
27
 � l'utiliser et l'exploiter dans les m�mes conditions de s�curit�.
-
 
28
 
-
 
29
 Le fait que vous puissiez acc�der � cet en-t�te signifie que vous avez
-
 
30
 pris connaissance de la licence CeCILL, et que vous en avez accept� les
-
 
31
 termes.
-
 
32
 
-
 
33
 */
-
 
34
 
-
 
35
 
-
 
36
// in : utf8
4
 * Encodage en entrée : utf8
37
// out : utf8
5
 * Encodage en sortie : utf8
38
 
-
 
39
/*
-
 
40
 *
-
 
41
 *
6
 *
-
 
7
 * @author David Delon <david.delon@clapas.net>
-
 
8
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
-
 
9
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
-
 
10
 * @version $Id$
-
 
11
 * @copyright © 2010, David Delon
-
 
12
 */
Line 42... Line 13...
42
 
13
 
43
 /*
-
 
44
 * LocationSearch.php
-
 
45
 *
14
/**
46
 * Cas d'utilisation :
15
 * Cas d'utilisation :
47
 * Service completion nom de commune
16
 * Service completion nom de commune
48
 *
17
 *
49
 * 1 : L'application recoit un debut de nom de commune
18
 * 1 : L'application recoit un debut de nom de commune
-
 
19
 * 2 : Si la longueur du prefixe est > 2, l'application retourne les 50 premieres communes 
50
 * 2 : Si la longueur du prefix est >2, l'application retourne les 50 premieres communes commencant par ce prefix
20
 * commencant par ce prefixe
51
 */
-
 
52
 
-
 
53
 
21
 **/
54
Class LocationSearch extends DBAccessor {
-
 
55
 
-
 
56
 
-
 
57
	var $config;
-
 
58
 
-
 
59
	function LocationSearch($config) {
-
 
60
 
-
 
61
		$this->config=$config;
-
 
62
	}
-
 
Line 63... Line 22...
63
 
22
class LocationSearch extends Cel {
Line 64... Line 23...
64
 
23
 
65
	function getElement($uid){
24
	function getElement($uid){
66
 
25
 
67
			$value=array();
-
 
68
 
-
 
69
			if (isset($uid[0])) {
-
 
70
 
-
 
71
				foreach ($uid as $element) {
-
 
72
					$lieu=$lieu." ".$element;
-
 
73
				}
-
 
74
				$lieu=ltrim($lieu);
-
 
75
 
-
 
76
 
26
		$retour = array();
77
				$lieu=ereg_replace('\*+','%',$lieu);
-
 
78
	            if ((strlen($lieu) > 0) && ($lieu != '%')) {
-
 
79
					$DB=$this->connectDB($this->config,'database_cel');
-
 
80
				    $query="SELECT DISTINCT name, code  FROM locations WHERE " .
-
 
81
				    "maj_name LIKE '".$DB->escapeSimple($lieu)."%' OR name LIKE '".$DB->escapeSimple($lieu)."%' ORDER BY name LIMIT 50";
-
 
82
	            }
-
 
83
	            else {
-
 
84
					print "[]";
-
 
85
            		return ;
-
 
86
				}
-
 
87
			}
-
 
88
			else {
27
	
89
				print "[]";
-
 
90
            	return ;
28
		if (isset($uid[0])) {
91
			}
29
			$retour = $this->executerRequeteLieu($uid[0]);
92
 
-
 
93
 
-
 
94
		    $res =& $DB->query($query);
-
 
95
 
-
 
96
 
-
 
97
	        if (DB::isError($res)) {
-
 
98
    	        die($res->getMessage());
-
 
99
        	}
-
 
100
 
-
 
101
	        while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
30
		}
102
	        	$value[]=array($row['name']." (".sprintf("%02s",$row['code']).")",$row['code']);
-
 
103
    	    }
31
	
104
 
-
 
105
			$output = json_encode($value);
-
 
106
			print($output);
-
 
107
 
32
		$output = json_encode($retour);
Line 108... Line 33...
108
 
33
		
109
 
-
 
110
	}
34
		print($output);
111
 
35
	}
112
	function getRessource(){
36
 
-
 
37
	function getRessource(){
-
 
38
			print "[]";
-
 
39
            return;
-
 
40
	}
-
 
41
	
-
 
42
	private function executerRequeteLieu($lieu) {
-
 
43
		
-
 
44
		$lieu = $this->formaterChaineLieuPourRequete($lieu);
-
 
45
		$retour = array();
-
 
46
				
-
 
47
        if ($this->estUneChaineRequeteValide($lieu)) {
-
 
48
		    $requete_information_lieu = 'SELECT DISTINCT name, code '.
-
 
49
					'FROM locations '.
-
 
50
					'WHERE '.
-
 
51
		    			'maj_name LIKE '.$this->proteger($lieu.'%').' '.
-
 
52
		    			'OR name LIKE '.$this->proteger($lieu.'%').' '.
-
 
53
		    		'ORDER BY name LIMIT 50';
-
 
54
		    		
-
 
55
    		$liste_lieux = $this->executerRequete($requete_information_lieu);
-
 
56
    		
-
 
57
    		if($liste_lieux) {
-
 
58
    			foreach($liste_lieux as $lieu) {
-
 
59
    				$retour[] = $this->formaterLigneResultat($lieu);
-
 
60
    			}
-
 
61
    		}
-
 
62
        }
-
 
63
        
-
 
64
        return $retour;
-
 
65
	} 
-
 
66
	
-
 
67
	private function formaterChaineLieuPourRequete($params) {
-
 
68
		
-
 
69
		$lieu = '';
-
 
70
		
-
 
71
		foreach ($params as $element) {
-
 
72
			$lieu=$lieu." ".$element;
-
 
73
		}
-
 
74
		
-
 
75
		$lieu=ltrim($lieu);
113
 
76
		$lieu=ereg_replace('\*+','%',$lieu);
-
 
77
		
-
 
78
		return $lieu;
-
 
79
	}
114
			print "[]";
80
	
-
 
81
	private function estUneChaineRequeteValide($lieu) {
-
 
82
		return (strlen($lieu) > 0) && ($lieu != '%');
-
 
83
	}
115
            return;
84
	
Line 116... Line 85...
116
	}
85
	private function formaterLigneResultat($ligne) {
117
 
86
		return array($ligne['name']." (".sprintf("%02s",$ligne['code']).")",$ligne['code']);
118
 
87
	}