Subversion Repositories eFlore/Applications.cel

Rev

Rev 2826 | Rev 2830 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2826 Rev 2828
Line 62... Line 62...
62
					$erreursDurantTraitement = false;
62
					$erreursDurantTraitement = false;
63
					$nomsOriginauxImagesTemp = array();
63
					$nomsOriginauxImagesTemp = array();
Line 64... Line 64...
64
 
64
 
65
					$this->debug[] = 'Courriel : '.$utilisateur['courriel'];
65
					$this->debug[] = 'Courriel : '.$utilisateur['courriel'];
66
					$utilisateur = $this->affecterChampsManquantsUtilisateur($utilisateur);
66
					$utilisateur = $this->affecterChampsManquantsUtilisateur($utilisateur);
-
 
67
					extract($utilisateur); // @TODO pendre le paltoquet qui a écrit ça !!!
67
					extract($utilisateur);
68
					// $id_utilisateur vient du extract() de $utilisateur['id_utilisateur']
68
					$this->utilisateur_id = $id_utilisateur;
69
					$this->utilisateur_id = $id_utilisateur;
69
					$ordre = $this->getMaxOrdre($id_utilisateur);
70
					$ordre = $this->getMaxOrdre($id_utilisateur);
70
					if (!is_null($ordre)) {
71
					if (!is_null($ordre)) {
71
						$requeteDonnees = $this->supprimerSlashesProfond($requeteDonnees);
72
						$requeteDonnees = $this->supprimerSlashesProfond($requeteDonnees);
Line 144... Line 145...
144
						$this->debug[] = 'tagsObs : '.print_r($this->tagsObs, true);
145
						$this->debug[] = 'tagsObs : '.print_r($this->tagsObs, true);
145
						$this->debug[] = 'tagsImg : '.print_r($this->tagsImg, true);
146
						$this->debug[] = 'tagsImg : '.print_r($this->tagsImg, true);
Line 146... Line 147...
146
 
147
 
147
						// Insertion dans la base
148
						// Insertion dans la base
148
						$obs_a_taguer_ordres = array();
149
						$obs_a_taguer_ordres = array();
149
						$img_a_taguer_ids = array();
150
						$img_a_taguer_ids_noms = array();
150
						foreach ($observations as $infos) {
151
						foreach ($observations as $infos) {
151
							$obs = $infos['obs'];
152
							$obs = $infos['obs'];
Line 152... Line 153...
152
							$img = $infos['img'];
153
							$img = $infos['img'];
Line 166... Line 167...
166
							$idNouvelleObs = Cel::db()->obtenirDernierId();
167
							$idNouvelleObs = Cel::db()->obtenirDernierId();
Line 167... Line 168...
167
 
168
 
168
							// si le formulaire contient une image on la traite
169
							// si le formulaire contient une image on la traite
169
							if ($img != null) {
170
							if ($img != null) {
170
								$this->nettoyerImagesUploades();
171
								$this->nettoyerImagesUploades();
171
								$img_a_taguer_ids = $this->stockerImagesEtLierAObs($idNouvelleObs, $img, $utilisateur);
172
								$img_a_taguer_ids_noms = $this->stockerImagesEtLierAObs($idNouvelleObs, $img, $utilisateur);
172
								if ($img_a_taguer_ids === false) {
173
								if ($img_a_taguer_ids_noms === false) {
173
									$erreursDurantTraitement = true;
174
									$erreursDurantTraitement = true;
174
									$this->messages[] = "Au moins une des images n'a pas pu être enregistrée.";
175
									$this->messages[] = "Au moins une des images n'a pas pu être enregistrée.";
175
								} else {
176
								} else {
176
									$cmd = sprintf($this->config['cel']['commande_script_images'],implode(',', $img_a_taguer_ids));
177
									$cmd = sprintf($this->config['cel']['commande_script_images'],implode(',', array_keys($img_a_taguer_ids_noms)));
177
									pclose(popen($cmd,"r"));
178
									pclose(popen($cmd,"r"));
178
								}
179
								}
179
							}
180
							}
Line 180... Line 181...
180
						}
181
						}
181
 
182
 
Line 182... Line 183...
182
						$this->gestionMotsClesObs = new GestionMotsClesChemin($this->config,'obs');
183
						$this->gestionMotsClesObs = new GestionMotsClesChemin($this->config,'obs');
183
						$this->gestionMotsClesImages = new GestionMotsClesChemin($this->config,'images');
184
						$this->gestionMotsClesImages = new GestionMotsClesChemin($this->config,'images');
184
 
185
 
185
						$obs_a_taguer_ids = $this->obtenirIdsObsPourTableauOrdres($this->utilisateur_id, $obs_a_taguer_ordres);
186
						$obs_a_taguer_ids = $this->obtenirIdsObsPourTableauOrdres($this->utilisateur_id, $obs_a_taguer_ordres);
186
						$this->taguerObs($obs_a_taguer_ids);
187
						$this->taguerObs($obs_a_taguer_ids);
Line 187... Line 188...
187
						if ($img_a_taguer_ids !== false) {
188
						if ($img_a_taguer_ids_noms !== false) {
188
							$this->taguerImg($img_a_taguer_ids);
189
							$this->taguerImg(array_keys($img_a_taguer_ids_noms));
189
						}
190
						}
Line 200... Line 201...
200
						$this->nettoyerImagesUploades($nomsOriginauxImagesTemp);
201
						$this->nettoyerImagesUploades($nomsOriginauxImagesTemp);
201
						Cel::db()->commit();
202
						Cel::db()->commit();
202
					} else {
203
					} else {
203
						// On annule l'écriture des images enregistrées sur le disque dur - la transaction
204
						// On annule l'écriture des images enregistrées sur le disque dur - la transaction
204
						// se charge de les retirer de la base de données
205
						// se charge de les retirer de la base de données
205
						if ($img_a_taguer_ids !== false) {
206
						if ($img_a_taguer_ids_noms !== false) {
206
							foreach ($img_a_taguer_ids as $idImageASupprimer) {
207
							foreach (array_keys($img_a_taguer_ids_noms) as $idImageASupprimer) {
207
								$this->effacerImageDuDd($idImageASupprimer);
208
								$this->effacerImageDuDd($idImageASupprimer);
208
							}
209
							}
209
						}
210
						}
210
						Cel::db()->rollBack();
211
						Cel::db()->rollBack();
211
					}
212
					}
