From afbee44993e6c5c6ae80f7e46f5eba72bd523fab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr>
Date: Mon, 5 Oct 2015 20:51:17 +0200
Subject: [PATCH] Fix #3667 checkbox extrafields on edit

For actions and members.
---
 htdocs/adherents/type.php   | 11 ++++++++++-
 htdocs/comm/action/card.php | 11 ++++++++++-
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php
index 14bbcb8e854..1819925e723 100644
--- a/htdocs/adherents/type.php
+++ b/htdocs/adherents/type.php
@@ -678,7 +678,16 @@ if ($rowid > 0)
 			print '<br><br><table class="border" width="100%">';
 			foreach($extrafields->attribute_label as $key=>$label)
 			{
-				$value=(isset($_POST["options_".$key])?$_POST["options_".$key]:(isset($adht->array_options['options_'.$key])?$adht->array_options['options_'.$key]:''));
+				if (isset($_POST["options_" . $key])) {
+					if (is_array($_POST["options_" . $key])) {
+						// $_POST["options"] is an array but following code expects a comma separated string
+						$value = implode(",", $_POST["options_" . $key]);
+					} else {
+						$value = $_POST["options_" . $key];
+					}
+				} else {
+					$value = $adht->array_options["options_" . $key];
+				}
 				print '<tr><td width="30%">'.$label.'</td><td>';
 				print $extrafields->showInputField($key,$value);
 				print "</td></tr>\n";
diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php
index 2e35b8004f0..c011717c0cc 100644
--- a/htdocs/comm/action/card.php
+++ b/htdocs/comm/action/card.php
@@ -1202,7 +1202,16 @@ if ($id > 0)
 			print '<br><br><table class="border" width="100%">';
 			foreach($extrafields->attribute_label as $key=>$label)
 			{
-				$value=(isset($_POST["options_".$key])?$_POST["options_".$key]:(isset($object->array_options['options_'.$key])?$object->array_options['options_'.$key]:''));
+				if (isset($_POST["options_" . $key])) {
+					if (is_array($_POST["options_" . $key])) {
+						// $_POST["options"] is an array but following code expects a comma separated string
+						$value = implode(",", $_POST["options_" . $key]);
+					} else {
+						$value = $_POST["options_" . $key];
+					}
+				} else {
+					$value = $object->array_options["options_" . $key];
+				}
 				print '<tr><td width="30%">'.$label.'</td><td>';
 				print $extrafields->showOutputField($key,$value);
 				print "</td></tr>\n";
-- 
GitLab