| 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 |
}
|