Subversion Repositories eFlore/Applications.cel

Rev

Rev 1234 | Rev 1252 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
719 jpm 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Service permettant d'insérer les informations fournie par le widget Saisie dans le CEL.
5
 * Encodage en entrée : utf8
6
 * Encodage en sortie : utf8
7
 *
8
 * Cas d'utilisation :
9
 * PUT /CelWidgetSaisie : ajout de données en les passant via $_POST
10
 *
11
 * @author Jean-Pascal MILCENT <jpm@clapas.org>
12
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
13
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
14
 * @version $Id$
15
 * @copyright © 2011, Jean-Pascal MILCENT
16
 */
1058 jpm 17
class CelWidgetSaisie extends CelMotCle {
18
 
19
	private $projet = null;
1234 jpm 20
	private $tagsObs = null;
21
	private $tagsImg = null;
1058 jpm 22
	private $utilisateur_id = null;
1111 jpm 23
	const DUREE_DE_VIE_IMG = 86400;// 3600 * 24 * 2 = 172 800
1219 jpm 24
	const ARRET_SERVICE = false;// Permet de bloquer le service en cas de problème sur le serveur
1058 jpm 25
 
26
	public function createElement($requeteDonnees) {
1183 jpm 27
		if (self::ARRET_SERVICE) {
28
			$this->messages[] = "Désactivation temporaire du service d'envoi des données au CEL.";
29
		} else if (array_key_exists('projet', $requeteDonnees)) {
1058 jpm 30
			$this->debug[] = 'Projet : ok';
31
			$this->projet = $requeteDonnees['projet'];
1234 jpm 32
			if (array_key_exists('tag-obs', $requeteDonnees) && $requeteDonnees['tag-obs'] != '') {
33
				$this->tagsObs = explode(',', $requeteDonnees['tag-obs']);
34
			}
35
			$this->tagsObs[] = 'Projets coopératifs>'.$this->projet;
36
			if (array_key_exists('tag-img', $requeteDonnees) && $requeteDonnees['tag-img'] != '') {
37
				$this->tagsImg = explode(',', $requeteDonnees['tag-img']);
38
			}
39
			$this->tagsImg[] = 'Projets coopératifs>'.$this->projet;
1058 jpm 40
			if (array_key_exists('utilisateur', $requeteDonnees)) {
41
				$this->debug[] = 'Utilisateur : ok';
42
				$utilisateur = $requeteDonnees['utilisateur'];
43
				if (array_key_exists('courriel', $utilisateur)) {
44
					$this->debug[] = 'Courriel : ok';
45
					extract($utilisateur);
46
					$this->utilisateur_id = $courriel;
47
					$ordre = $this->getMaxOrdre($courriel);
48
					if (!is_null($ordre)) {
1123 jpm 49
						$requeteDonnees = $this->supprimerSlashesProfond($requeteDonnees);
1109 jpm 50
 
1058 jpm 51
						// Triage et manipulation des données
52
						$observations = array();
53
						foreach ($requeteDonnees as $cle => $obs) {
54
							if (preg_match('/^obsId[0-9]+$/', $cle)) {
55
								$idObs = $ordre++;
56
 
1109 jpm 57
								$this->debug[] = 'commune_nom : '.$obs['commune_nom'];
58
								$this->debug[] = 'commune_code_insee : '.$obs['commune_code_insee'];
59
 
1058 jpm 60
								$obsAAjouter = array();
61
								$obsAAjouter['identifiant'] = $courriel;
62
								$obsAAjouter['prenom_utilisateur'] = $prenom;
63
								$obsAAjouter['nom_utilisateur'] = $nom;
64
								$obsAAjouter['ordre'] = $idObs;
1219 jpm 65
 
1058 jpm 66
								$obsAAjouter['nom_sel'] = $obs['nom_sel'];
1219 jpm 67
								$obsAAjouter['num_nom_sel'] = isset($obs['num_nom_sel']) ? $obs['num_nom_sel'] : null;
68
								$obsAAjouter['nom_ret'] = isset($obs['nom_ret']) ? $obs['nom_ret'] : null;
69
								$obsAAjouter['num_nom_ret'] = isset($obs['num_nom_ret']) ? $obs['num_nom_ret'] : null;
70
								$obsAAjouter['num_taxon'] = isset($obs['num_taxon']) ? $obs['num_taxon'] : null;
71
								$obsAAjouter['famille'] = isset($obs['famille']) ? $obs['famille'] : null;
1229 jpm 72
								$obsAAjouter['nom_referentiel'] = isset($obs['referentiel']) ? $obs['referentiel'] : null;
1219 jpm 73
 
1058 jpm 74
								$obsAAjouter['date_observation'] = $this->transormerDateFrVersMysql($obs['date']);
75
								$obsAAjouter['commentaire'] = $obs['notes'];
1219 jpm 76
 
1072 jpm 77
								$obsAAjouter['location'] = $obs['commune_nom'];
78
								$obsAAjouter['id_location'] = substr($obs['commune_code_insee'], 0, 2);
79
								$obsAAjouter['lieudit'] = isset($obs['lieu_dit']) ? $obs['lieu_dit'] : null;
80
								$obsAAjouter['station'] = isset($obs['station']) ? $obs['station'] : null;
1219 jpm 81
								$obsAAjouter['milieu'] = $obs['milieu'];
1058 jpm 82
								$obsAAjouter['coord_x'] = $obs['latitude'];
83
								$obsAAjouter['coord_y'] = $obs['longitude'];
84
								$obsAAjouter['ref_geo'] = 'WGS84';
85
 
1219 jpm 86
								$obsAAjouter['transmission'] = '1';
1236 jpm 87
								$obsAAjouter['date_creation'] = date('Y-m-d H:i:s');
88
								$obsAAjouter['date_modification'] = $obsAAjouter['date_creation'];
89
								$obsAAjouter['date_transmission'] = $obsAAjouter['date_creation'];
1219 jpm 90
 
1058 jpm 91
								$imgAAjouter = null;
92
								if (!empty($obs['image_nom'])) {
93
									$imgAAjouter = array();
94
									$imgAAjouter['id_utilisateur'] = $courriel;
95
									$imgAAjouter['id_obs'] = $idObs;
96
									$imgAAjouter['nom'] = $obs['image_nom'];
97
									$imgAAjouter['b64'] = $obs['image_b64'];
1123 jpm 98
									$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');
1058 jpm 99
								}
100
 
101
								$observations[$idObs] = array(
102
									'obs' => $this->protegerTableau($obsAAjouter),
103
									'img' => $imgAAjouter);
104
							}
719 jpm 105
						}
1058 jpm 106
						$this->debug[] = 'Nbre obs ajoutée : '.count($observations);
107
 
108
						// Insertion dans la base
1234 jpm 109
						$obs_a_taguer = array();
110
						$img_a_taguer = array();
1058 jpm 111
						foreach ($observations as $infos) {
112
							$obs = $infos['obs'];
113
							$img = $infos['img'];
114
 
115
							// si le formulaire contient une image on la traite
116
							if ($img != null) {
1111 jpm 117
								$this->nettoyerImagesUploades();
1058 jpm 118
								$nomFichierImg = $this->traiterNomFichierImage($img['nom']);
1123 jpm 119
								$cheminImage = $this->config['cel_db']['chemin_stockage_temp']."/$nomFichierImg";
1058 jpm 120
								// Si l'image est transmise en base 64
121
								if (empty($img['b64']) === false) {
1123 jpm 122
									$this->transformerBase64enFichier($cheminImage, $img['b64']);
1058 jpm 123
								}
1123 jpm 124
 
125
								$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
1072 jpm 126
								$idImg = $this->ajouterImageSurDdEtBdd($img['id_utilisateur'], $cheminImage, $nomFichierImg);
1058 jpm 127
								if ($idImg !== false) {
1234 jpm 128
									$liaisonOk = $this->lierObsEtImg($idImg, $img['id_utilisateur'], $img['id_obs']);
129
									if ($liaisonOk === true) {
130
										$img_a_taguer[] = $idImg;
131
									}
1058 jpm 132
								}
133
							}
134
 
1234 jpm 135
							$champs = implode(', ', array_keys($obs));
136
							$valeurs = implode(', ', $obs);
137
							$requete = "INSERT INTO cel_inventory ($champs) VALUES ($valeurs) ";
138
 
1058 jpm 139
							if ($this->executerRequeteSimple($requete) === false) {
1234 jpm 140
								$this->messages[] = "Un problème est survenu lors de l'insertion de l'obs dans la base de données.";
1058 jpm 141
							} else {
1234 jpm 142
								$obs_a_taguer[] = trim($obs['ordre'], "'");
1058 jpm 143
							}
719 jpm 144
						}
1234 jpm 145
						$this->taguerObs($obs_a_taguer);
146
						$this->taguerImg($img_a_taguer);
1058 jpm 147
					} else {
148
						$this->messages[] = "Un nouveau numéro d'ordre d'observation n'a pu être généré.";
719 jpm 149
					}
150
				} else {
1058 jpm 151
					$this->messages[] = "L'identifiant de l'utilisateur (courriel) n'a pas été transmis.";
719 jpm 152
				}
153
			} else {
1058 jpm 154
				$this->messages[] = "Les informations concernant l'utilisateur (prénom, nom, courriel) n'ont pas été transmises.";
719 jpm 155
			}
156
		} else {
1058 jpm 157
			$this->messages[] = "Les informations concernant le projet coopératif n'ont pas été transmises.";
158
		}
159
 
160
		$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
161
		$retour = (object) array('msg' => $msg);
162
		$this->envoyerJson($retour);
719 jpm 163
	}
1058 jpm 164
 
1123 jpm 165
	private function supprimerSlashesProfond($valeur) {
166
		$valeur = is_array($valeur) ? array_map(array($this, 'supprimerSlashesProfond'), $valeur) : stripslashes($valeur);
167
		return $valeur;
168
	}
169
 
170
 
719 jpm 171
	private function getMaxOrdre($identifiant) {
172
		$ordre = null;
173
		$identifiant = $this->bdd->quote($identifiant);
174
		$requete = 	"SELECT MAX(ordre) AS ordre ".
175
					"FROM cel_inventory ".
176
					"WHERE identifiant = $identifiant ";
177
		$ordre_max = $this->executerRequete($requete, 'Column');
178
		if ($ordre_max !== false) {
179
			$ordre = $ordre_max + 1;
180
		}
181
		return $ordre;
182
	}
1058 jpm 183
 
719 jpm 184
	/**
185
	 * Transforme une date au format français (jj/mm/aaaa) dans un format Mysql (aaaa-mm-jj).
186
	 * @param string $dateFr date au format français (jj/mm/aaaa)
187
	 * @return string date au format Mysql (aaaa-mm-jj)
188
	 */
189
	private function transormerDateFrVersMysql($dateFr) {
190
		$dateMysql = '0000-00-00';
191
		$morceauxDate = explode('/', $dateFr);
192
		if (count($morceauxDate) == 3) {
1058 jpm 193
			$dateMysql = implode('-', array_reverse($morceauxDate));
719 jpm 194
		}
195
		return $dateMysql;
196
	}
1058 jpm 197
 
1234 jpm 198
	private function taguerObs($obs_a_taguer) {
199
		if (count($obs_a_taguer) > 0) {
200
			foreach ($this->tagsObs as $hierarchieTag) {
201
				$tagsALier = explode('>', $hierarchieTag);
202
				$liaisonOk = $this->lierObsAMotsCles($obs_a_taguer, $tagsALier);
203
				if ($liaisonOk === false) {
204
					$e = "Toutes les observations n'ont pas pu être liées aux mots-clés : $hierarchieTag";
205
					$this->messages[] = $e;
206
				}
207
			}
208
		}
209
	}
210
 
211
	private function lierObsAMotsCles($observations, $tags) {
212
		$hierarchieIdsTags = array(self::OBS_RACINE_ID);
213
		$listeIdsTags = array();
214
		foreach ($tags as $tag) {
215
			$tag = $this->nettoyerTag($tag);
216
			$tagTranslit = $this->translitererTag($tag);
217
			if ($tagTranslit != '') {
218
				$idTagParent = implode('.', $hierarchieIdsTags);
219
				$hierarchieIdsTags[] = $tagTranslit;
220
				$idTag = implode('.', $hierarchieIdsTags);
221
				$ajout_mot_cle_ok = $this->ajouterMotCleObs($this->utilisateur_id, $tag, $idTag, $idTagParent);
222
				if ($ajout_mot_cle_ok) {
223
					$listeIdsTags[] = $idTag;
224
				}
225
			}
226
		}
227
		$liaison_ok = $this->lierMotCleObs($this->utilisateur_id, $listeIdsTags, $observations);
228
		return $liaison_ok;
229
	}
230
 
231
	private function taguerImg($img_a_taguer) {
232
		if (count($img_a_taguer) > 0) {
233
			$this->debug[] = "Tags img : ".print_r($this->tagsImg, true);
234
			foreach ($this->tagsImg as $hierarchieTag) {
235
				$tagsALier = explode('>', $hierarchieTag);
236
				$liaisonOk = $this->lierImgAMotsCles($img_a_taguer, $tagsALier);
237
				if ($liaisonOk === false) {
238
					$e = "Toutes les images n'ont pas pu être liées aux mots-clés : $hierarchieTag";
239
					$this->messages[] = $e;
240
				}
241
			}
242
		}
243
	}
244
 
245
	private function lierImgAMotsCles($images, $tags) {
246
		$hierarchieIdsTags = array(self::IMG_RACINE_ID);
247
		$listeIdsTags = array();
248
		foreach ($tags as $tag) {
249
			$tag = $this->nettoyerTag($tag);
250
			$tagTranslit = $this->translitererTag($tag);
251
			if ($tagTranslit != '') {
252
				$idTagParent = implode('.', $hierarchieIdsTags);
253
				$hierarchieIdsTags[] = $tagTranslit;
254
				$idTag = implode('.', $hierarchieIdsTags);
255
				$ajout_mot_cle_ok = $this->ajouterMotCleImg($this->utilisateur_id, $tag, $idTag, $idTagParent);
256
				if ($ajout_mot_cle_ok) {
257
					$listeIdsTags[] = $idTag;
258
				}
259
			}
1058 jpm 260
		}
1234 jpm 261
		$liaison_ok = $this->lierMotCleImg($this->utilisateur_id, $listeIdsTags, $images);
262
		return $liaison_ok;
1058 jpm 263
	}
264
 
1234 jpm 265
	private function nettoyerTag($tag) {
266
		$tag = trim($tag);
267
		$tag = preg_replace('/(?:\s+|[,]+)/', ' ', $tag);
268
		return $tag;
269
	}
270
 
271
	private function translitererTag($tag) {
272
		$tag = mb_strtolower($tag, 'UTF-8');
273
		$tag = preg_replace('/[:!?]+/', ' ', $tag);
274
		$tag = str_replace(' ', '-', $tag);
275
		$caracteres_accentues = array(
276
				'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ',
277
				'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'ā', 'ă', 'ą', 'ć', 'ĉ', 'ċ', 'č',
278
				'ď', 'đ', 'ē', 'ĕ', 'ė', 'ę', 'ě', 'ĝ', 'ğ', 'ġ', 'ģ', 'ĥ', 'ħ', 'ĩ', 'ī', 'ĭ', 'į', 'ı', 'ij',
279
				'ĵ', 'ķ', 'ĺ', 'ļ', 'ľ', 'ŀ', 'ł', 'ń', 'ņ', 'ň', 'ʼn', 'ō', 'ŏ', 'ő', 'œ', 'ŕ', 'ŗ', 'ř',
280
				'ś', 'ŝ', 'ş', 'š', 'ţ', 'ť', 'ŧ', 'ũ', 'ū', 'ŭ', 'ů', 'ű', 'ų', 'ŵ', 'ŷ', 'ź', 'ż', 'ž', 'ſ',
281
				'ƒ', 'ơ', 'ư', 'ǎ', 'ǐ', 'ǒ', 'ǔ', 'ǖ', 'ǘ', 'ǚ', 'ǜ', 'ǻ',  'ǽ', 'ǿ');
282
		$caracteres_normaux = array(
283
				'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n',
284
				'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'a', 'a', 'a', 'c', 'c', 'c', 'c',
285
				'd', 'd', 'e', 'e', 'e', 'e', 'e', 'g', 'g', 'g', 'g', 'h', 'h', 'i', 'i', 'i', 'i', 'i', 'ij',
286
				'j', 'k', 'l', 'l', 'l', 'l', 'l', 'n', 'n', 'n', 'n', 'o', 'o', 'o','oe', 'r', 'r', 'r',
287
				's', 's', 's', 's', 't', 't', 't', 'u', 'u', 'u', 'u', 'u', 'u', 'w', 'y', 'z', 'z', 'z', 's',
288
				'f', 'o', 'u', 'a', 'i', 'o', 'u', 'u', 'u', 'u', 'u', 'a', 'ae', 'o');
289
		$tag = str_replace($caracteres_accentues, $caracteres_normaux, $tag);
290
		return $tag;
291
	}
292
 
1058 jpm 293
	private function traiterNomFichierImage($fichierNom) {
294
		$fichierNom = preg_replace('/[.](jpeg|jpg)$/i', '.jpg', strtolower(trim($fichierNom)));
295
		return $fichierNom;
296
	}
297
 
298
	/**
299
	* Décode l'image en base64,enregistre celle-ci sous forme de fichier du type de l'image
300
	*  dans un dossier temporaire.
301
	*/
1123 jpm 302
	private function transformerBase64enFichier($cheminImage, $imageInfosB64) {
1058 jpm 303
		// Enleve la partie data:image qui permet la previsalisation pour firefox de l'image en base64
304
		$imageBase64 = explode(';', $imageInfosB64);
305
		$dataBase64 = explode(',',$imageBase64[1]);
306
		$dataImg = base64_decode($dataBase64[1]);
307
 
308
		$imageRessource = fopen($cheminImage, 'wb');
309
		fwrite($imageRessource, $dataImg);
310
		fclose($imageRessource);
311
 
312
		if (file_exists($cheminImage) == false) {
313
			 $this->messages[] = "Erreur lors de la création du fichier";
314
		}
315
	}
316
 
317
	public function lierObsEtImg($id_image, $id_utilisateur, $id_obs) {
318
		$id_image = $this->proteger($id_image);
319
		$id_utilisateur = $this->proteger($id_utilisateur);
320
		$id_obs = $this->proteger($id_obs);
321
 
322
		$requete = 'INSERT INTO cel_obs_images '.
323
			'	(coi_ce_image, coi_ce_utilisateur, coi_ce_observation, coi_date_liaison) '.
324
			"VALUES ($id_image, $id_utilisateur, $id_obs, NOW()) ".
325
			'	ON DUPLICATE KEY UPDATE coi_ce_image = coi_ce_image';
326
 
1234 jpm 327
		$liaison = true;
1058 jpm 328
		if ($this->executerRequeteSimple($requete) === false) {
329
			$this->messages[] = "La requête de liaison de l'obs $id_obs à l'image $id_image pour l'utilisateur $id_utilisateur a échouée.";
1234 jpm 330
			$liaison = false;
1058 jpm 331
		}
1234 jpm 332
		return $liaison;
1058 jpm 333
	}
334
 
1111 jpm 335
	public function nettoyerImagesUploades() {
336
		$dossierStockage = $this->config['cel_db']['chemin_stockage_temp'].'/';
337
		if (is_dir($dossierStockage)) {
338
			$objets = scandir($dossierStockage);
339
			if ($objets !== false) {
340
				foreach ($objets as $objet) {
341
					$chemin = $dossierStockage.$objet;
342
					if (is_file($chemin)) {
343
						$filemtime = @filemtime($chemin);
344
						if ($filemtime !== false) {
345
							$suppression = (time() - $filemtime >= self::DUREE_DE_VIE_IMG) ? true : false;
346
							if ($suppression === true) {
347
								unlink($chemin);
348
							}
349
						}
350
					}
351
				}
352
			}
353
		}
354
	}
355
 
1058 jpm 356
	/**
357
	* Ajoute une image dans la base de données et stocke le fichier en fabriquant les miniatures,
358
	* renvoie le nouvel id d'image en cas de succès
359
	*
1094 jpm 360
	* @param string $idUtilisateur l'identifiant de l'utilisateur
361
	* @param string $cheminImage le chemin vers le fichier original de l'image
362
	* @param string $nomFichierImage le nom du fichier original de l'image
1058 jpm 363
	*/
364
	public function ajouterImageSurDdEtBdd($idUtilisateur, $cheminImage, $nomFichierImage) {
365
		$idImage = false;
366
		$nouvelOrdre = $this->obtenirNouvelOrdrePourUtilisateur($idUtilisateur);
367
		if ($nouvelOrdre !== false) {
368
			if (file_exists($cheminImage)) {
369
				$extracteurMetadonnees = new ExtracteurMetadonnees();
370
				$metadonnees = $extracteurMetadonnees->extraireMetadonnees($cheminImage) ;
371
				if ($metadonnees !== false) {
372
					$infosImage = $metadonnees;
373
					$infosImage['ci_ordre'] = $nouvelOrdre;
374
					$infosImage['ci_publiable_eflore'] = 'false';
375
					$infosImage['ci_nom_original'] = $nomFichierImage;
376
					$infosImage['ci_ce_utilisateur'] = $idUtilisateur;
377
					$infosImage['ci_md5'] = md5_file($cheminImage);
1123 jpm 378
					$this->debug[] = 'Nom fichier img meta :'.$nomFichierImage;
1058 jpm 379
					$requete = $this->construireRequeteInsertionImage($infosImage);
380
					$resultat = $this->executerRequeteSimple($requete);
381
					if ($resultat !== false) {
382
						$idImage = $this->obtenirIdImagePourIdentifiantEtOrdre($idUtilisateur, $nouvelOrdre);
383
						if ($idImage !== false) {
384
							$manipulateurImage = new ImageRecreation($this->config);
385
							$stockageOk = $manipulateurImage->stockerFichierEtCreerMiniatures($cheminImage, $idImage);
1094 jpm 386
							if ($stockageOk) {
387
								$miniatureChemin = str_replace('.jpg', '_min.jpg', $cheminImage);
388
								if (file_exists($miniatureChemin)) {
389
									if (@unlink($miniatureChemin) === false) {
390
										$this->messages[] = "La miniature de l'image n'a pu être supprimée.";
391
									}
392
								}
393
 
394
							} else {
1058 jpm 395
								$this->messages[] = "Une erreur s'est produite lors du stockage du fichier.";
396
							}
397
						} else {
398
							$this->messages[] =  "Impossible d'obtenir le nouvel identifiant de l'image";
399
						}
400
					} else {
401
						$this->messages[] = "Echec de l'insertion dans la base de donnees des informations de l'image.";
402
					}
403
				} else {
404
					$this->messages[] = "Erreur lors de l'extraction des metadonnées.";
405
				}
406
			} else {
407
				$this->messages[] = "L'image originale est introuvable sur le serveur.";
408
			}
409
		} else {
410
			$this->messages[] = "Erreur lors du calcul du nouvel ordre de l'image.";
411
		}
412
		return $idImage;
413
	}
414
 
415
	private function obtenirNouvelOrdrePourUtilisateur($id_utilisateur) {
416
		$id_utilisateur = $this->proteger($id_utilisateur);
417
 
418
		$requete = 'SELECT MAX(ci_ordre) as max_ordre '.
419
			'FROM cel_images '.
420
			"WHERE ci_ce_utilisateur = $id_utilisateur ";
421
		$resultat = $this->executerRequete($requete);
422
 
1123 jpm 423
		$ordre = ($resultat) ? ++$resultat[0]['max_ordre'] : 0;
1058 jpm 424
		return $ordre;
425
	}
426
 
427
	private function obtenirIdImagePourIdentifiantEtOrdre($id_utilisateur, $ordre) {
428
		$id_utilisateur = $this->proteger($id_utilisateur);
429
		$ordre = $this->proteger($ordre);
430
 
431
		$requete = 'SELECT ci_id_image '.
432
			'FROM cel_images '.
433
			"WHERE ci_ce_utilisateur = $id_utilisateur ".
434
			"	AND ci_ordre = $ordre ";
435
		$resultat = $this->executerRequete($requete);
436
 
437
		$id_image = (count($resultat) > 0) ? $resultat[0]['ci_id_image'] : false;
438
		return $id_image;
439
 
440
	}
441
 
442
	private function construireRequeteInsertionImage($informations) {
443
		$champs = array('ci_meta_date_ajout');
444
		$valeurs = array('CURRENT_TIMESTAMP()');
445
 
446
		foreach ($informations as $champ => $valeur) {
447
			$champs[] = $champ;
448
			$valeurs[] = is_null($valeur) ? 'NULL' : $this->proteger($valeur);
449
			if ($champ == 'ci_meta_date_time' && $valeur != 'NULL') {
450
				$champs[] = 'ci_meta_date';
451
				$valeurs[] = $this->proteger($valeur);
452
			}
453
		}
454
		$champs = implode(', ', $champs);
455
		$valeurs = implode(', ', $valeurs);
456
 
457
		$requete = "INSERT INTO cel_images ($champs) VALUES ($valeurs) ";
458
 
459
		return $requete;
460
	}
719 jpm 461
}
462
?>