From 92d614d16803ae8705191379b4ec33a87e3101cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=AFeul=20Rouquette?= <maieul@maieul.net>
Date: Thu, 30 Jan 2020 21:34:58 +0100
Subject: [PATCH] =?UTF-8?q?Modification=20d'une=20r=C3=A9ponse=20:=20avant?=
 =?UTF-8?q?=20d'enregistrer=20les=20nouveaux=20r=C3=A9sultat,=20effacer=20?=
 =?UTF-8?q?TOUT=20les=20anciens=20r=C3=A9sultats,=20et=20pas=20uniquement?=
 =?UTF-8?q?=20pour=20les=20champs=20qui=20viennent=20d'=C3=AAtre=20post?=
 =?UTF-8?q?=C3=A9s.=20En=20effet,=20les=20nouvelles=20valeurs=20peuvent=20?=
 =?UTF-8?q?conditionner=20le=20non-affichage=20d'un=20champ=20pour=20laque?=
 =?UTF-8?q?lle=20une=20valeur=20avait=20=C3=A9t=C3=A9=20enregistr=C3=A9e?=
 =?UTF-8?q?=20avant.=20Dans=20ce=20cas=20il=20faut=20aussi=20effacer=20cet?=
 =?UTF-8?q?te=20valeur.=20Exemple=20-=20Le=20formulaire=20est=20configur?=
 =?UTF-8?q?=C3=A9=20de=20sorte=20que=20si=20la=20case=5F1=20est=20coch?=
 =?UTF-8?q?=C3=A9e,=20alors=20afficher=20le=20champ=20input=5F1.=20-=20Pre?=
 =?UTF-8?q?mier=20enregistrement=20de=20la=20r=C3=A9ponse=20:=20case=5F1?=
 =?UTF-8?q?=20coch=C3=A9e,=20champ=20input=5F1=20valant=20'toto'=20-=20Mod?=
 =?UTF-8?q?ification=20de=20la=20r=C3=A9ponse=20:=20case=5F1=20d=C3=A9coch?=
 =?UTF-8?q?=C3=A9e.=20=20=20-=20Avant=20ce=20commit,=20la=20valeur=20'toto?=
 =?UTF-8?q?'=20restait=20associ=C3=A9e=20=C3=A0=20case=5F1=20en=20base,=20?=
 =?UTF-8?q?=20=20faussant=20tableau=20d'analyse=20et=20autre=20=20=20-=20a?=
 =?UTF-8?q?pr=C3=A8s=20ce=20commit,=20ce=20n'est=20plus=20le=20cas?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 paquet.xml                 | 2 +-
 traiter/enregistrement.php | 8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/paquet.xml b/paquet.xml
index 021ae1a3..738df546 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,7 +1,7 @@
 <paquet
 	prefix="formidable"
 	categorie="communication"
-	version="4.0.2"
+	version="4.0.3"
 	etat="stable"
 	compatibilite="[3.1.0;3.2.*]"
 	logo="images/formidable-64.png"
diff --git a/traiter/enregistrement.php b/traiter/enregistrement.php
index d3d617d9..7b43db96 100644
--- a/traiter/enregistrement.php
+++ b/traiter/enregistrement.php
@@ -127,12 +127,14 @@ function traiter_enregistrement_dist($args, $retours) {
 		}
 		// S'il y a bien des choses à modifier
 		if ($champs) {
-			// On supprime d'abord les champs
+			// On supprime d'abord TOUT les champs, y compris ceux qui ne viennent pas d'être envoyé.
+			// En effet, ils pouvaient y avoir des champs remplis lors du précédent enregistrement
+			// Qui ne le sont plus au nouvel enregistrement, car la condition d'affichage (afficher_si) n'est plus remplie
+			// Dans ce cas il ne faut pas qu'ils continuent à être stockés en base, car cela peut fausser les affichages divers (type tableaux et autres)
 			sql_delete(
 				'spip_formulaires_reponses_champs',
 				array(
-					'id_formulaires_reponse = '.$id_formulaires_reponse,
-					sql_in('nom', $champs)
+					'id_formulaires_reponse = '.$id_formulaires_reponse
 				)
 			);
 
-- 
GitLab