Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2409 Rev 2446
Line 162... Line 162...
162
							$idNouvelleObs = Cel::db()->obtenirDernierId();
162
							$idNouvelleObs = Cel::db()->obtenirDernierId();
Line 163... Line 163...
163
 
163
 
164
							// si le formulaire contient une image on la traite
164
							// si le formulaire contient une image on la traite
165
							if ($img != null) {
165
							if ($img != null) {
166
								$this->nettoyerImagesUploades();
166
								$this->nettoyerImagesUploades();
167
								$img_a_taguer_ids = $this->stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur);
167
								$img_a_taguer_ids = $this->stockerImagesEtLierAObs($idNouvelleObs, $img, $utilisateur);
168
								if ($img_a_taguer_ids === false) {
168
								if ($img_a_taguer_ids === false) {
169
									$erreursDurantTraitement = true;
169
									$erreursDurantTraitement = true;
170
									$this->messages[] = "Au moins une des images n'a pas pu être enregistrée.";
170
									$this->messages[] = "Au moins une des images n'a pas pu être enregistrée.";
171
								} else {
171
								} else {
Line 314... Line 314...
314
		}
314
		}
Line 315... Line 315...
315
 
315
 
316
		return $imgAAjouter;
316
		return $imgAAjouter;
Line 317... Line 317...
317
	}
317
	}
-
 
318
 
-
 
319
	protected function stockerImagesEtLierAObs($id_obs, $img, $utilisateur) {
-
 
320
		if (isset($img['nom'])) {
-
 
321
			$imgTmp[] = $img;
-
 
322
			unset($img);
-
 
323
			$img = $imgTmp;
318
 
324
		}
319
	protected function stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur) {
-
 
320
		$img_a_taguer_ids = array();
325
 
321
		if (!isset($img['nom']) && is_array($img)) {
326
		$img_a_taguer_ids = array();
322
			foreach ($img as $index => $image) {
-
 
323
				$nomFichierImg = $this->traiterNomFichierImage($image['nom']);
-
 
324
				$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
-
 
325
				// Si l'image est transmise en base 64
-
 
326
				if (empty($image['b64']) === false) {
-
 
327
					$this->transformerBase64enFichier($cheminImage, $image['b64']);
-
 
328
				}
-
 
329
 
-
 
330
				$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
-
 
331
				$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
-
 
332
				if ($idImg !== false) {
-
 
333
					$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $image['id_obs']);
-
 
334
					if ($liaisonOk === true) {
-
 
335
						$img_a_taguer_ids[] = $idImg;
-
 
336
						if (isset($image['tags'])) {
-
 
337
							$this->correspondanceIdImgTags[$idImg] = $image['tags'];
-
 
338
						}
-
 
339
					}
-
 
340
				} else {
-
 
341
					// L'image n'a pas pu être écrite.
-
 
342
					// On annule l'écriture des précédentes et on s'arrête là - la transaction
-
 
343
					// se chargera de les retirer de la base de données
-
 
344
					foreach ($img_a_taguer_ids as $idImageASupprimer) {
-
 
345
						$this->effacerImageDuDd($idImageASupprimer);
-
 
346
					}
-
 
347
					$img_a_taguer_ids = false;
-
 
348
					break;
-
 
349
				}
-
 
350
			}
-
 
351
		} else {
327
		foreach ($img as $image) {
352
			$nomFichierImg = $this->traiterNomFichierImage($img['nom']);
328
			$nomFichierImg = $this->traiterNomFichierImage($image['nom']);
353
			$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
329
			$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
354
			// Si l'image est transmise en base 64
330
			// Si l'image est transmise en base 64
355
			if (empty($img['b64']) === false) {
331
			if (empty($image['b64']) === false) {
Line 356... Line 332...
356
				$this->transformerBase64enFichier($cheminImage, $img['b64']);
332
				$this->transformerBase64enFichier($cheminImage, $image['b64']);
357
			}
333
			}
358
 
334
 
359
			$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
-
 
360
			$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
-
 
361
			if ($idImg !== false) {
335
			$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
362
				$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $img['id_obs']);
336
			$idImg = $this->ajouterImageSurDdEtBdd($id_obs, $utilisateur, $cheminImage, $nomFichierImg);
363
				if ($liaisonOk === true) {
337
			if ($idImg !== false) {
364
					$img_a_taguer_ids[] = $idImg;
-
 
365
					if (isset($img['tags'])) {
338
				$img_a_taguer_ids[] = $idImg;
366
						$this->correspondanceIdImgTags[$idImg] = $img['tags'];
339
				if (isset($image['tags'])) {
367
					}
340
					$this->correspondanceIdImgTags[$idImg] = $image['tags'];
-
 
341
				}
-
 
342
			} else {
-
 
343
				// L'image n'a pas pu être écrite.
-
 
344
				// On annule l'écriture des précédentes et on s'arrête là - la transaction
-
 
345
				// se chargera de les retirer de la base de données
368
				}
346
				foreach ($img_a_taguer_ids as $idImageASupprimer) {
-
 
347
					$this->effacerImageDuDd($idImageASupprimer);
369
			} else {
348
				}
370
				// L'image n'a pas pu être écrite
349
				$img_a_taguer_ids = false;
371
				$img_a_taguer_ids = false;
-
 
372
			}
350
				break;
373
		}
351
			}
