Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2402 → Rev 2403

/trunk/jrest/services/CelWidgetExport.php
63,6 → 63,8
private $format = 'csv';
public $id_utilisateur = null;
public $export_prive = false;
 
// un cache, initialisé par certaines fonctions de préchargement, à la manière
// de ce qui est fait par FormateurGroupeColonne
91,9 → 93,11
private function getCalcul() {
$criteres = $this->traiterParametresAutorises($_GET);
 
$criteres['transmission'] = 1;
if($this->doitEtPeutExporterObsPrivees($criteres)) {
// Définit si l'on exporte les obs privées ainsi que les champs étendus privés
$this->export_prive = $this->doitEtPeutExporterObsPrivees($criteres);
if($this->export_prive) {
unset($criteres['transmission']);
$this->id_utilisateur = $criteres['id_utilisateur'];
}
155,7 → 159,9
if(!in_array($this->format, array('pdf','csv','xls'))) die('erreur: format invalide');
 
$criteres['transmission'] = 1;
if($this->doitEtPeutExporterObsPrivees($criteres)) {
// Définit si l'on exporte les obs privées ainsi que les champs étendus privés
$this->export_prive = $this->doitEtPeutExporterObsPrivees($criteres);
if($this->export_prive) {
unset($criteres['transmission']);
$this->id_utilisateur = $criteres['ce_utilisateur'];
}
/trunk/jrest/services/CelSyndicationObservation.php
425,6 → 425,8
$champs_etendus = $gestion_champs_etendus->consulterParLots($ids_observations);
if(!empty($champs_etendus)) {
$this->catalogue_cles_labels_champs_etendus = $gestion_champs_etendus->consulterCatalogueChampsEtendusPredefinis(true);
// afin de simplifier les erreurs de majuscules et minuscules
$this->catalogue_cles_labels_champs_etendus = array_change_key_case($this->catalogue_cles_labels_champs_etendus);
}
$this->auteurs = $this->creerAuteurs($identifiants);
foreach ($elements as $element) {
545,21 → 547,38
private function creerDescriptionChampsEtendus($obs, $item) {
$champs_etendus = '';
foreach($obs['obs_etendue'] as $cle => &$champ) {
if(isset($this->catalogue_cles_labels_champs_etendus[$champ->cle])) {
$label = $this->catalogue_cles_labels_champs_etendus[$champ->cle]['label'];
} else {
$label = preg_replace("/(?<=\\w)(?=[A-Z])/"," $1", $champ->cle);
$label = trim($label);
$label = $label;
if($this->doitAfficherChampEtendu($champ->cle, $this->catalogue_cles_labels_champs_etendus)) {
if(isset($this->catalogue_cles_labels_champs_etendus[$champ->cle])) {
$label = $this->catalogue_cles_labels_champs_etendus[$champ->cle]['label'];
} else {
$label = preg_replace("/(?<=\\w)(?=[A-Z])/"," $1", $champ->cle);
$label = trim($label);
$label = $label;
}
$champs_etendus .= '<li>'.$this->nePasInterpreterXml($label.' : '.$champ->valeur).' </li>';
}
$champs_etendus .= '<li>'.$this->nePasInterpreterXml($label.' : '.$champ->valeur).' </li>';
}
 
if($champs_etendus != '') {
$champs_etendus = '<li> Champs supplémentaires : <ul>'.$champs_etendus.'</ul></li>';
}
 
return $champs_etendus;
}
private function doitAfficherChampEtendu($cle, $catalogue) {
// Suppression des nombres à la fin de la chaines dans le cas des clés
// "multiples" et mise en minuscule
$cle_simplifiee = preg_replace("/\d+$/","",$cle);
$cle_simplifiee = strtolower(rtrim($cle_simplifiee, ":"));
// Un champ est affichable s'il n'est pas au catalogue ou bien
// s'il n'est pas marqué privé dans celui-ci
$affichable = !isset($catalogue[$cle_simplifiee]) ||
$catalogue[$cle_simplifiee]['options']['prive'] != 1;
return $affichable;
}
 
private function creerCategorie($element) {
$categorie = '';
/trunk/jrest/lib/FormateurGroupeColonne.php
742,10 → 742,32
// Quand les données sont prêtes, on les fusionne
$ligne = array_merge($ligne, $donneesBF);
}
 
static function champsEtendus_preload($cel, $obsids) {
$gestion_champs_etendus = new GestionChampsEtendus($cel->config, 'obs');
$gestion_champs_etendus = new GestionChampsEtendus($cel->config, 'obs');
$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($obsids);
// Supprime les champs étendus considérés comme privés dans le cas de l'export public en chargeant
// le catalogue et en excluant ceux qui sont explicitement privés
if(!$cel->export_prive) {
$indices_a_supprimer = array();
$catalogue_champs_etendus = $gestion_champs_etendus->consulterCatalogueChampsEtendusPredefinis();
foreach($catalogue_champs_etendus as $champ_catalogue) {
if($champ_catalogue['options']['prive'] == 1) {
// supprime les ":" suivis de nombres dans le cas de champs étendus multiples
// (ils sont de la forme maCleDeChamp:1, maCleDeChamp:2 etc...)
$entrees = preg_grep("/:\d+$/", $colonnes_champs_supp_par_obs);
$indices_a_supprimer = array_merge($indices_a_supprimer, array_keys($entrees));
}
}
// les champs étendus sont renvoyés dans l'export suivant les colonnes présentes dans ce tableau
// les éliminer de la liste des colonnes suffit à les faire ignorer par l'export
foreach($indices_a_supprimer as $indice_supp) {
unset($colonnes_champs_supp_par_obs[$indice_supp]);
}
}
// ces deux lignes réordonnent l'ordre des colonnes des champs étendus en fonction de l'ordre (très spécifique)
// de self::$ordre_champ_etendus_Florileges, les champs non-mentionnés sont ajoutés à la fin.
$colonnes_champs_supp_par_obs = self::sortArrayByArray(array_flip($colonnes_champs_supp_par_obs),
/trunk/jrest/lib/GestionChampsEtendus.php
245,7 → 245,7
*/
public function consulterGroupesChampsEtendusPredefinis() {
$groupes = array();
$requete = "SELECT cc.cle as cle_groupe, cc.label as nom_groupe, ccc.cle as cle_champ, ccc.label as label_champ, ccc.invisible ".
$requete = "SELECT cc.cle as cle_groupe, cc.label as nom_groupe, ccc.cle as cle_champ, ccc.label as label_champ, ccc.invisible, ccc.prive ".
"FROM `cel_catalogue_champs_etendus` cc ".
"INNER JOIN cel_catalogue_champs_etendus_liaison cl ON cc.cle = cl.groupe ".
"INNER JOIN cel_catalogue_champs_etendus ccc ON ccc.cle = cl.champ";
278,7 → 278,9
$infos_groupe['champs'][] = array(
'cle' => $groupe_champ['cle_champ'],
'label' => $groupe_champ['label_champ'],
'options' => array('invisible' => $groupe_champ['invisible'])
'options' => array('invisible' => $groupe_champ['invisible'],
'prive' => $groupe_champ['prive']
)
);
}
296,7 → 298,7
* Renvoie le catalogue des champs étendus
*/
public function consulterCatalogueChampsEtendusPredefinis($ordonner_par_cle = false) {
$requete = "SELECT cle, label, invisible ".
$requete = "SELECT cle, label, invisible, prive ".
"FROM cel_catalogue_champs_etendus cc ";
$catalogue = Cel::db()->executerRequete($requete);
306,7 → 308,9
$champ_fmt = array(
'cle' => $champ['cle'],
'label' => $champ['label'],
'options' => array('invisible' => $champ['invisible'])
'options' => array('invisible' => $champ['invisible'],
'prive' => $champ['prive']
)
);
if($ordonner_par_cle) {
$infos_champs[$champ_fmt['cle']] = $champ_fmt;
326,6 → 330,8
* @return string la clé correspondante
*/
public function transformerLabelEnCle($label) {
//TODO: cette fonction est elle encore pertinente
// maintenant que la notion de label est supprimée ?
$cle = strtolower(trim($label));
 
// Suppression des mots inutiles