Line 225... Line 226...
225
			$msg = 'erreur';
226
			$msg = 'erreur';
226
			$idNouvelleObs = null;
227
			$idNouvelleObs = null;
227
		} else {
228
		} else {
228
			$msg = 'ok';
229
			$msg = 'ok';
229
		}
230
		}
-
 
231
		// renvoi des infos d'images (id, nom) ordonnées, en plus des infos obs.
-
 
232
		$infosImages = array();
230
		$retour = (object) array('msg' => $msg, 'id' => $idNouvelleObs);
233
		foreach ($img_a_taguer_ids_noms as $id => $nom) {
-
 
234
			$infosImages[] = array(
-
 
235
				'id' => $id,
-
 
236
				'nom' => $nom
-
 
237
			);
-
 
238
		}
-
 
239
		$retour = (object) array(
-
 
240
			'msg' => $msg,
-
 
241
			'id' => $idNouvelleObs,
-
 
242
			'images' => $infosImages
-
 
243
		);
231
		$this->envoyerJson($retour);
244
		$this->envoyerJson($retour);
232
		exit;
245
		exit;
233
	}
246
	}
Line 234... Line 247...
234
 
247
 
Line 325... Line 338...
325
			$imgTmp[] = $img;
338
			$imgTmp[] = $img;
326
			unset($img);
339
			unset($img);
327
			$img = $imgTmp;
340
			$img = $imgTmp;
328
		}
341
		}
Line 329... Line 342...
329
 
342
 
330
		$img_a_taguer_ids = array();
343
		$img_a_taguer_ids_noms = array();
331
		foreach ($img as $image) {
344
		foreach ($img as $image) {
332
			$nomFichierImg = $this->traiterNomFichierImage($image['nom']);
345
			$nomFichierImg = $this->traiterNomFichierImage($image['nom']);
333
			$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
346
			$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
334
			// Si l'image est transmise en base 64
347
			// Si l'image est transmise en base 64
Line 337... Line 350...
337
			}
350
			}
Line 338... Line 351...
338
 
351
 
339
			$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
352
			$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
340
			$idImg = $this->ajouterImageSurDdEtBdd($id_obs, $utilisateur, $cheminImage, $nomFichierImg);
353
			$idImg = $this->ajouterImageSurDdEtBdd($id_obs, $utilisateur, $cheminImage, $nomFichierImg);
341
			if ($idImg !== false) {
354
			if ($idImg !== false) {
342
				$img_a_taguer_ids[] = $idImg;
355
				$img_a_taguer_ids_noms[$idImg] = $nomFichierImg;
343
				if (isset($image['tags'])) {
356
				if (isset($image['tags'])) {
344
					$this->correspondanceIdImgTags[$idImg] = $image['tags'];
357
					$this->correspondanceIdImgTags[$idImg] = $image['tags'];
345
				}
358
				}
346
			} else {
359
			} else {
347
				// L'image n'a pas pu être écrite.
360
				// L'image n'a pas pu être écrite.
348
				// On annule l'écriture des précédentes et on s'arrête là - la transaction
361
				// On annule l'écriture des précédentes et on s'arrête là - la transaction
349
				// se chargera de les retirer de la base de données
362
				// se chargera de les retirer de la base de données
350
				foreach ($img_a_taguer_ids as $idImageASupprimer) {
363
				foreach (array_keys($img_a_taguer_ids_noms) as $idImageASupprimer) {
351
					$this->effacerImageDuDd($idImageASupprimer);
364
					$this->effacerImageDuDd($idImageASupprimer);
352
				}
365
				}
353
				$img_a_taguer_ids = false;
366
				$img_a_taguer_ids_noms = false;
354
				break;
367
				break;
355
			}
368
			}
356
		}
369
		}
357
		return $img_a_taguer_ids;
370
		return $img_a_taguer_ids_noms;
Line 358... Line 371...
358
	}
371
	}
359
 
372
 
360
	private function affecterChampsManquantsUtilisateur($utilisateur) {
373
	private function affecterChampsManquantsUtilisateur($utilisateur) {