Line 374... Line 352...
374
 
352
		}
375
		return $img_a_taguer_ids;
353
		return $img_a_taguer_ids;
Line 528... Line 506...
528
		if (file_exists($cheminImage) == false) {
506
		if (file_exists($cheminImage) == false) {
529
			 $this->messages[] = "Erreur lors de la création du fichier";
507
			 $this->messages[] = "Erreur lors de la création du fichier";
530
		}
508
		}
531
	}
509
	}
Line 532... Line -...
532
 
-
 
533
	public function lierObsEtImg($id_image, $utilisateur, $ordre_obs) {
-
 
534
		$id_image = Cel::db()->proteger($id_image);
-
 
535
		$id_obs = Cel::db()->proteger($this->obtenirIdObsPourIdentifiantEtOrdre($utilisateur, $ordre_obs));
-
 
536
 
-
 
537
		$requete = 'INSERT INTO cel_obs_images '.
-
 
538
			'	(id_image, id_observation, date_liaison) '.
-
 
539
			"VALUES ($id_image, $id_obs, NOW()) ".
-
 
540
			'	ON DUPLICATE KEY UPDATE id_image = id_image';
-
 
541
 
-
 
542
		$liaison = true;
-
 
543
		if (Cel::db()->executer($requete) === false) {
-
 
544
			$this->messages[] = "La requête de liaison de l'obs $id_obs à l'image $id_image pour l'utilisateur $id_utilisateur a échouée.";
-
 
545
			$liaison = false;
-
 
546
		}
-
 
547
		return $liaison;
-
 
548
	}
-
 
549
 
-
 
550
	private function obtenirIdObsPourIdentifiantEtOrdre($id_utilisateur, $ordre) {
-
 
551
 
-
 
552
		$id_utilisateur = Cel::db()->proteger($id_utilisateur);
-
 
553
		$ordre = Cel::db()->proteger($ordre);
-
 
554
 
-
 
555
		$requete = 'SELECT id_observation '.
-
 
556
			'FROM cel_obs '.
-
 
557
			"WHERE ce_utilisateur = $id_utilisateur ".
-
 
558
			"	AND ordre = $ordre ";
-
 
559
 
-
 
560
		$resultat = Cel::db()->requeter($requete);
-
 
561
 
-
 
562
		$id_obs = (count($resultat) > 0) ? $resultat[0]['id_observation'] : false;
-
 
563
		return $id_obs;
-
 
564
	}
-
 
565
 
510
 
