Subversion Repositories eFlore/Applications.cel

Rev

Rev 607 | 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
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
8
 
9
 Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et
10
 respectant les principes de diffusion des logiciels libres. Vous pouvez
11
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
12
 de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA
13
 sur le site "http://www.cecill.info".
14
 En contrepartie de l'accessibilit? au code source et des droits de copie,
15
 de modification et de redistribution accord?s par cette licence, il n'est
16
 offert aux utilisateurs qu'une garantie limit?e.  Pour les m?mes raisons,
17
 seule une responsabilit? restreinte p?se sur l'auteur du programme,  le
18
 titulaire des droits patrimoniaux et les conc?dants successifs.
19
 
20
 A cet ?gard  l'attention de l'utilisateur est attir?e sur les risques
21
 associ?s au chargement,  ? l'utilisation,  ? la modification et/ou au
22
 d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
23
 donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
24
 manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
25
 avertis poss?dant  des  connaissances  informatiques approfondies.  Les
26
 utilisateurs sont donc invit?s ? charger  et  tester  l'ad?quation  du
27
 logiciel ? leurs besoins dans des conditions permettant d'assurer la
28
 s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,
29
 ? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.
30
 
31
 Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez
32
 pris connaissance de la licence CeCILL, et que vous en avez accept? les
33
 termes.
34
 
35
 */
36
 
37
 
38
// in : utf8
39
// out : utf8
40
/*
41
 * InventoryImage.php
42
 *
43
 * Cas d'utilisation :
44
 * Service recherche  et ajout d'image a partir de divers crit�res
45
 *
46
 * 1: Le service recoit une image � ajouter � la base de donn�e
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 InventoryImage extends DBAccessor {
52
 
53
	var $config;
54
 
55
	function InventoryImage($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] : identifiant image obligatoire
66
 
67
		// Controle detournement utilisateur
68
	   session_start();
69
	   $this->controleUtilisateur($uid[0]);
70
 
71
		$DB=$this->connectDB($this->config,'cel_db');
72
 
73
		if (isset($uid[0]))
74
		{
75
			$query="SELECT * FROM cel_images WHERE ci_id_image ='".$DB->escapeSimple($uid[1])."'";
76
		}
77
 
78
		$res =& $DB->query($query);
79
                if (PEAR::isError($res)) {
80
 
81
                	die($res->getMessage());
82
                }
83
 
84
		$image = $res->fetchrow(DB_FETCHMODE_ASSOC) ;
85
 
86
		$res = json_encode($image) ;
87
 
88
		header("content-type: text/json") ;
89
		print $res ;
90
		exit() ;
91
	}
92
 
93
	// met � jour les m�tadonn�es d'une image
94
	function updateElement($uid,$pairs)
95
	{
96
		// Controle detournement utilisateur
97
		$this->controleUtilisateur($uid[0]);
98
 
99
		/*$fp = fopen('dump.txt','w+') ;
100
		fwrite($fp,print_r($pairs,true)) ;
101
		fclose($fp) ;*/
102
 
103
		$DB=$this->connectDB($this->config,'cel_db');
104
 
105
		$query = 'UPDATE cel_images SET ' ;
106
 
107
		foreach($pairs as $champ  => $valeur)
108
		{
109
			if($champ == 'ci_meta_date') {
110
 
111
				$date_tab = split('/',$valeur) ;
112
				$date = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0] ;
113
 
114
				$query .= $champ.' = "'.$date.'" , ' ;
115
 
116
			}
117
			else {
118
				$query .= $champ.' = "'.$DB->escapeSimple($valeur).'" , ' ;
119
			}
120
		}
121
 
122
		$query = rtrim($query," , ") ;
123
 
124
		$query .= ' WHERE ci_id_image = "'.$DB->escapeSimple($pairs['ci_id_image']).'"' ;
125
 
126
		$res =& $DB->query($query);
127
 
128
        if (PEAR::isError($res))
129
		{
130
			return false ;
131
        }
132
		else
133
		{
134
			echo "OK" ;
135
			exit() ;
136
		}
137
	}
138
 
139
 
140
	// ajoute une image ainsi que ses metadonn�es � la base du carnet
141
	function createElement($pairs)
