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