From 3a0dc389417f37ac47bd964e9e583d4fa7e220e2 Mon Sep 17 00:00:00 2001
From: "maieul@maieul.net" <>
Date: Mon, 16 Sep 2013 19:13:05 +0000
Subject: [PATCH] =?UTF-8?q?possibilit=C3=A9=20d'exclure=20certains=20champ?=
 =?UTF-8?q?=20de=20l'analyse=20(utile=20notamment=20lorsque=20on=20des=20c?=
 =?UTF-8?q?hamps=20qui=20sont=20uniquement=20l=C3=A0=20pour=20conditionner?=
 =?UTF-8?q?=20l'affichage=20d'autres=20champs)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 action/exporter_analyse_reponses.php | 9 +++++++--
 lang/formidable_fr.php               | 2 ++
 modeles/formulaire_analyse.html      | 9 ++++++---
 paquet.xml                           | 2 +-
 traiter/enregistrement.yaml          | 9 ++++++++-
 5 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/action/exporter_analyse_reponses.php b/action/exporter_analyse_reponses.php
index 5175de85..04b73614 100755
--- a/action/exporter_analyse_reponses.php
+++ b/action/exporter_analyse_reponses.php
@@ -25,9 +25,14 @@ function action_exporter_analyse_reponses_dist($arg=null) {
 		include_spip('classes/facteur');
 		include_spip('inc/filtres');
         $reponses_completes = array();
-
+        
         $saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false);
-
+        
+        // exclure les champs non analysés
+        $traitement = unserialize($formulaire['traitements']);
+        foreach (explode("|",$traitement['enregistrement']['analyse_exclure_champs']) as $exclure){
+            unset($saisies[$exclure]);
+        }
 		$res = sql_select(
             array('nom, valeur'),
 
diff --git a/lang/formidable_fr.php b/lang/formidable_fr.php
index bad61524..35381c84 100644
--- a/lang/formidable_fr.php
+++ b/lang/formidable_fr.php
@@ -7,6 +7,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
 	// A
 	'analyse_avec_reponse' => 'Réponses non-vide',
+    'analyse_exclure_champs_label'=>'Champs à exclure',
+    'analyse_exclure_champs_explication'=>'Mettre le nom des champs à exclure dans l\'analyse, séparé par des <code>|</code>. Ne pas mettre les <code>@</code>.',
 	'analyse_exporter' => 'Exporter l\'analyse',
 	'analyse_longueur_moyenne' => 'Longueur moyenne en nombre de mots',
 	'analyse_nb_reponses_total' => '@nb@ personnes ont répondu à ce formulaire.',
diff --git a/modeles/formulaire_analyse.html b/modeles/formulaire_analyse.html
index fb8050e3..95c93901 100644
--- a/modeles/formulaire_analyse.html
+++ b/modeles/formulaire_analyse.html
@@ -1,10 +1,11 @@
 <BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
+#SET{exclure_champs,#TRAITEMENTS|unserialize|table_valeur{enregistrement}|table_valeur{analyse_exclure_champs}|explode{|}}
 <div class='formidable_analyse'>
-[(#REM) On fait un tableau qui contient toutes les réponses, classées par champ ]
+[(#REM) On fait un tableau qui contient toutes les réponses, classées par champ, sauf pour les champs qui sont à ne pas prendre en compte ]
 #SET{valeurs,#ARRAY}
 #SET{reponses_total,0}
 <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}>
-<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}{nom ?= #ENV{nom}}>
+<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}{nom ?= #ENV{nom}}{!nom IN #GET{exclure_champs}}>
 #SET_MERGE{liste_valeurs, #GET{valeurs}|table_valeur{#NOM}|sinon{#ARRAY}, #ARRAY{0,#VALEUR|tenter_unserialize}}
 #SET_MERGE{valeurs, #ARRAY{#NOM,#GET{liste_valeurs}}}
 </BOUCLE_champs>
@@ -20,7 +21,9 @@
 <BOUCLE_saisies(POUR){tableau #SAISIES|unserialize|saisies_lister_par_nom}>
 [(#VAL{saisie}|array_key_exists{#VALEUR}|oui)
   [(#CLE|=={#ENV{nom,#CLE}}|oui)
-	[(#VALEUR|formidable_analyser_saisie{#GET{valeurs}, #GET{reponses_total}})]
+	[(#CLE|in_array{#GET{exclure_champs}}|non)
+        [(#VALEUR|formidable_analyser_saisie{#GET{valeurs}, #GET{reponses_total}})]
+    ]
   ]
 ]
 </BOUCLE_saisies>
diff --git a/paquet.xml b/paquet.xml
index 33390c9b..74489145 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,7 +1,7 @@
 <paquet
 	prefix="formidable"
 	categorie="communication"
-	version="1.6.2"
+	version="1.7.0"
 	etat="test"
 	compatibilite="[3.0.0-dev;3.0.*]"
 	logo="images/formidable-64.png"
diff --git a/traiter/enregistrement.yaml b/traiter/enregistrement.yaml
index 1643db31..4cbf1c1d 100644
--- a/traiter/enregistrement.yaml
+++ b/traiter/enregistrement.yaml
@@ -58,4 +58,11 @@ options:
       datas:
         posteriori: '<:forum:bouton_radio_modere_posteriori:>'
         priori: '<:forum:bouton_radio_modere_priori:>'
-      defaut: 'posteriori'
\ No newline at end of file
+      defaut: 'posteriori'
+  -
+    saisie: 'textarea'
+    options:
+      nom: 'analyse_exclure_champs'
+      label: '<:formidable:analyse_exclure_champs_label:>'
+      explication: '<:formidable:analyse_exclure_champs_explication:>'
+      rows: 4
\ No newline at end of file
-- 
GitLab