From 38f2759c5fcef1d7dfd3fe4f904fefb076c9d7eb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 23 Oct 2019 09:08:53 +0200 Subject: [PATCH] extension config vars are only save to settings.xml if a value is set previously even empty values has been saved, they just needed to be defined in the extension configuration. This may break extensions which do not check if a config var is set. --- inc/inc.ClassSettings.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 6eb59977d..5561d2fd4 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -1039,12 +1039,27 @@ class Settings { /* {{{ */ { // search XML node $extnode = $extnodes->addChild('extension'); - $this->setXMLAttributValue($extnode, 'name', $name); + $this->setXMLAttributValue($extnode, 'name', $name); + /* New code saves all parameters of the extension which have been set + * in configuration form. + */ + foreach($extension as $fieldname=>$confvalue) { + if($confvalue) { + $parameter = $extnode->addChild('parameter'); + $parameter[0] = isset($extension[$fieldname]) ? (is_array($extension[$fieldname]) ? implode(',', $extension[$fieldname]) : $extension[$fieldname]) : ''; + $this->setXMLAttributValue($parameter, 'name', $fieldname); + } + } + /* Old code saves those parameters listed in the configuration + * of the extension. + */ + /* foreach($GLOBALS['EXT_CONF'][$name]['config'] as $fieldname=>$conf) { $parameter = $extnode->addChild('parameter'); $parameter[0] = isset($extension[$fieldname]) ? (is_array($extension[$fieldname]) ? implode(',', $extension[$fieldname]) : $extension[$fieldname]) : ''; $this->setXMLAttributValue($parameter, 'name', $fieldname); } + */ } // foreach