Subversion Repositories eFlore/Applications.cel

Rev

Rev 416 | Rev 620 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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