Subversion Repositories eFlore/Applications.cel

Rev

Rev 605 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
2
 
3
require_once('include/extract_metadonnee.php') ;
4
require_once('include/stockage_fichier.php') ;
5
 
6
/**
7
 
8
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
9
 
10
 Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et
11
 respectant les principes de diffusion des logiciels libres. Vous pouvez
12
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
13
 de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA
14
 sur le site "http://www.cecill.info".
15
 En contrepartie de l'accessibilit? au code source et des droits de copie,
16
 de modification et de redistribution accord?s par cette licence, il n'est
17
 offert aux utilisateurs qu'une garantie limit?e.  Pour les m?mes raisons,
18
 seule une responsabilit? restreinte p?se sur l'auteur du programme,  le
19
 titulaire des droits patrimoniaux et les conc?dants successifs.
20
 
21
 A cet ?gard  l'attention de l'utilisateur est attir?e sur les risques
22
 associ?s au chargement,  ? l'utilisation,  ? la modification et/ou au
23
 d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
24
 donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
25
 manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
26
 avertis poss?dant  des  connaissances  informatiques approfondies.  Les
27
 utilisateurs sont donc invit?s ? charger  et  tester  l'ad?quation  du
28
 logiciel ? leurs besoins dans des conditions permettant d'assurer la
29
 s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,
30
 ? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.
31
 
32
 Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez
33
 pris connaissance de la licence CeCILL, et que vous en avez accept? les
34
 termes.
35
 
36
 */
37
 
38
 
39
// in : utf8
40
// out : utf8
41
/*
42
 * InventoryImageList.php
43
 *
44
 * Cas d'utilisation :
45
 * Service recherche d'images a partir de divers crit�res
46
 *
47
 * 2: Le service recherche l'image correspondant au crit�res demand�
48
 * 3: Le service renvoie l'adresse de base de l'image qui permet de la localiser sous ses diff�rents formats (X, M ou L)
49
 */
50
 
51
 Class InventoryImageList extends DBAccessor {
52
 
53
	var $config;
54
 
55
	function InventoryImageList($config) {
56
 
57
		$this->config=$config;
58
	}
59
 
60
 
61
	// renvoie l'enregistrement correspond � une image
62
	function getElement($uid)
63
	{
64
			// uid[0] : utilisateur obligatoire
65
			// uid[1] : crit�res de filtrage de la forme crit�re1:valeur1;crit�re2:valeur2
66
 
67
		// Controle detournement utilisateur
68
	    session_start();
69
		$this->controleUtilisateur($uid[0]);
70
 
71
		$DB=$this->connectDB($this->config,'cel_db');
72
 
73
		$criteres = array() ;
74
 
75
		if(isset($uid[1]))
76
		{
77
			$criteres = explode("&", $uid[1]) ;
78
		}
79
 
80
		$query='SELECT * FROM cel_images WHERE ci_ce_utilisateur = "'.$uid[0].'" AND ' ;
81
 
82
		$numero_page = 0 ;
83
		$limite = 50 ;
84
 
85
		foreach($criteres as $pair)
86
		{
87
			$nom_valeur = explode("=",$pair) ;
88
 
89
			if(sizeof($nom_valeur) != 0)
90
			{
91
					if($nom_valeur[0] == "ci_limite")
92
					{
93
						$limite = $DB->escapeSimple($nom_valeur[1]) ;
94
					}
95
					elseif($nom_valeur[0] == "ci_numero_page")
96
					{
97
						$numero_page = $DB->escapeSimple($nom_valeur[1]) ;
98
					}
99
					elseif($nom_valeur[0] == "ci_meta_mots_cles")
100
					{
101
						$mots_cles = rtrim($nom_valeur[1], ',') ;
102
						$mots_cles_liste = explode("," , $mots_cles) ;
103
 
104
						foreach($mots_cles_liste as $mot_cle)
105
						{
106
							$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_cle).'%"' ;
107
							$query .= ' AND ' ;
108
						}
109
					}
110
					elseif($nom_valeur[0] == "ci_meta_comment")
111
					{
112
						$mots_comment_liste = explode(" " , $nom_valeur[1]) ;
113
 
114
						foreach($mots_comment_liste as $mot_comment)
115
						{
116
							$mot_comment = trim($mot_comment) ;
117
							$query .= $nom_valeur[0].' LIKE "%'.$DB->escapeSimple($mot_comment).'%"' ;
118
							$query .= ' AND ' ;
119
						}
120
					}
121
					elseif($nom_valeur[0] == "ci_meta_date")
122
					{
123
						$query .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$DB->escapeSimple($nom_valeur[1]).'"' ;
124
						$query .= ' AND ' ;
125
					}
126
					elseif($nom_valeur[0] == "ci_id_tampon")
127
					{
128
						$ids_tampon = rtrim($nom_valeur[1], ',') ;
129
						$query .= 'ci_id_image IN ( '.$DB->escapeSimple($ids_tampon).')' ;
130
					}
131
					else
132
					{
133
						$query .= $nom_valeur[0].' = "'.$DB->escapeSimple($nom_valeur[1]) ;
134
						$query .= '" AND ' ;
135
					}
136
			}
137
		}
138
 
139
		$debut = $limite*$numero_page ;
140
 
141
		$query = rtrim($query,' AND ') ;
142
		$query .= ' ORDER BY ci_ordre LIMIT '.$debut.','.$limite ;
143
 
144
		$res =& $DB->query($query);
145
                if (PEAR::isError($res)) {
146
 
147
                	die($res->getMessage());
148
                }
149
 
150
		$result = array() ;
151
 
152
		while($image = $res->fetchrow(DB_FETCHMODE_ASSOC))
153
		{
154
			$date = split("-",$image['ci_meta_date']) ;
155
			if(count($date) > 2)
156
			{
157
				$image['ci_meta_date'] = $date[2].'/'.$date[1].'/'.$date[0] ;
158
			}
159
 
160
			$image['ci_ce_observation'] = '';
161
 
162
			$requete_table_liaison = 'SELECT coi_ce_observation FROM cel_obs_images WHERE coi_ce_image = '.$image['ci_id_image'].' AND coi_ce_utilisateur ="'.$uid[0].'"';
163
 
164
			$res_table_liaison =& $DB->query($requete_table_liaison);
165
            if (PEAR::isError($res_table_liaison)) {
166
 
167
            	die($res_table_liaison->getMessage());
168
            }
169
 
170
			$ids_obs = '';
171
			while($liaison = $res_table_liaison->fetchrow(DB_FETCHMODE_ASSOC))
172
			{
173
				$ids_obs .= $liaison['coi_ce_observation'].",";
174
			}
175
 
176
			$ids_obs = rtrim($ids_obs,',');
177
 
178
			if(trim($ids_obs) != '') {
179
				$requete_obs_liees = 'SELECT * FROM cel_inventory WHERE ordre IN  ('.$ids_obs.') AND identifiant ="'.$uid[0].'"';
180
				$res_obs_liees =& $DB->query($requete_obs_liees);
181
	            if (PEAR::isError($res_obs_liees)) {
182
 
183
	            	die($res_obs_liees->getMessage());
184
	            }
185
 
186
				while($obs_liee = $res_obs_liees->fetchrow(DB_FETCHMODE_ASSOC))
187
				{
188
					$image['ci_ce_observation'] .= $obs_liee['ordre'].'#'.$obs_liee['nom_sel'].'#'.$obs_liee['transmission'].';;' ;
189
				}
190
			}
191
 
192
			$result[] = $image ;
193
		}
194
 
195
		$res = json_encode($result) ;
196
 
197
		header("content-type: text/json") ;
198
		print $res ;
199
		exit() ;
200
	}
