Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 416 Rev 859
Line 1... Line 1...
1
<?php
1
<?php
-
 
2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
2
/**
3
/**
Line 3... Line 4...
3
 
4
 
Line 4... Line 5...
4
David Delon 2008
5
David Delon 2008
Line 5... Line 6...
5
 
6
 
Line 6... Line -...
6
 Cecill / GPL V3
-
 
7
 
7
 Cecill / GPL V3
8
 */
8
 
9
 
9
 */
10
 
10
 
11
// in : utf8
11
// in : utf8
12
// out : utf8
12
// out : utf8
13
/*
13
/*
14
 * InventoryObservationCount.php
14
 * InventoryObservationCount.php
15
 *
15
 *
16
 * Cas d'utilisation :
16
 * Cas d'utilisation :
17
 * Service recherche du nombre a partir de divers crit�res
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�
18
 *
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;
-
 
Line -... Line 19...
-
 
19
 * 2: Le service recherche le nombre d'images correspondant au critères demandé
-
 
20
 * 3: Le service renvoie le nombre calcule
-
 
21
*/
-
 
22
class InventoryObservationCount extends Cel {
-
 
23
 
-
 
24
	/**
30
	}
25
	 *  renvoie le nombre d' observations  correspondant aux criteres
31
 
26
	 *	uid[0] : utilisateur obligatoire
32
 
-
 
33
	// renvoie le nombre d' observation  correspondant aux criteres
-
 
34
 
-
 
35
	function getElement($uid)
27
	 *	uid[1] : criteres de filtrage de la forme critere1=valeur1&critere2=valeur2
36
	{
28
	 *  
Line 37... Line 29...
37
			// uid[0] : utilisateur obligatoire
29
	*/
38
			// uid[1] : criteres de filtrage de la forme critere1:valeur1;critere2:valeur2
-
 
Line 39... Line 30...
39
 
30
	function getElement($uid)
Line 40... Line 31...
40
		// Controle detournement utilisateur
31
	{
41
		$this->controleUtilisateur($uid[0]);
32
		// Controle detournement utilisateur
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 "  ;
33
		$this->controleUtilisateur($uid[0]);
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);
34
 
Line 125... Line 35...
125
                }
35
		$chercheur_observations = new RechercheObservation($this->config);
Line -... Line 36...
-
 
36
 
-
 
37
		$criteres = array();
126
 
38
 
127
		$results = array() ;
39
		if(isset($uid[1]))
128
 
40
		{
129
		while($observation = $res->fetchrow(DB_FETCHMODE_ORDERED))
41
			$criteres = $chercheur_observations->parserRequeteCriteres($uid[1]) ;
130
		{
42
		}
131
			$result[] = $observation[0] ;
43