Subversion Repositories eFlore/Applications.cel

Rev

Rev 1179 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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