201
 
202
	// met � jour les m�tadonn�es d'une image
203
	function updateElement($uid,$pairs)
204
	{
205
		// Controle detournement utilisateur
206
	    session_start();
207
	 	$this->controleUtilisateur($uid[0]);
208
 
209
		$DB=$this->connectDB($this->config,'cel_db');
210
				$query .= ' WHERE '.$ci_id_image.' = "'.$DB->escapeSimple($pairs['ci_id_image']).'"' ;
211
	}
212
 
213
	function deleteElement($uid)
214
	{
215
 
216
		// uid[0] : utilisateur obligatoire
217
	// uid[1] : identifiant(s) image(s) obligatoire(s)
218
 
219
	 // Controle detournement utilisateur
220
	    session_start();
221
		$this->controleUtilisateur($uid[0]);
222
 
223
		$DB=$this->connectDB($this->config,'cel_db');
224
 
225
		$id = rtrim($uid[1],",") ;
226
 
227
		if (isset($id)) {
228
	           	$query="DELETE FROM cel_images WHERE ci_id_image in (".$DB->escapeSimple($id) .")";
229
				$query_sup_lien = "DELETE FROM cel_obs_images WHERE coi_ce_image in (".$DB->escapeSimple($id) .")";
230
		}
231
 
232
		$res =& $DB->query($query);
233
 
234
		if (PEAR::isError($res)) {
235
			die($res->getMessage());
236
		}
237
		else
238
		{
239
			$res =& $DB->query($query_sup_lien);
240
			if(PEAR::isError($res))
241
			{
242
				die($res->getMessage());
243
			}
244
 
245
			$id_fichiers = explode(",",$id) ;
246
			foreach($id_fichiers as $en_cours)
247
			{
248
				supprimer_fichier($en_cours,$this->config['cel_db']['chemin_images']) ;
249
			}
250
 
251
			echo "OK" ;
252
			exit() ;
253
		}
254
	}
255
 
256
}
257
?>