From c84a088203f41e7e4168b245a22e6e5bcfac13a3 Mon Sep 17 00:00:00 2001 From: "nicod@lerebooteux.fr" <> Date: Tue, 19 Mar 2019 20:50:44 +0000 Subject: [PATCH] =?UTF-8?q?Permettre=20en=20option=20de=20ne=20pas=20joind?= =?UTF-8?q?re=20les=20fichiers=20dans=20un=20export=20de=20r=C3=A9ponses?= =?UTF-8?q?=20:=20sur=20certains=20gros=20formulaires=20il=20vaut=20mieux?= =?UTF-8?q?=20t=C3=A9l=C3=A9charger=20un=20simple=20csv=20et=20r=C3=A9cup?= =?UTF-8?q?=C3=A9rer=20les=20fichiers=20par=20FTP=20par=20exemple.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formulaires/exporter_formulaire_reponses.html | 6 ++++++ formulaires/exporter_formulaire_reponses.php | 21 +++++++++++++------ lang/formidable_fr.php | 2 ++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/formulaires/exporter_formulaire_reponses.html b/formulaires/exporter_formulaire_reponses.html index 9840488c..706cb860 100644 --- a/formulaires/exporter_formulaire_reponses.html +++ b/formulaires/exporter_formulaire_reponses.html @@ -32,6 +32,12 @@ defaut=valeur } )] + [(#ENV{fichiers}|oui) + [(#SAISIE{case, ignorer_fichiers, + label=<:formidable:exporter_formulaire_ignorer_fichiers_explication_label:>, + label_case=<:formidable:exporter_formulaire_ignorer_fichiers_label:>, + })] + ] [(#SAISIE{date, date_debut, label=<:formidable:exporter_formulaire_date_debut_label:> })] diff --git a/formulaires/exporter_formulaire_reponses.php b/formulaires/exporter_formulaire_reponses.php index 5766fde1..79f2f66d 100644 --- a/formulaires/exporter_formulaire_reponses.php +++ b/formulaires/exporter_formulaire_reponses.php @@ -13,6 +13,13 @@ function formulaires_exporter_formulaire_reponses_charger($id_formulaire = 0) { $contexte = array(); $contexte['id_formulaire'] = intval($id_formulaire); + // Vérifier si le formulaire dispose de champs "fichiers", pour proposer de ne pas les joindre à l'export + $saisies = sql_getfetsel('saisies','spip_formulaires','id_formulaire = '.intval($id_formulaire)); + $saisies_par_type = saisies_lister_par_type(unserialize($saisies), false); + if(isset($saisies_par_type['fichiers'])){ + $contexte['fichiers'] = true; + } + return $contexte; } @@ -36,17 +43,18 @@ function formulaires_exporter_formulaire_reponses_traiter($id_formulaire = 0) { $verifier = charger_fonction('verifier', 'inc/'); $verifier(_request('date_debut'), 'date', array('normaliser' => 'datetime'), $date_debut); $verifier(_request('date_fin'), 'date', array('normaliser' => 'datetime'), $date_fin); + $ignorer_fichiers = _request('ignorer_fichiers'); $cle_ou_valeur = _request('cle_ou_valeur'); $chemin = false; $content_type = ''; if (_request('type_export') == 'csv') { - $chemin = exporter_formulaires_reponses($id_formulaire, ',', $statut_reponses, $date_debut, $date_fin, $cle_ou_valeur); + $chemin = exporter_formulaires_reponses($id_formulaire, ',', $statut_reponses, $date_debut, $date_fin, $cle_ou_valeur, $ignorer_fichiers); if (pathinfo($chemin, PATHINFO_EXTENSION) === 'csv') { $content_type = "text/comma-separated-values; charset=" . $GLOBALS['meta']['charset']; } } elseif (_request('type_export') == 'xls') { - $chemin = exporter_formulaires_reponses($id_formulaire, 'TAB', $statut_reponses, $date_debut, $date_fin, $cle_ou_valeur); + $chemin = exporter_formulaires_reponses($id_formulaire, 'TAB', $statut_reponses, $date_debut, $date_fin, $cle_ou_valeur, $ignorer_fichiers); if (pathinfo($chemin, PATHINFO_EXTENSION) === 'xls') { $content_type = "text/comma-separated-values; charset=iso-8859-1"; } @@ -72,9 +80,10 @@ function formulaires_exporter_formulaire_reponses_traiter($id_formulaire = 0) { * @param string $date_debut * @param string $date_fin * @param string $cle_ou_valeur + * @param string $ignorer_fichiers * @return string|false Chemin du fichier d’export CSV, XLS ou ZIP */ -function exporter_formulaires_reponses($id_formulaire, $delim = ',', $statut_reponses = 'publie', $date_debut = '', $date_fin = '',$cle_ou_valeur = 'valeur') { +function exporter_formulaires_reponses($id_formulaire, $delim = ',', $statut_reponses = 'publie', $date_debut = '', $date_fin = '', $cle_ou_valeur = 'valeur', $ignorer_fichiers = '') { $exporter_csv = charger_fonction('exporter_csv', 'inc/', true); if (!$exporter_csv) { return false; @@ -85,7 +94,7 @@ function exporter_formulaires_reponses($id_formulaire, $delim = ',', $statut_rep return false; } - list($reponses_completes, $saisies_fichiers) = preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses, $cle_ou_valeur); + list($reponses_completes, $saisies_fichiers) = preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses, $cle_ou_valeur, $ignorer_fichiers); if (!$reponses_completes) { return false; } @@ -126,7 +135,7 @@ function obtenir_formulaire_reponses($id_formulaire, $statut_reponses = 'publie' } -function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses, $cle_ou_valeur = 'valeur') { +function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses, $cle_ou_valeur = 'valeur', $ignorer_fichiers = '') { include_spip('inc/puce_statut'); include_spip('inc/saisies'); include_spip('facteur_fonctions'); @@ -230,7 +239,7 @@ function preparer_formulaire_reponses($formulaire, $reponses, $statut_reponses, if ($saisie['saisie'] != 'explication') { // Saisie de type fichier ? - if ($saisie['saisie'] == 'fichiers') { + if (!$ignorer_fichiers && $saisie['saisie'] == 'fichiers') { $_valeurs = $tenter_unserialize($valeurs[$nom]); //tester s'il y a des saisies parmi les fichiers if (is_array($_valeurs) and $_valeurs) { diff --git a/lang/formidable_fr.php b/lang/formidable_fr.php index 16a0fda4..e03c780f 100644 --- a/lang/formidable_fr.php +++ b/lang/formidable_fr.php @@ -101,6 +101,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'exporter_formulaire_date_erreur' => 'La date de début doit être antérieure à la date de fin', 'exporter_formulaire_date_fin_label' => 'Jusqu’au (inclus)', 'exporter_formulaire_format_label' => 'Format du fichier', + 'exporter_formulaire_ignorer_fichiers_explication_label' => 'Ce formulaire contient des champs de fichiers, préférez vous ne pas les joindre à l\'export et les télécharger par exemple par FTP ?', + 'exporter_formulaire_ignorer_fichiers_label' => 'Ne pas joindre les fichiers', 'exporter_formulaire_statut_label' => 'Réponses', // F -- GitLab