142
	{
143
		// Controle detournement utilisateur
144
		session_start();
145
		$this->controleUtilisateur($pairs['identifiant']);
146
 
147
		foreach($_FILES as $file) {
148
 
149
			$infos_fichier = $file ;
150
		}
151
 
152
		$DB=$this->connectDB($this->config,'cel_db');
153
 
154
		$nouvel_ordre = 0 ;
155
		$query_ordre ='SELECT MAX(ci_ordre) FROM cel_images WHERE ci_ce_utilisateur = "'.$DB->escapeSimple($pairs['identifiant']).'"' ;
156
		$res =& $DB->query($query_ordre);
157
                if (PEAR::isError($res))
158
		{
159
			$erreur = 'ERROR : probleme durant le calcul de l\'ordre de l\'image \n' ;
160
                	die($res->getMessage());
161
                }
162
		else
163
		{
164
			$row = $res->fetchrow() ;
165
			$nouvel_ordre = $row[0] + 1;
166
		}
167
 
168
 
169
		if($nouvel_ordre)
170
		{
171
			$fichier_meta = extraire_metadonnees($infos_fichier['tmp_name']) ;
172
		}
173
		else
174
		{
175
			$erreur = 'ERROR : probleme durant l\'upload de l\'image \n' ;
176
		}
177
 
178
		$fichier_meta['ci_ordre'] = $nouvel_ordre ;
179
		$fichier_meta['ci_publiable_eflore'] = 'false' ;
180
		$fichier_meta['ci_nom_original'] = $infos_fichier['name'] ;
181
		$fichier_meta['ci_md5'] = md5_file($infos_fichier['tmp_name']) ;
182
		$fichier_meta['ci_ce_utilisateur'] = $pairs['identifiant'] ;
183
 
184
 
185
		$query_champs = '' ;
186
		$query_valeurs = '' ;
187
 
188
		foreach($fichier_meta as $field => $value)
189
		{
190
			$query_champs .= $field.',' ;
191
 
192
			if(is_null($value))
193
			{
194
				$query_valeurs .= 'NULL,' ;
195
			}
196
			else
197
			{
198
				$query_valeurs .= '"'.$DB->escapeSimple($value).'",' ;
199
			}
200
		}
201
 
202
        $query_champs .= 'ci_meta_date_ajout' ;
203
        $query_valeurs .= 'CURRENT_TIMESTAMP()' ;
204
 
205
		//$query_champs = rtrim($query_champs,',') ;
206
		//$query_valeurs = rtrim($query_valeurs,',') ;
207
 
208
		$query ="INSERT INTO cel_images (".$query_champs.") VALUES (".$query_valeurs.")" ;
209
 
210
		$res =& $DB->query($query);
211
                if (PEAR::isError($res)) {
212
 
213
                	//die($res->getMessage());
214
			$erreur = "ERROR : echec de l'insertion dans la base de donnees : ".$query ;
215
                }
216
 
217
		$query_id ='SELECT ci_id_image FROM cel_images WHERE ci_ce_utilisateur = "'.$DB->escapeSimple($pairs['identifiant']).'" AND ci_ordre = "'.$nouvel_ordre.'"' ;
218
		$res =& $DB->query($query_id);
219
 
220
                if (PEAR::isError($res))
221
		{
222
			$erreur = 'ERROR : probleme durant le calcul de l\'id de l\'image \n' ;
223
                	//die($res->getMessage());
224
        }
225
		else
226
		{
227
			$row = $res->fetchrow() ;
228
			$id = $row[0] ;
229
		}
230
 
231
		if(isset($id))
232
		{
233
			$fichier = array('name' => $infos_fichier['name'] , 'type' => $infos_fichier['type'] , 'size' => $infos_fichier['size'] , 'tmp_name' => $infos_fichier['tmp_name'] ) ;
234
			$fichier_stocke = stocker_fichier($fichier,$id,$this->config['cel_db']['chemin_images'],$this->config['cel_db']['taille_max']) ;
235
			// l'upload demande de court-circuiter le fonctionnement normal de JREST
236
			header('HTTP/1.0 200 Created');
237
			echo "OK" ;
238
			exit() ;
239
		}
240
		else
241
		{
242
			$erreur =  'ERROR : probleme durant l\'ajout des metadonnees \n' ;
243
			exit ;
244
		}
245
 
246
	}
247
 
248
	// supprime une image et ses metadonn�es associ�es de la base du carnet
249
	function deleteElement($uid){
250
 
251
	// uid[0] : utilisateur obligatoire
252
	// uid[1] : identifiant(s) image(s) obligatoire(s)
253
 
254
	 // Controle detournement utilisateur
255
	    session_start();
256
		$this->controleUtilisateur($uid[0]);
257
 
258
		$DB=$this->connectDB($this->config,'cel_db');
259
 
260
		$id = $uid[1] ;
261
 
262
		if (isset($uid[1])) {
263
	           	$query="DELETE FROM cel_images WHERE ci_id_image in (".$DB->escapeSimple($uid[1]) .")";
264
				$query_sup_lien = "DELETE FROM cel_obs_images WHERE coi_ce_image in (".$DB->escapeSimple($id) .")";
265
		}
266
 
267
		$res =& $DB->query($query);
268
 
269
		if (PEAR::isError($res)) {
270
			die($res->getMessage());
271
		}
272
		else
273
		{
274
			$res =& $DB->query($query_sup_lien);
275
			if(PEAR::isError($res))
276
			{
277
				die($res->getMessage());
278
			}
279
 
280
            supprimer_fichier($id,$this->config['cel_db']['chemin_images']);
281
 
282
			echo "OK" ;
283
			exit() ;
284
		}
285
	}
286
 
287
}
288
?>