Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 798 Rev 1078
1
<?php
1
<?php
2
/**
2
/**
3
 * Service recherche  et ajout d'image a partir de divers critères
3
 * Service recherche  et ajout d'image a partir de divers critères
4
 * Encodage en entrée : utf8
4
 * Encodage en entrée : utf8
5
 * Encodage en sortie : utf8
5
 * Encodage en sortie : utf8
6
 *
6
 *
7
 * @author Aurélien PERONNET <aurelien@tela-botanica.org>
7
 * @author Aurélien PERONNET <aurelien@tela-botanica.org>
8
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
8
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
9
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
9
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
10
 * @version $Id$
10
 * @version $Id$
11
 */
11
 */
12
class InventoryImage extends Cel {
12
class InventoryImage extends Cel {
13
	
13
	
14
	/**
14
	/**
15
	 * Méthode appelée avec une requête de type GET.
15
	 * Méthode appelée avec une requête de type GET.
16
	 * Renvoie les infos sur l'image correspondant à l'id passé en parametre
16
	 * Renvoie les infos sur l'image correspondant à l'id passé en parametre
17
	*/
17
	*/
18
	public function getElement($uid)
18
	public function getElement($uid)
19
	{	
19
	{	
20
		// uid[0] : utilisateur obligatoire
20
		// uid[0] : utilisateur obligatoire
21
		// uid[1] : identifiant image obligatoire
21
		// uid[1] : identifiant image obligatoire
22
 
22
 
23
		// Controle detournement utilisateur
23
		// Controle detournement utilisateur
24
	   	session_start();
24
		if(!isset($_SESSION)) {session_start();}
25
	   	$this->controleUtilisateur($uid[0]);
25
	   	$this->controleUtilisateur($uid[0]);
26
 
26
 
27
		$id_image_protegee = $this->proteger($uid[1]); 
27
		$id_image_protegee = $this->proteger($uid[1]); 
28
		$requete_selection_image = "SELECT * FROM cel_images WHERE ci_id_image = ".$id_image_protegee;
28
		$requete_selection_image = "SELECT * FROM cel_images WHERE ci_id_image = ".$id_image_protegee;
29
 
29
 
30
		$resultat_selection = $this->executerRequete($requete_selection_image);
30
		$resultat_selection = $this->executerRequete($requete_selection_image);
31
		
31
		
32
		$image = false;
32
		$image = false;
33
		
33
		
34
		if (count($resultat_selection) > 0) {
34
		if (count($resultat_selection) > 0) {
35
			$image = $resultat_selection[0];
35
			$image = $resultat_selection[0];
36
		}
36
		}
37
 
37
 
38
		$this->envoyer($image,'text/html','utf-8',true);
38
		$this->envoyer($image,'text/html','utf-8',true);
39
	}
39
	}
40
 
40
 
41
	/**
41
	/**
42
	 * Méthode appelée avec une requête de type POST avec un identifiant d'image.
42
	 * Méthode appelée avec une requête de type POST avec un identifiant d'image.
43
	 * Met a jour l'image correspondant à l'id passé en paramètre avec les valeurs passées dans le post
43
	 * Met a jour l'image correspondant à l'id passé en paramètre avec les valeurs passées dans le post
44
	*/
44
	*/
45
	public function updateElement($uid,$pairs)
45
	public function updateElement($uid,$pairs)
46
	{
46
	{
47
		// Controle detournement utilisateur
47
		// Controle detournement utilisateur
48
		$this->controleUtilisateur($uid[0]);
48
		$this->controleUtilisateur($uid[0]);
49
		
49
		
50
		$requete_mise_a_jour_image = 'UPDATE cel_images SET ' ;
50
		$requete_mise_a_jour_image = 'UPDATE cel_images SET ' ;
51
		
51
		
52
		$champs_a_mettre_a_jour = $this->construireRequeteMajMetaDonnees($pairs);
52
		$champs_a_mettre_a_jour = $this->construireRequeteMajMetaDonnees($pairs);
53
		$requete_mise_a_jour_image .= $champs_a_mettre_a_jour;
53
		$requete_mise_a_jour_image .= $champs_a_mettre_a_jour;
54
 
54
 
55
		$requete_mise_a_jour_image .= ' WHERE ci_id_image = '.$this->proteger($pairs['ci_id_image']) ;
55
		$requete_mise_a_jour_image .= ' WHERE ci_id_image = '.$this->proteger($pairs['ci_id_image']) ;
56
 
56
 
57
		$resultat_mise_a_jour = $this->executerRequeteSimple($requete_mise_a_jour_image);
57
		$resultat_mise_a_jour = $this->executerRequeteSimple($requete_mise_a_jour_image);
58
		
58
		
59
		$retour = false;
59
		$retour = false;
60
		
60
		
61
		if ($resultat_mise_a_jour) {
61
		if ($resultat_mise_a_jour) {
62
			$retour = 'OK';
62
			$retour = 'OK';
63
		}
63
		}
64
		
64
		
65
		$this->envoyer($retour);
65
		$this->envoyer($retour);
66
	}
66
	}
67
	
67
	
68
	/**
68
	/**
69
	 * Assemble la requete de mise à jour des champs de metadonnées
69
	 * Assemble la requete de mise à jour des champs de metadonnées
70
	 * 
70
	 * 
71
	*/
71
	*/
72
	private function construireRequeteMajMetaDonnees($valeurs_metadonnees) {
72
	private function construireRequeteMajMetaDonnees($valeurs_metadonnees) {
73
		
73
		
74
		$requete_maj_champs = '';
74
		$requete_maj_champs = '';
75
		
75
		
76
		$champs_a_ignorer = array('ci_ce_observation','ci_id_image');
76
		$champs_a_ignorer = array('ci_ce_observation','ci_id_image');
77
		
77
		
78
		foreach($valeurs_metadonnees as $champ  => $valeur)
78
		foreach($valeurs_metadonnees as $champ  => $valeur)
79
		{
79
		{
80
			
80
			
81
			if (!in_array($champ,$champs_a_ignorer)) {
81
			if (!in_array($champ,$champs_a_ignorer)) {
82
				if ($champ == 'ci_meta_date') {
82
				if ($champ == 'ci_meta_date') {
83
	
83
	
84
					$date_tab = split('/',$valeur) ;
84
					$date_tab = split('/',$valeur) ;
85
					$date = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0] ;
85
					$date = $date_tab[2].'-'.$date_tab[1].'-'.$date_tab[0] ;
86
	
86
	
87
					$requete_maj_champs .= $champ.' = "'.$date.'" , ' ;
87
					$requete_maj_champs .= $champ.' = "'.$date.'" , ' ;
88
	
88
	
89
				}
89
				}
90
				else {
90
				else {
91
					$requete_maj_champs .= $champ.' = '.$this->proteger($valeur).' , ' ;
91
					$requete_maj_champs .= $champ.' = '.$this->proteger($valeur).' , ' ;
92
				}
92
				}
93
			}
93
			}
94
		}
94
		}
95
 
95
 
96
		$requete_maj_champs = rtrim($requete_maj_champs," , ") ;
96
		$requete_maj_champs = rtrim($requete_maj_champs," , ") ;
97
		
97
		
98
		return $requete_maj_champs;
98
		return $requete_maj_champs;
99
	}
99
	}
100
 
100
 
101
 
101
 
102
	/**
102
	/**
103
	 * Méthode appelée avec une requête de type PUT.
103
	 * Méthode appelée avec une requête de type PUT.
104
	 * Stocke une image, crée ses miniatures et enregistre ses informations
104
	 * Stocke une image, crée ses miniatures et enregistre ses informations
105
	 * Renvoie l'identifiant d'image nouvellement crée en cas de succès
105
	 * Renvoie l'identifiant d'image nouvellement crée en cas de succès
106
	*/
106
	*/
107
	function createElement($pairs)
107
	function createElement($pairs)
108
	{
108
	{
109
		// Controle detournement utilisateur
109
		// Controle detournement utilisateur
110
		session_start();
110
		if(!isset($_SESSION)) {session_start();}
111
		$this->controleUtilisateur($pairs['identifiant']);
111
		$this->controleUtilisateur($pairs['identifiant']);
112
				
112
				
113
		foreach ($_FILES as $file) {
113
		foreach ($_FILES as $file) {
114
			$infos_fichier = $file ;
114
			$infos_fichier = $file ;
115
		}
115
		}
116
		
116
		
117
		if ($this->ajouterImageSurDdEtBdd($pairs, $infos_fichier)) {
117
		if ($this->ajouterImageSurDdEtBdd($pairs, $infos_fichier)) {
118
			
118
			
119
			// l'upload demande de court-circuiter le fonctionnement normal de JREST
119
			// l'upload demande de court-circuiter le fonctionnement normal de JREST
120
			// en quittant directement après l'envoi
120
			// en quittant directement après l'envoi
121
			$this->envoyerMessageCreationEffectuee();
121
			$this->envoyerMessageCreationEffectuee();
122
			exit;
122
			exit;
123
		}
123
		}
124
 
124
 
125
	}
125
	}
126
	
126
	
127
	/**
127
	/**
128
	 * Ajoute une image dans la base de données et stocke le fichier en fabriquant les miniatures,
128
	 * Ajoute une image dans la base de données et stocke le fichier en fabriquant les miniatures,
129
	 * renvoie le nouvel id d'image en cas de succès
129
	 * renvoie le nouvel id d'image en cas de succès
130
	 * 
130
	 * 
131
	 * @param array $pairs le tableau contenant l'identifiant de l'utilisateur
131
	 * @param array $pairs le tableau contenant l'identifiant de l'utilisateur
132
	 * @param array $infos_fichier les infos sur le fichier à traiter, de la même forme que les
132
	 * @param array $infos_fichier les infos sur le fichier à traiter, de la même forme que les
133
	 * élements du tableau $_FILES de php
133
	 * élements du tableau $_FILES de php
134
	*/
134
	*/
135
	public function ajouterImageSurDdEtBdd($pairs, $infos_fichier) {
135
	public function ajouterImageSurDdEtBdd($pairs, $infos_fichier) {
136
		
136
		
137
		$identifiant_utilisateur = $pairs['identifiant'];
137
		$identifiant_utilisateur = $pairs['identifiant'];
138
		$nouvel_ordre = $this->obtenirNouvelOrdrePourUtilisateur($identifiant_utilisateur);
138
		$nouvel_ordre = $this->obtenirNouvelOrdrePourUtilisateur($identifiant_utilisateur);
139
		
139
		
140
		if (!$nouvel_ordre) {
140
		if (!$nouvel_ordre) {
141
			$message = 'Erreur lors du calcul du nouvel ordre de l\'image';
141
			$message = 'Erreur lors du calcul du nouvel ordre de l\'image';
142
			trigger_error($message, E_USER_ERROR);
142
			trigger_error($message, E_USER_ERROR);
143
		}
143
		}
144
		
144
		
145
		$extracteur_metadonnees = new ExtracteurMetadonnees();
145
		$extracteur_metadonnees = new ExtracteurMetadonnees();
146
		$informations_image = $extracteur_metadonnees->extraireMetadonnees($infos_fichier['tmp_name']) ;
146
		$informations_image = $extracteur_metadonnees->extraireMetadonnees($infos_fichier['tmp_name']) ;
147
		
147
		
148
		if(!$informations_image) {
148
		if(!$informations_image) {
149
			$message = 'Erreur lors de l\'extraction des metadonnées';
149
			$message = 'Erreur lors de l\'extraction des metadonnées';
150
			trigger_error($message, E_USER_ERROR);
150
			trigger_error($message, E_USER_ERROR);
151
		}
151
		}
152
		
152
		
153
		// ajout de quelques informations supplémentaire, en sus 
153
		// ajout de quelques informations supplémentaire, en sus 
154
		// des metadonnées dejà extraites
154
		// des metadonnées dejà extraites
155
		$informations_image['ci_ordre'] = $nouvel_ordre ;
155
		$informations_image['ci_ordre'] = $nouvel_ordre ;
156
		$informations_image['ci_publiable_eflore'] = 'false' ;
156
		$informations_image['ci_publiable_eflore'] = 'false' ;
157
		$informations_image['ci_nom_original'] = $infos_fichier['name'] ;
157
		$informations_image['ci_nom_original'] = $infos_fichier['name'] ;
158
		
158
		
159
		// le md5 du fichier sert à repérer les images en doublons
159
		// le md5 du fichier sert à repérer les images en doublons
160
		$informations_image['ci_md5'] = md5_file($infos_fichier['tmp_name']) ;
160
		$informations_image['ci_md5'] = md5_file($infos_fichier['tmp_name']) ;
161
		$informations_image['ci_ce_utilisateur'] = $identifiant_utilisateur ;
161
		$informations_image['ci_ce_utilisateur'] = $identifiant_utilisateur ;
162
		
162
		
163
		$requete_insertion_infos_image = $this->construireRequeteInsertionImage($informations_image);
163
		$requete_insertion_infos_image = $this->construireRequeteInsertionImage($informations_image);
164
		$resultat_insertion_infos_image = $this->executerRequeteSimple($requete_insertion_infos_image);
164
		$resultat_insertion_infos_image = $this->executerRequeteSimple($requete_insertion_infos_image);
165
 
165
 
166
		if (!$resultat_insertion_infos_image) {
166
		if (!$resultat_insertion_infos_image) {
167
			$message = "Echec de l'insertion dans la base de donnees : " ;
167
			$message = "Echec de l'insertion dans la base de donnees : " ;
168
			trigger_error($message, E_USER_ERROR);
168
			trigger_error($message, E_USER_ERROR);
169
        }
169
        }
170
 
170
 
171
		$id_nouvelle_image = $this->obtenirIdImagePourIdentifiantEtOrdre($identifiant_utilisateur, $nouvel_ordre);
171
		$id_nouvelle_image = $this->obtenirIdImagePourIdentifiantEtOrdre($identifiant_utilisateur, $nouvel_ordre);
172
		
172
		
173
		if (!$id_nouvelle_image)
173
		if (!$id_nouvelle_image)
174
		{
174
		{
175
			$message =  'Impossible d\'obtenir le nouvel identifiant de l\'image' ;
175
			$message =  'Impossible d\'obtenir le nouvel identifiant de l\'image' ;
176
			trigger_error($message, E_USER_ERROR);
176
			trigger_error($message, E_USER_ERROR);
177
		}
177
		}
178
		
178
		
179
		$manipulateur_image = new ImageRecreation($this->config);
179
		$manipulateur_image = new ImageRecreation($this->config);
180
		$fichier_stocke = $manipulateur_image->stockerFichierEtCreerMiniatures($infos_fichier,$id_nouvelle_image);
180
		$fichier_stocke = $manipulateur_image->stockerFichierEtCreerMiniatures($infos_fichier,$id_nouvelle_image);
181
		
181
		
182
		if (!$fichier_stocke) {
182
		if (!$fichier_stocke) {
183
			$message =  'Erreur lors du stockage du fichier' ;
183
			$message =  'Erreur lors du stockage du fichier' ;
184
			trigger_error($message, E_USER_ERROR);
184
			trigger_error($message, E_USER_ERROR);
185
		}
185
		}
186
		
186
		
187
		return $id_nouvelle_image;
187
		return $id_nouvelle_image;
188
	}
188
	}
189
	
189
	
190
	private function obtenirNouvelOrdrePourUtilisateur($id_utilisateur) {
190
	private function obtenirNouvelOrdrePourUtilisateur($id_utilisateur) {
191
 
191
 
192
		$nouvel_ordre = 0 ;
192
		$nouvel_ordre = 0 ;
193
		
193
		
194
		$requete_selection_ordre_max ='SELECT MAX(ci_ordre) as max_ordre FROM cel_images WHERE ci_ce_utilisateur = '.$this->proteger($id_utilisateur) ;
194
		$requete_selection_ordre_max ='SELECT MAX(ci_ordre) as max_ordre FROM cel_images WHERE ci_ce_utilisateur = '.$this->proteger($id_utilisateur) ;
195
		$resultat_requete_ordre_max = $this->executerRequete($requete_selection_ordre_max);
195
		$resultat_requete_ordre_max = $this->executerRequete($requete_selection_ordre_max);
196
				
196
				
197
		if($resultat_requete_ordre_max) {
197
		if($resultat_requete_ordre_max) {
198
			$nouvel_ordre = $resultat_requete_ordre_max[0]['max_ordre'];
198
			$nouvel_ordre = $resultat_requete_ordre_max[0]['max_ordre'];
199
			$nouvel_ordre++;
199
			$nouvel_ordre++;
200
		}
200
		}
201
		
201
		
202
		return $nouvel_ordre;
202
		return $nouvel_ordre;
203
	}
203
	}
204
	
204
	
205
	private function obtenirIdImagePourIdentifiantEtOrdre($id_utilisateur, $ordre) {
205
	private function obtenirIdImagePourIdentifiantEtOrdre($id_utilisateur, $ordre) {
206
		
206
		
207
		$id_image = false;
207
		$id_image = false;
208
		
208
		
209
		$requete_id_image ='SELECT ci_id_image FROM cel_images WHERE ci_ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ci_ordre = '.$ordre ;
209
		$requete_id_image ='SELECT ci_id_image FROM cel_images WHERE ci_ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ci_ordre = '.$ordre ;
210
		$resultat_id_image = $this->executerRequete($requete_id_image);
210
		$resultat_id_image = $this->executerRequete($requete_id_image);
211
 
211
 
212
        if (count($resultat_id_image) > 0)
212
        if (count($resultat_id_image) > 0)
213
		{
213
		{
214
			$id_image = $resultat_id_image[0]['ci_id_image'];
214
			$id_image = $resultat_id_image[0]['ci_id_image'];
215
        }
215
        }
216
		
216
		
217
        return $id_image;
217
        return $id_image;
218
	}
218
	}
219
	
219
	
220
	private function construireRequeteInsertionImage($informations_image) {
220
	private function construireRequeteInsertionImage($informations_image) {
221
		
221
		
222
		$requete_insertion_image = "INSERT INTO cel_images ";
222
		$requete_insertion_image = "INSERT INTO cel_images ";
223
		
223
		
224
		$champs_a_inserer = '' ;
224
		$champs_a_inserer = '' ;
225
		$valeurs_a_inserer = '' ;
225
		$valeurs_a_inserer = '' ;
226
 
226
 
227
		foreach ($informations_image as $champ => $valeur)
227
		foreach ($informations_image as $champ => $valeur)
228
		{
228
		{
229
			$champs_a_inserer .= $champ.',' ;
229
			$champs_a_inserer .= $champ.',' ;
230
 
230
 
231
			if (is_null($valeur))
231
			if (is_null($valeur))
232
			{
232
			{
233
				$valeurs_a_inserer .= 'NULL,' ;
233
				$valeurs_a_inserer .= 'NULL,' ;
234
			}
234
			}
235
			else
235
			else
236
			{
236
			{
237
				$valeurs_a_inserer .= $this->proteger($valeur).',' ;
237
				$valeurs_a_inserer .= $this->proteger($valeur).',' ;
238
			}
238
			}
239
		}
239
		}
240
		
240
		
241
		if ($informations_image['ci_meta_date_time'] != 'NULL') {
241
		if ($informations_image['ci_meta_date_time'] != 'NULL') {
242
			$champs_a_inserer .= 'ci_meta_date, ';
242
			$champs_a_inserer .= 'ci_meta_date, ';
243
        	$valeurs_a_inserer .= $this->proteger($informations_image['ci_meta_date_time']).',';
243
        	$valeurs_a_inserer .= $this->proteger($informations_image['ci_meta_date_time']).',';
244
		}
244
		}
245
 
245
 
246
        $champs_a_inserer .= 'ci_meta_date_ajout' ;
246
        $champs_a_inserer .= 'ci_meta_date_ajout' ;
247
        $valeurs_a_inserer .= 'CURRENT_TIMESTAMP()' ;
247
        $valeurs_a_inserer .= 'CURRENT_TIMESTAMP()' ;
248
 
248
 
249
		$requete_insertion_image .= "(".$champs_a_inserer.") VALUES (".$valeurs_a_inserer.")" ;
249
		$requete_insertion_image .= "(".$champs_a_inserer.") VALUES (".$valeurs_a_inserer.")" ;
250
		
250
		
251
		return $requete_insertion_image;
251
		return $requete_insertion_image;
252
	}
252
	}
253
	
253
	
254
	private function envoyerMessageCreationEffectuee() {
254
	private function envoyerMessageCreationEffectuee() {
255
			
255
			
256
		header('HTTP/1.0 200 Created');
256
		header('HTTP/1.0 200 Created');
257
		echo 'OK';
257
		echo 'OK';
258
		exit() ;
258
		exit() ;
259
	}
259
	}
260
 
260
 
261
	/**
261
	/**
262
	 * Méthode appelée avec une requête de type DELETE.
262
	 * Méthode appelée avec une requête de type DELETE.
263
	 * Supprime les infos sur l'image et le fichier correspondant à l'id passé en parametre
263
	 * Supprime les infos sur l'image et le fichier correspondant à l'id passé en parametre
264
	*/
264
	*/
265
	function deleteElement($uid){
265
	function deleteElement($uid){
266
 
266
 
267
		// uid[0] : utilisateur obligatoire
267
		// uid[0] : utilisateur obligatoire
268
		// uid[1] : identifiant image(s) obligatoire(s)
268
		// uid[1] : identifiant image(s) obligatoire(s)
269
 
269
 
270
	 	// Controle detournement utilisateur
270
	 	// Controle detournement utilisateur
271
	    session_start();
271
		if(!isset($_SESSION)) {session_start();}
272
		$this->controleUtilisateur($uid[0]);
272
		$this->controleUtilisateur($uid[0]);
273
 
273
 
274
		if (!isset($uid[1]) || !$this->EstUneSuiteIdentifiantsImage($uid[1])) {
274
		if (!isset($uid[1]) || !$this->EstUneSuiteIdentifiantsImage($uid[1])) {
275
			return;
275
			return;
276
		}
276
		}
277
		
277
		
278
		$ids_images = $uid[1];
278
		$ids_images = $uid[1];
279
 
279
 
280
	    $requete_suppression_images = "DELETE FROM cel_images WHERE ci_id_image in (".$ids_images.")";
280
	    $requete_suppression_images = "DELETE FROM cel_images WHERE ci_id_image in (".$ids_images.")";
281
		$requete_suppression_lien_images_obs = "DELETE FROM cel_obs_images WHERE coi_ce_image in (".$ids_images.")";
281
		$requete_suppression_lien_images_obs = "DELETE FROM cel_obs_images WHERE coi_ce_image in (".$ids_images.")";
282
		
282
		
283
		$resultat_suppression_image = $this->executerRequeteSimple($requete_suppression_images);
283
		$resultat_suppression_image = $this->executerRequeteSimple($requete_suppression_images);
284
		$resultat_suppression_lien_images_obs = $this->executerRequeteSimple($requete_suppression_lien_images_obs);
284
		$resultat_suppression_lien_images_obs = $this->executerRequeteSimple($requete_suppression_lien_images_obs);
285
		
285
		
286
		if (!$resultat_suppression_image) {
286
		if (!$resultat_suppression_image) {
287
			$message =  'Erreur lors de la suppression de l\'image' ;
287
			$message =  'Erreur lors de la suppression de l\'image' ;
288
			trigger_error($message, E_USER_ERROR);
288
			trigger_error($message, E_USER_ERROR);
289
		}
289
		}
290
		
290
		
291
		if (!$resultat_suppression_lien_images_obs) {
291
		if (!$resultat_suppression_lien_images_obs) {
292
			$message =  'Erreur lors de la suppression des observations associées à l\'image' ;
292
			$message =  'Erreur lors de la suppression des observations associées à l\'image' ;
293
			trigger_error($message, E_USER_ERROR);
293
			trigger_error($message, E_USER_ERROR);
294
		}
294
		}
295
 
295
 
296
		$manipulateur_image = new ImageRecreation($this->config);
296
		$manipulateur_image = new ImageRecreation($this->config);
297
		
297
		
298
		$tableau_ids_image = split(',',$ids_images);
298
		$tableau_ids_image = split(',',$ids_images);
299
		
299
		
300
		foreach($tableau_ids_image as $id_image_a_detruire) {
300
		foreach($tableau_ids_image as $id_image_a_detruire) {
301
        	$destruction_fichier_image = $manipulateur_image->detruireImageSurDisque($id_image_a_detruire);
301
        	$destruction_fichier_image = $manipulateur_image->detruireImageSurDisque($id_image_a_detruire);
302
		}
302
		}
303
 
303
 
304
		$this->envoyer('OK');
304
		$this->envoyer('OK');
305
	}
305
	}
306
	
306
	
307
	private function estUneSuiteIdentifiantsImage($chaine) {
307
	private function estUneSuiteIdentifiantsImage($chaine) {
308
		
308
		
309
		// un ensemble d'identifiants est une suite d'identifiants séparés par des virgules
309
		// un ensemble d'identifiants est une suite d'identifiants séparés par des virgules
310
		// sans virgule terminale
310
		// sans virgule terminale
311
		$reg_exp = "/^(([0-9])+,)*([0-9])+$/";
311
		$reg_exp = "/^(([0-9])+,)*([0-9])+$/";
312
		
312
		
313
		return preg_match($reg_exp, $chaine);
313
		return preg_match($reg_exp, $chaine);
314
		
314
		
315
	}
315
	}
316
 
316
 
317
}
317
}
318
?>
318
?>