From 93f273a28778e5da8e51096f021d2dc1adbf4ef3 Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Fri, 10 Dec 2021 17:10:34 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B04384=20Fix=20PHP=20warning=20when=20deco?= =?UTF-8?q?ding=20formmanager=5Fdata=20when=20it=20is=20already=20in=20a?= =?UTF-8?q?=20PHP=20array=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../portal/src/Form/ObjectFormManager.php | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php b/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php index 724e68f07..2e5ae8caf 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php @@ -79,11 +79,28 @@ class ObjectFormManager extends FormManager protected $aCallbackUrls = array(); /** * List of hidden fields, used for form update (eg. remove them from the form regarding they dependencies) + * * @var array $aHiddenFieldsId * @since 2.7.5 */ protected $aHiddenFieldsId = array(); + /** + * @param string|array $formManagerData value of the formmanager_data portal parameter, either JSON or object + * + * @return array formmanager_data as a PHP array + * + * @since 2.7.6 3.0.0 N°4384 method creation : factorize as this is used twice now + */ + protected static function DecodeFormManagerData($formManagerData) + { + if (is_array($formManagerData)) { + return $formManagerData; + } + + return json_decode($formManagerData, true); + } + /** * @param string $sJson JSON data that must contain at least : * - formobject_class : The class of the object that is being edited/viewed @@ -101,11 +118,7 @@ class ObjectFormManager extends FormManager */ public static function FromJSON($sJson, $bTrustContent = false) { - if (is_array($sJson)) { - $aJson = $sJson; - } else { - $aJson = json_decode($sJson, true); - } + $aJson = static::DecodeFormManagerData($sJson); $oConfig = utils::GetConfig(); $bIsContentCheckEnabled = $oConfig->GetModuleSetting(PORTAL_ID, 'enable_formmanager_content_check', true); @@ -180,7 +193,7 @@ class ObjectFormManager extends FormManager */ public static function CanTrustFormLayoutContent($sPostedFormManagerData, $aOriginalFormProperties) { - $aPostedFormManagerData = json_decode($sPostedFormManagerData, true); + $aPostedFormManagerData = static::DecodeFormManagerData($sPostedFormManagerData); $sPostedFormLayoutType = (isset($aPostedFormManagerData['formproperties']['layout']['type'])) ? $aPostedFormManagerData['formproperties']['layout']['type'] : ''; if ($sPostedFormLayoutType === 'xhtml') {