Line 451... |
Line 451... |
451 |
|
451 |
|
452 |
static function getImages_preload($cel, $obsids) {
|
452 |
static function getImages_preload($cel, $obsids) {
|
453 |
if(!$obsids) return;
|
453 |
if(!$obsids) return;
|
454 |
$rec = Cel::db()->requeter(
|
454 |
$rec = Cel::db()->requeter(
|
455 |
sprintf("SELECT o.id_observation, GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i " .
|
455 |
sprintf("SELECT o.id_observation, GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i " .
|
456 |
"FROM cel_images i LEFT JOIN cel_obs_images oi ON (i.id_image = oi.id_image) LEFT JOIN cel_obs o ON (oi.id_observation = o.id_observation) " .
|
456 |
"FROM cel_images i LEFT JOIN cel_obs o ON (i.ce_observation = o.id_observation) " .
|
457 |
"WHERE o.ce_utilisateur = %d AND o.id_observation IN (%s) " .
|
457 |
"WHERE o.ce_utilisateur = %d AND o.id_observation IN (%s) " .
|
458 |
"GROUP BY id_observation",
|
458 |
"GROUP BY id_observation",
|
459 |
SEPARATEUR_IMAGES,
|
459 |
SEPARATEUR_IMAGES,
|
460 |
$cel->id_utilisateur,
|
460 |
$cel->id_utilisateur,
|
Line 469... |
Line 469... |
469 |
if(! $id_utilisateur) return NULL;
|
469 |
if(! $id_utilisateur) return NULL;
|
470 |
if(isset(self::$cache['getImages'][$obs['id_observation']]))
|
470 |
if(isset(self::$cache['getImages'][$obs['id_observation']]))
|
471 |
return self::$cache['getImages'][$obs['id_observation']];
|
471 |
return self::$cache['getImages'][$obs['id_observation']];
|
Line 472... |
Line 472... |
472 |
|
472 |
|
473 |
$rec = Cel::db()->requeter(
|
473 |
$rec = Cel::db()->requeter(
|
474 |
sprintf("SELECT GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i FROM cel_images i"
|
474 |
sprintf("SELECT GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i ".
|
475 |
." LEFT JOIN cel_obs_images oi ON (i.id_image = oi.id_image)"
|
475 |
"FROM cel_images i ".
|
476 |
." LEFT JOIN cel_obs o ON (oi.id_observation = o.id_observation)"
|
476 |
" LEFT JOIN cel_obs o ON (i.ce_observation = o.id_observation) ".
|
- |
|
477 |
"WHERE o.ce_utilisateur = %d ".
|
- |
|
478 |
" AND o.id_observation = %d ".
|
477 |
." WHERE o.ce_utilisateur = %d AND o.id_observation = %d LIMIT 1",
|
479 |
'LIMIT 1',
|
478 |
SEPARATEUR_IMAGES,
|
480 |
SEPARATEUR_IMAGES,
|
479 |
$id_utilisateur,
|
481 |
$id_utilisateur,
|
480 |
$obs['id_observation']));
|
482 |
$obs['id_observation']));
|
481 |
return $rec ? $rec[0]['i'] : NULL;
|
483 |
return $rec ? $rec[0]['i'] : NULL;
|
Line 649... |
Line 651... |
649 |
}
|
651 |
}
|
650 |
return TRUE;
|
652 |
return TRUE;
|
651 |
}
|
653 |
}
|
Line 652... |
Line 654... |
652 |
|
654 |
|
653 |
static function getNomCommun_v4($obs) {
|
655 |
static function getNomCommun_v4($obs) {
|
654 |
// Attention la fonction suppose que l'on ait fait appel à getNomCommun_preload avant
|
656 |
// Attention la fonction suppose que l'on ait fait appel à getNomCommun_preload avant
|
655 |
// d'être appelée
|
657 |
// d'être appelée
|
656 |
if(! $obs['nt']) return NULL;
|
658 |
if(! $obs['nt']) return NULL;
|
Line 657... |
Line 659... |
657 |
if(! self::referenceTableExiste()) return NULL;
|
659 |
if(! self::referenceTableExiste()) return NULL;
|
Line 693... |
Line 695... |
693 |
|
695 |
|
694 |
foreach($res as $v) {
|
696 |
foreach($res as $v) {
|
695 |
$data = $v;
|
697 |
$data = $v;
|
696 |
unset($data['referentiel']); // non nécessaire
|
698 |
unset($data['referentiel']); // non nécessaire
|
697 |
unset($data['num_nom_retenu']); // non nécessaire
|
699 |
unset($data['num_nom_retenu']); // non nécessaire
|
698 |
|
700 |
|
699 |
// Des fois les synonymes ont des valeurs pour baseflor et pas le nom retenu et vice versa
|
701 |
// Des fois les synonymes ont des valeurs pour baseflor et pas le nom retenu et vice versa
|
700 |
// on les fusionne pour avoir le maximum d'infos, en attendant de repenser la table référence
|
702 |
// on les fusionne pour avoir le maximum d'infos, en attendant de repenser la table référence
|
701 |
if(isset(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']])) {
|
703 |
if(isset(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']])) {
|
702 |
$orig = array_filter(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']], 'strlen');
|
704 |
$orig = array_filter(self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']], 'strlen');
|
703 |
$data = array_filter($data , 'strlen');
|
705 |
$data = array_filter($data , 'strlen');
|
704 |
$data = array_merge($orig, $data);
|
706 |
$data = array_merge($orig, $data);
|
705 |
}
|
707 |
}
|
706 |
|
708 |
|
707 |
self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']] = $data;
|
709 |
self::$cache['getBaseflor'][$v['referentiel'] . '-' . $v['num_nom_retenu']] = $data;
|
Line 708... |
Line 710... |
708 |
}
|
710 |
}
|
709 |
|
711 |
|
Line 710... |
Line 712... |
710 |
return NULL;
|
712 |
return NULL;
|
711 |
}
|
713 |
}
|
712 |
|
714 |
|
713 |
/**
|
715 |
/**
|
714 |
* Attention la fonction suppose que l'on ait fait appel à baseflor_preload avant
|
716 |
* Attention la fonction suppose que l'on ait fait appel à baseflor_preload avant
|
715 |
* d'être appelée
|
717 |
* d'être appelée
|
Line 740... |
Line 742... |
740 |
}
|
742 |
}
|
Line 741... |
Line 743... |
741 |
|
743 |
|
742 |
// Quand les données sont prêtes, on les fusionne
|
744 |
// Quand les données sont prêtes, on les fusionne
|
743 |
$ligne = array_merge($ligne, $donneesBF);
|
745 |
$ligne = array_merge($ligne, $donneesBF);
|
744 |
}
|
746 |
}
|
745 |
|
747 |
|
746 |
static function champsEtendus_preload($cel, $obsids) {
|
748 |
static function champsEtendus_preload($cel, $obsids) {
|
747 |
$gestion_champs_etendus = new GestionChampsEtendus($cel->config, 'obs');
|
749 |
$gestion_champs_etendus = new GestionChampsEtendus($cel->config, 'obs');
|
748 |
$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($obsids);
|
750 |
$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($obsids);
|
749 |
|
751 |
|
750 |
// Supprime les champs étendus considérés comme privés dans le cas de l'export public en chargeant
|
752 |
// Supprime les champs étendus considérés comme privés dans le cas de l'export public en chargeant
|
751 |
// le catalogue et en excluant ceux qui sont explicitement privés
|
753 |
// le catalogue et en excluant ceux qui sont explicitement privés
|
752 |
if(!$cel->export_prive) {
|
754 |
if(!$cel->export_prive) {
|
753 |
$indices_a_supprimer = array();
|
755 |
$indices_a_supprimer = array();
|
754 |
$catalogue_champs_etendus = $gestion_champs_etendus->consulterCatalogueChampsEtendusPredefinis();
|
756 |
$catalogue_champs_etendus = $gestion_champs_etendus->consulterCatalogueChampsEtendusPredefinis();
|
755 |
foreach($catalogue_champs_etendus as $champ_catalogue) {
|
757 |
foreach($catalogue_champs_etendus as $champ_catalogue) {
|
756 |
if($champ_catalogue['options']['prive'] == 1) {
|
758 |
if($champ_catalogue['options']['prive'] == 1) {
|
757 |
// Les champs étendus peuvent avoir des variantes lorsqu'ils apparaissent de multiples fois.
|
759 |
// Les champs étendus peuvent avoir des variantes lorsqu'ils apparaissent de multiples fois.
|
758 |
// Vont donc matcher monChamp mais aussi monChamp:1, monChamp:2 ou bien monChamp1, monChamp: etc...
|
760 |
// Vont donc matcher monChamp mais aussi monChamp:1, monChamp:2 ou bien monChamp1, monChamp: etc...
|
759 |
// pour plus de sécurité (ce filtra n'est affectué qu'une fois au début de l'export donc on ne s'en prive pas)
|
761 |
// pour plus de sécurité (ce filtra n'est affectué qu'une fois au début de l'export donc on ne s'en prive pas)
|
760 |
$entrees = preg_grep("/".$champ_catalogue['cle']."(?::?\d*)?$/", $colonnes_champs_supp_par_obs);
|
762 |
$entrees = preg_grep("/".$champ_catalogue['cle']."(?::?\d*)?$/", $colonnes_champs_supp_par_obs);
|
761 |
$indices_a_supprimer = array_merge($indices_a_supprimer, array_keys($entrees));
|
763 |
$indices_a_supprimer = array_merge($indices_a_supprimer, array_keys($entrees));
|
762 |
}
|
764 |
}
|
763 |
}
|
765 |
}
|
764 |
// les champs étendus sont renvoyés dans l'export suivant les colonnes présentes dans ce tableau
|
766 |
// les champs étendus sont renvoyés dans l'export suivant les colonnes présentes dans ce tableau
|
765 |
// les éliminer de la liste des colonnes suffit à les faire ignorer par l'export
|
767 |
// les éliminer de la liste des colonnes suffit à les faire ignorer par l'export
|
766 |
foreach($indices_a_supprimer as $indice_supp) {
|
768 |
foreach($indices_a_supprimer as $indice_supp) {
|
767 |
unset($colonnes_champs_supp_par_obs[$indice_supp]);
|
769 |
unset($colonnes_champs_supp_par_obs[$indice_supp]);
|
768 |
}
|
770 |
}
|
769 |
}
|
771 |
}
|
770 |
|
772 |
|
771 |
// ces deux lignes réordonnent l'ordre des colonnes des champs étendus en fonction de l'ordre (très spécifique)
|
773 |
// ces deux lignes réordonnent l'ordre des colonnes des champs étendus en fonction de l'ordre (très spécifique)
|
772 |
// de self::$ordre_champ_etendus_Florileges, les champs non-mentionnés sont ajoutés à la fin.
|
774 |
// de self::$ordre_champ_etendus_Florileges, les champs non-mentionnés sont ajoutés à la fin.
|
773 |
$colonnes_champs_supp_par_obs = self::sortArrayByArray(array_flip($colonnes_champs_supp_par_obs),
|
775 |
$colonnes_champs_supp_par_obs = self::sortArrayByArray(array_flip($colonnes_champs_supp_par_obs),
|
774 |
self::$ordre_champ_etendus_Florileges);
|
776 |
self::$ordre_champ_etendus_Florileges);
|