From 149c5304afee8172b9226a0f23b174cd60d91300 Mon Sep 17 00:00:00 2001 From: Michiel Roos Date: Tue, 28 Sep 2021 11:46:08 +0200 Subject: [PATCH] [BUGFIX] Don't force arrays when json_encoding parameters --- Classes/Controller/H5pModuleController.php | 13 +++++++++++-- Classes/Domain/Model/Content.php | 4 +--- ext_emconf.php | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Classes/Controller/H5pModuleController.php b/Classes/Controller/H5pModuleController.php index 2238ca8..78fc344 100644 --- a/Classes/Controller/H5pModuleController.php +++ b/Classes/Controller/H5pModuleController.php @@ -634,10 +634,19 @@ public function editAction(int $contentId) $contentLibrary = $content->getLibrary()->toAssocArray(); $this->view->assign('content', $content); $this->view->assign('library', sprintf('%s %d.%d', $contentLibrary['machineName'], $contentLibrary['majorVersion'], $contentLibrary['minorVersion'])); - $parameters = (array)json_decode($content->getFiltered(), true); + $parameters = (array)json_decode($content->getFiltered()); $parameters = $this->injectMetadataIntoParameters($parameters, $content); $parameters = json_encode($parameters, JSON_THROW_ON_ERROR); - $parameters = str_replace('"image":[]', '"image":{}', $parameters); + // Unbreak wrongly encoded parameters (Content.php updateFromContentData()) + $parameters = str_replace([ + '"globalBackgroundSelector":[]', + '"slideBackgroundSelector":[]', + '"image":[]' + ], [ + '"globalBackgroundSelector":{}', + '"slideBackgroundSelector":{}', + '"image":{}' + ], $parameters); $this->view->assign('parameters', $parameters); } diff --git a/Classes/Domain/Model/Content.php b/Classes/Domain/Model/Content.php index d96ae23..4da7363 100644 --- a/Classes/Domain/Model/Content.php +++ b/Classes/Domain/Model/Content.php @@ -195,9 +195,7 @@ public function updateFromContentData(array $contentData, Library $library) } if (isset($contentData['params'])) { - // Yes, twice. they added metadata later and didnt rename the top level. - $parameters = json_decode($contentData['params'], true); - $this->setParameters(json_encode($parameters)); + $this->setParameters($contentData['params']); // "H5P Metadata" $this->setTitle(html_entity_decode($contentData['metadata']->title)); diff --git a/ext_emconf.php b/ext_emconf.php index e3f4c06..3fb3154 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -11,7 +11,7 @@ 'dependencies' => '', 'state' => 'stable', 'uploadfolder' => 0, - 'version' => '0.2.22', + 'version' => '0.2.23', 'constraints' => [ 'depends' => [ 'typo3' => '7.0.0-9.5.99',