From 75c3db29dadf8ccd3e7f81c8e0ce7ac1ae5f1d55 Mon Sep 17 00:00:00 2001 From: Tim Wagner <tim.wagner@sgalinski.de> Date: Tue, 11 Aug 2020 15:29:19 +0200 Subject: [PATCH] [BUGFIX] Check flexform setting type in PluginRenderer --- .../Hooks/PageLayoutView/PluginRenderer.php | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/Classes/Hooks/PageLayoutView/PluginRenderer.php b/Classes/Hooks/PageLayoutView/PluginRenderer.php index da7f569..7e94ef7 100644 --- a/Classes/Hooks/PageLayoutView/PluginRenderer.php +++ b/Classes/Hooks/PageLayoutView/PluginRenderer.php @@ -25,6 +25,7 @@ use TYPO3\CMS\Backend\View\PageLayoutView; use TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\Utility\GeneralUtility; +use TYPO3\CMS\Extbase\Persistence\Generic\Backend; use TYPO3\CMS\Fluid\View\StandaloneView; /** @@ -90,14 +91,16 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface { $row['pi_flexform'], 'T3DataStructure' )['data']['main']['lDEF']; + $categories = $pluginConfiguration['settings.categories']['vDEF']; + $tags = $pluginConfiguration['settings.tags']['vDEF']; $templateData = [ 'limit' => $pluginConfiguration['settings.limit']['vDEF'], - 'categories' => $this->addFieldContentsToRecordIdList( - 'pages', $pluginConfiguration['settings.categories']['vDEF'] ?? '' - ), - 'tags' => $this->addFieldContentsToRecordIdList( - 'sys_category', $pluginConfiguration['settings.tags']['vDEF'] ?? '' - ), + 'categories' => is_string($categories) ? $this->addFieldContentsToRecordIdList( + 'pages', $categories + ) : '', + 'tags' => is_string($tags) ? $this->addFieldContentsToRecordIdList( + 'sys_category', $tags + ) : '', 'starttime' => $pluginConfiguration['settings.starttime']['vDEF'], 'endtime' => $pluginConfiguration['settings.endtime']['vDEF'], 'sortBy' => $pluginConfiguration['settings.sortBy']['vDEF'] @@ -121,14 +124,14 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface { $row['pi_flexform'], 'T3DataStructure' )['data']['main']['lDEF']; + $categories = $pluginConfiguration['settings.categories']['vDEF']; + $tags = $pluginConfiguration['settings.tags']['vDEF']; $templateData = [ 'newsLimitPerPage' => $pluginConfiguration['settings.newsLimitPerPage']['vDEF'], - 'categories' => $this->addFieldContentsToRecordIdList( - 'pages', $pluginConfiguration['settings.categories']['vDEF'] - ), - 'tags' => $this->addFieldContentsToRecordIdList( - 'sys_category', $pluginConfiguration['settings.tags']['vDEF'] - ), + 'categories' => is_string($categories) ? $this->addFieldContentsToRecordIdList( + 'pages', $categories + ) : '', + 'tags' => is_string($tags) ? $this->addFieldContentsToRecordIdList('sys_category', $tags) : '', 'starttime' => $pluginConfiguration['settings.starttime']['vDEF'], 'endtime' => $pluginConfiguration['settings.endtime']['vDEF'], 'sortBy' => $pluginConfiguration['settings.sortBy']['vDEF'], @@ -153,22 +156,21 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface { $row['pi_flexform'], 'T3DataStructure' )['data']['main']['lDEF']; + $newsAuthors = $pluginConfiguration['settings.newsAuthors']['vDEF']; $templateData = [ 'showDetails' => $pluginConfiguration['settings.showDetails']['vDEF'], - 'newsAuthors' => $this->addFieldContentsToRecordIdList( - 'tx_sgnews_domain_model_author', - $pluginConfiguration['settings.newsAuthors']['vDEF'], - 'name' - ) + 'newsAuthors' => is_string($newsAuthors) ? $this->addFieldContentsToRecordIdList( + 'tx_sgnews_domain_model_author',$newsAuthors,'name' + ) : '' ]; - $backendUtility = GeneralUtility::makeInstance(BackendUtility::class); + // Not using addFieldContentsToRecordIdList to avoid repetitive imploding and exploding. $excludedNewsIds = GeneralUtility::intExplode( ',', $pluginConfiguration['settings.excludedNews']['vDEF'], TRUE ); $excludedNewsListWithTitles = []; foreach ($excludedNewsIds as $excludedNewsId) { - $excludedNewsListWithTitles[] = $backendUtility::getRecord( + $excludedNewsListWithTitles[] = BackendUtility::getRecord( 'pages', $excludedNewsId, 'title' )['title'] . ' [' . $excludedNewsId . ']'; } -- GitLab