From de815b03ab0aeb3d33703cdaed5411e6980a86ee Mon Sep 17 00:00:00 2001
From: "maieul@maieul.net" <>
Date: Mon, 29 Oct 2018 17:33:46 +0000
Subject: [PATCH] =?UTF-8?q?am=C3=A9lioration=20drastique=20de=20formidable?=
 =?UTF-8?q?=5Ftableau=5Fvaleurs=5Fsaisies():=20-=20suppression=20d'un=20co?=
 =?UTF-8?q?de=20mort=20sur=20test=20de=20valeur=20brute=20ou=20pas=20brute?=
 =?UTF-8?q?,=20puisque=20par=20d=C3=A9faut=20renvoyait=20les=20deux,=20le?=
 =?UTF-8?q?=20test=20avait=20lieu=20en=20amont=20-=20pour=20d=C3=A9termine?=
 =?UTF-8?q?r=20la=20valeur=20humaine,=20on=20se=20base=20d=C3=A9sormais=20?=
 =?UTF-8?q?sur=20saisie-vues/xxx,=20ce=20qui=20assure=20d'avoir=20une=20va?=
 =?UTF-8?q?leur=20humaine=20aussi=20lorsque=20c'est=20pr=C3=A9vu=20mais=20?=
 =?UTF-8?q?qu'il=20n'y=20a=20pas=20d'argument=20datas=20=C3=A0=20la=20sais?=
 =?UTF-8?q?ie,=20typiquement=20pour=20les=20saisies=20de=20type=20evenemen?=
 =?UTF-8?q?ts=20(plugin=20agenda)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 formidable_fonctions.php | 31 +++++++++++++++++++--------
 inc/formidable.php       | 45 ++++++++++------------------------------
 paquet.xml               |  2 +-
 3 files changed, 34 insertions(+), 44 deletions(-)

diff --git a/formidable_fonctions.php b/formidable_fonctions.php
index 2dbbcb92..ffccc2be 100644
--- a/formidable_fonctions.php
+++ b/formidable_fonctions.php
@@ -152,15 +152,7 @@ function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire = null,
 	$valeurs = array();
 	foreach ($modeles_vars[$modele_resume] as $var) {
 		$valeur = calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $var, 'valeur_uniquement', '');
-		// on ne veut pas du \n de PtoBR, mais on ne veut pas non plus faire un trim
-		$valeur = str_ireplace('</p>', '', $valeur);
-		$valeur = PtoBR($valeur);
-		if (strpos($valeur, '</li>')) {
-			$valeur = explode('</li>', $valeur);
-			array_pop($valeur);
-			$valeur = implode(', ', $valeur);
-		}
-		$valeur = supprimer_tags($valeur);
+		$valeur = formidable_nettoyer_saisie_vue($valeur);
 		$valeurs["@$var@"] = $valeur;
 	}
 	return pipeline(
@@ -177,6 +169,27 @@ function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire = null,
 	);
 }
 
+/**
+ * Supprimer les balise d'une vue de saisies
+ * sans pour autant faire un trim
+ * @param str $valeur
+ * @return str
+**/
+function formidable_nettoyer_saisie_vue($valeur) {
+	// on ne veut pas du \n de PtoBR, mais on ne veut pas non plus faire un trim
+	$valeur = str_ireplace('</p>', '', $valeur);
+	$valeur = PtoBR($valeur);
+	if (strpos($valeur, '</li>')) {
+		$valeur = explode('</li>', $valeur);
+		array_pop($valeur);
+		$valeur = implode(', ', $valeur);
+	}
+	$valeur = supprimer_tags($valeur);
+	$valeur = str_replace("\n","",$valeur);
+	$valeur = str_replace("\t","",$valeur);
+	return $valeur;
+}
+
 /**
  * Si une saisie est de type 'fichiers'
  * insère dans la description du résultat de cette saisie
diff --git a/inc/formidable.php b/inc/formidable.php
index bdfb2b99..039b3416 100644
--- a/inc/formidable.php
+++ b/inc/formidable.php
@@ -512,40 +512,17 @@ function formidable_tableau_valeurs_saisies($saisies) {
 		} else {
 			// On récupère la valeur postée
 			$valeurs[$champ] = _request($champ);
-
-			// Le champ est un tableau objet ? on le parse
-			if (is_array($valeurs[$champ])) {
-				// si on ne demande pas la valeur brute
-				if (
-					isset($saisies_par_nom[$champ]['options']['datas'])
-					and $labels_data = saisies_aplatir_tableau(saisies_chaine2tableau($saisies_par_nom[$champ]['options']['datas']))
-					and !$options['champ_sujet_valeurs_brutes']
-				) {
-					$valeurs_libellees[$champ] = array();
-					foreach ($valeurs[$champ] as $valeur) {
-						$valeurs_libellees[$champ][] = $labels_data[$valeur];
-					}
-					$valeurs_libellees[$champ] =  implode($valeurs_libellees[$champ], ",");
-				}
-				// Sinon on utilise directement la valeur postée
-				else {
-					$valeurs_libellees[$champ] = implode($valeurs[$champ],",");
-				}
-				// Si la saisie a une valeur unique
-			} else {
-				// Si la saisie est une liste de choix avec des clés et labels humains, on cherche le label humain
-				if (
-					isset($saisies_par_nom[$champ]['options']['datas'])
-					and $labels_data = saisies_aplatir_tableau(saisies_chaine2tableau($saisies_par_nom[$champ]['options']['datas']))
-					and isset($labels_data[$valeurs[$champ]])
-				) {
-					$valeurs_libellees[$champ] = $labels_data[$valeurs[$champ]];
-				}
-				// Sinon on utilise directement la valeur postée
-				else {
-					$valeurs_libellees[$champ] = $valeurs[$champ];
-				}
-			}
+			$valeurs_libellees[$champ] = formidable_nettoyer_saisie_vue(recuperer_fond(
+				'saisies-vues/_base',
+				array_merge(
+					array(
+						'type_saisie' => $saisies_par_nom[$champ]['saisie'],
+						'valeur' => $valeurs[$champ],
+						'valeur_uniquement' => 'oui',
+					),
+					$saisies_par_nom[$champ]['options']
+				)
+			));
 		}
 	}
 	return array($valeurs, $valeurs_libellees);
diff --git a/paquet.xml b/paquet.xml
index a2cc2e42..eb8244b7 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,7 +1,7 @@
 <paquet
 	prefix="formidable"
 	categorie="communication"
-	version="3.22.2"
+	version="3.22.3"
 	etat="stable"
 	compatibilite="[3.0.0;3.2.*]"
 	logo="images/formidable-64.png"
-- 
GitLab