566
	private function obtenirIdsObsPourTableauOrdres($id_utilisateur, $ordres) {
511
	private function obtenirIdsObsPourTableauOrdres($id_utilisateur, $ordres) {
567
		$this->debug[] = print_r($ordres,true);
512
		$this->debug[] = print_r($ordres,true);
568
		$id_utilisateur = Cel::db()->proteger($id_utilisateur);
513
		$id_utilisateur = Cel::db()->proteger($id_utilisateur);
Line 622... Line 567...
622
	*
567
	*
623
	* @param string $utilisateur l'utilisateur
568
	* @param string $utilisateur l'utilisateur
624
	* @param string $cheminImage le chemin vers le fichier original de l'image
569
	* @param string $cheminImage le chemin vers le fichier original de l'image
625
	* @param string $nomFichierImage le nom du fichier original de l'image
570
	* @param string $nomFichierImage le nom du fichier original de l'image
626
	*/
571
	*/
627
	public function ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImage) {
572
	public function ajouterImageSurDdEtBdd($id_obs, $utilisateur, $cheminImage, $nomFichierImage) {
628
		$idImage = false;
573
		$idImage = false;
629
		$idUtilisateur = $utilisateur['id_utilisateur'];
574
		$idUtilisateur = $utilisateur['id_utilisateur'];
630
		$nouvelOrdre = $this->obtenirNouvelOrdrePourUtilisateur($idUtilisateur);
575
		$nouvelOrdre = $this->obtenirNouvelOrdrePourUtilisateur($idUtilisateur);
631
		if ($nouvelOrdre !== false) {
576
		if ($nouvelOrdre !== false) {
632
			if (file_exists($cheminImage)) {
577
			if (file_exists($cheminImage)) {
633
				$extracteurMetadonnees = new ExtracteurMetadonnees();
578
				$extracteurMetadonnees = new ExtracteurMetadonnees();
634
				$metadonnees = $extracteurMetadonnees->extraireMetadonnees($cheminImage) ;
579
				$metadonnees = $extracteurMetadonnees->extraireMetadonnees($cheminImage) ;
635
				if ($metadonnees !== false) {
580
				if ($metadonnees !== false) {
636
					$infosImage = $metadonnees;
581
					$infosImage = $metadonnees;
-
 
582
					$infosImage['ce_observation'] = $id_obs;
637
					$infosImage['ordre'] = $nouvelOrdre;
583
					$infosImage['ordre'] = $nouvelOrdre;
638
					$infosImage['publiable_eflore'] = 'false';
-
 
639
					$infosImage['nom_original'] = $nomFichierImage;
584
					$infosImage['nom_original'] = $nomFichierImage;
640
					$infosImage['ce_utilisateur'] = $idUtilisateur;
585
					$infosImage['ce_utilisateur'] = $idUtilisateur;
641
					$infosImage['courriel_utilisateur'] = $utilisateur['courriel'];
586
					$infosImage['courriel_utilisateur'] = $utilisateur['courriel'];
642
					$infosImage['nom_utilisateur'] = $utilisateur['nom'];
587
					$infosImage['nom_utilisateur'] = $utilisateur['nom'];
643
					$infosImage['prenom_utilisateur'] = $utilisateur['prenom'];
588
					$infosImage['prenom_utilisateur'] = $utilisateur['prenom'];
644
					$infosImage['md5'] = md5_file($cheminImage);
589
					$infosImage['md5'] = md5_file($cheminImage);
-
 
590
					$infosImage['date_creation'] = 'NOW()';
-
 
591
					$infosImage['date_modification'] = 'NOW()';
-
 
592
					$infosImage['date_liaison'] = 'NOW()';
-
 
593
					$infosImage['date_transmission'] = 'NOW()';
-
 
594
					$infosImage['transmission'] = '1';
645
					$this->debug[] = 'Nom fichier img meta :'.$nomFichierImage;
595
					$this->debug[] = 'Nom fichier img meta :'.$nomFichierImage;
646
					$requete = $this->construireRequeteInsertionImage($infosImage);
596
					$requete = $this->construireRequeteInsertionImage($infosImage);
647
					$resultat = Cel::db()->executer($requete);
597
					$resultat = Cel::db()->executer($requete);
648
					if ($resultat !== false) {
598
					if ($resultat !== false) {
649
						$idImage = $this->obtenirIdImagePourIdentifiantEtOrdre($idUtilisateur, $nouvelOrdre);
599
						$idImage = $this->obtenirIdImagePourIdentifiantEtOrdre($idUtilisateur, $nouvelOrdre);
Line 721... Line 671...
721
		return $id_image;
671
		return $id_image;
Line 722... Line 672...
722
 
672
 
Line 723... Line 673...
723
	}
673
	}
724
 
674
 
725
	private function construireRequeteInsertionImage($informations) {
675
	private function construireRequeteInsertionImage($informations) {
726
		$champs = array('date_creation');
-
 
727
		$valeurs = array('CURRENT_TIMESTAMP()');
676
		$champs = array();
728
 
677
		$valeurs = array();
729
		foreach ($informations as $champ => $valeur) {
678
		foreach ($informations as $champ => $valeur) {
-
 
679
			$champs[] = $champ;
730
			$champs[] = $champ;
680
			if (is_null($valeur)) {
731
			$valeurs[] = is_null($valeur) ? 'NULL' : Cel::db()->proteger($valeur);
681
				$valeurs[] = 'NULL';
-
 
682
			} else if ($valeur === 'NOW()') {
732
			if ($champ == 'date_creation' && $valeur != 'NULL') {
683
				$valeurs[] = $valeur;
733
				$champs[] = 'date_creation';
684
			} else {
734
				$valeurs[] = Cel::db()->proteger($valeur);
685
				$valeurs[] = Cel::db()->proteger($valeur);
735
			}
686
			}
736
		}
687
		}
737
		$champs = implode(', ', $champs);
-
 
738
		$valeurs = implode(', ', $valeurs);
-
 
Line -... Line 688...
-
 
688
		$champsConcat = implode(', ', $champs);
-
 
689
		$valeursConcat = implode(', ', $valeurs);
739
 
690
 
740
		$requete = "INSERT INTO cel_images ($champs) VALUES ($valeurs) ";
691
		$requete = "INSERT INTO cel_images ($champsConcat) VALUES ($valeursConcat) ".
741
 
-
 
742
		return $requete;
-
 
743
	}
692
			' -- '.__FILE__.':'.__LINE__;
-
 
693
		return $requete;
744
}
694
	}