Subversion Repositories eFlore/Applications.cel

Rev

Rev 416 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
2
/**
3
 
4
David Delon 2008
5
 
6
 Cecill / GPL V3
7
 
8
 */
9
 
10
 
11
// in : utf8
12
// out : utf8
13
/*
14
 * InventoryObservationCount.php
15
 *
16
 * Cas d'utilisation :
17
 * Service recherche du nombre a partir de divers crit�res
18
 *
19
 * 2: Le service recherche le nombre d'images correspondant au crit�res demand�
20
 * 3: Le service renvoie le nombre calcule
21
 */
22
 
23
 Class InventoryObservationCount extends DBAccessor {
24
 
25
	var $config;
26
 
27
	function InventoryObservationCount($config) {
28
 
29
		$this->config=$config;
30
	}
31
 
32
 
33
	// renvoie le nombre d' observation  correspondant aux criteres
34
 
35
	function getElement($uid)
36
	{
37
			// uid[0] : utilisateur obligatoire
38
			// uid[1] : criteres de filtrage de la forme critere1:valeur1;critere2:valeur2
39
 
40
		// Controle detournement utilisateur
41
		$this->controleUtilisateur($uid[0]);
42
 
43
		$DB=$this->connectDB($this->config,'database_cel');
44
 
45
 
46
		$criteres = array() ;
47
 
48
		if(isset($uid[1]))
49
		{
50
			$criteres = explode("&", $uid[1]) ;
51
		}
52
 
53
 		$query="SELECT count(*) as count FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."' AND "  ;
54
 
55
		foreach($criteres as $pair)
56
		{
57
			$nom_valeur = explode("=",$pair) ;
58
			if(sizeof($nom_valeur) != 0)
59
			{
60
				if($nom_valeur[0] == 'annee') {
61
					$query .= "year(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ;
62
					$query .= ' AND ' ;
63
				}
64
				elseif($nom_valeur[0] == 'mois') {
65
					$query .= "month(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ;
66
					$query .= ' AND ' ;
67
				}
68
				elseif($nom_valeur[0] == 'jour') {
69
					$query .= "day(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ;
70
					$query .= ' AND ' ;
71
				}
72
                elseif($nom_valeur[0] == 'mots_cles') {
73
                    $liste_mc = explode(";",$nom_valeur[1]);
74
                    $query .= '(' ;
75
                    foreach($liste_mc as $mot) {
76
 
77
                        if(trim($mot) != '')
78
                        {
79
                          $query .= "mots_cles LIKE '%".$DB->escapeSimple($mot)."%' OR " ;
80
                        }
81
                    }
82
                    $query = rtrim($query,' OR ');
83
                    $query .= ') AND ' ;
84
                }
85
                elseif ($nom_valeur[0] == 'nom_taxon') {
86
                    	$nom_valeur[1] = str_replace("*","%",$nom_valeur[1]);
87
                    	$query .= "(nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]).
88
									"%' OR identifiant LIKE '%".$DB->escapeSimple($nom_valeur[1]).
89
									"%' OR ordre LIKE '%".$DB->escapeSimple($nom_valeur[1]).
90
									"%' OR nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]).
91
									"%' OR num_nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]).
92
									"%' OR nom_ret LIKE '%".$DB->escapeSimple($nom_valeur[1]).
93
									"%' OR num_nom_ret LIKE '%".$DB->escapeSimple($nom_valeur[1]).
94
									"%' OR num_taxon LIKE '%".$DB->escapeSimple($nom_valeur[1]).
95
									"%' OR location LIKE '%".$DB->escapeSimple($nom_valeur[1]).
96
									"%' OR id_location LIKE '%".$DB->escapeSimple($nom_valeur[1]).
97
									"%' OR date_observation LIKE '%".$DB->escapeSimple($nom_valeur[1]).
98
									"%' OR lieudit LIKE '%".$DB->escapeSimple($nom_valeur[1]).
99
									"%' OR station LIKE '%".$DB->escapeSimple($nom_valeur[1]).
100
									"%' OR milieu LIKE '%".$DB->escapeSimple($nom_valeur[1]).
101
									"%' OR commentaire LIKE '%".$DB->escapeSimple($nom_valeur[1]).
102
									"%' OR transmission LIKE '%".$DB->escapeSimple($nom_valeur[1]).
103
									"%' OR coord_x LIKE '%".$DB->escapeSimple($nom_valeur[1]).
104
									"%' OR coord_y LIKE '%".$DB->escapeSimple($nom_valeur[1]).
105
									"%')";
106
 
107
									//"%' OR famille LIKE '%".$DB->escapeSimple($nom_valeur[1]).
108
                    }
109
				else {
110
					if(trim($nom_valeur[0]) != '')
111
					{
112
						$query .= $nom_valeur[0]." = '".$DB->escapeSimple($nom_valeur[1])."'" ;
113
						$query .= ' AND ' ;
114
					}
115
				}
116
			}
117
		}
118
 
119
		$query = rtrim($query,' AND ') ;
120
 
121
		$res =& $DB->query($query);
122
                if (PEAR::isError($res)) {
123
					$erreur = 'ERROR : probleme de liste des observations' ;
124
					$this->logger('CEL_bugs',$erreur.' '.$query);
125
                }
126
 
127
		$results = array() ;
128
 
129
		while($observation = $res->fetchrow(DB_FETCHMODE_ORDERED))
130
		{
131
			$result[] = $observation[0] ;
132
		}
133
 
134
		$res = json_encode($result) ;
135
 
136
		print($res);
137
		exit() ;
138
	}
139
}
140
?>