Subversion Repositories eFlore/Applications.cel

Rev

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