diff --git a/typo3/sysext/beuser/Classes/Controller/PermissionController.php b/typo3/sysext/beuser/Classes/Controller/PermissionController.php index e467591208b2a6d0f51b40d0e6a56cb506694766..973f80775a5d1e827390363eb28cec6f46816cac 100644 --- a/typo3/sysext/beuser/Classes/Controller/PermissionController.php +++ b/typo3/sysext/beuser/Classes/Controller/PermissionController.php @@ -362,7 +362,7 @@ class PermissionController } $dataHandlerInput[$pageUid] = $properties; if (!empty($mirror['pages'][$pageUid])) { - $mirrorPages = GeneralUtility::intExplode(',', $mirror['pages'][$pageUid]); + $mirrorPages = GeneralUtility::intExplode(',', (string)$mirror['pages'][$pageUid]); foreach ($mirrorPages as $mirrorPageUid) { $dataHandlerInput[$mirrorPageUid] = $properties; } diff --git a/typo3/sysext/felogin/Classes/Controller/AbstractLoginFormController.php b/typo3/sysext/felogin/Classes/Controller/AbstractLoginFormController.php index e8c748c89991b2d8456a63dc14eea8f8d4de211a..08d57ec16a69f21d0232fccafcda2bf98b3270be 100644 --- a/typo3/sysext/felogin/Classes/Controller/AbstractLoginFormController.php +++ b/typo3/sysext/felogin/Classes/Controller/AbstractLoginFormController.php @@ -33,7 +33,7 @@ abstract class AbstractLoginFormController extends ActionController if ((bool)($GLOBALS['TYPO3_CONF_VARS']['FE']['checkFeUserPid'] ?? false) === false) { return [0]; } - $storagePids = GeneralUtility::intExplode(',', $this->settings['pages'] ?? '', true); + $storagePids = GeneralUtility::intExplode(',', (string)($this->settings['pages'] ?? ''), true); return GeneralUtility::makeInstance(PageRepository::class)->getPageIdsRecursive($storagePids, (int)($this->settings['recursive'] ?? 0)); } } diff --git a/typo3/sysext/indexed_search/Classes/Controller/SearchController.php b/typo3/sysext/indexed_search/Classes/Controller/SearchController.php index fcc445314449972d44e48177d6e8743828ff6730..5c090d03c5bfd702b7490a204c09008824a581e1 100644 --- a/typo3/sysext/indexed_search/Classes/Controller/SearchController.php +++ b/typo3/sysext/indexed_search/Classes/Controller/SearchController.php @@ -190,7 +190,7 @@ class SearchController extends ActionController } // Sets availableResultsNumbers - has to be called before request settings are read to avoid DoS attack - $this->availableResultsNumbers = array_filter(GeneralUtility::intExplode(',', $this->settings['blind']['numberOfResults'])); + $this->availableResultsNumbers = array_filter(GeneralUtility::intExplode(',', (string)($this->settings['blind']['numberOfResults'] ?? ''))); // Sets default result number if at least one availableResultsNumbers exists if (isset($this->availableResultsNumbers[0])) { @@ -238,8 +238,9 @@ class SearchController extends ActionController // the above will then fetch the menu for the CURRENT site - regardless // of this kind of searching here. Thus a general search will lookup in // the WHOLE database while a specific section search will take the current sections. - if ($this->settings['rootPidList']) { - $this->searchRootPageIdList = implode(',', GeneralUtility::intExplode(',', $this->settings['rootPidList'])); + $rootPidListFromSettings = (string)($this->settings['rootPidList'] ?? ''); + if ($rootPidListFromSettings) { + $this->searchRootPageIdList = implode(',', GeneralUtility::intExplode(',', $rootPidListFromSettings)); } $this->searchRepository = GeneralUtility::makeInstance(IndexSearchRepository::class); $this->searchRepository->initialize($this->settings, $searchData, $this->externalParsers, $this->searchRootPageIdList); @@ -280,7 +281,7 @@ class SearchController extends ActionController $this->view->assignMultiple($this->processExtendedSearchParameters()); } - $indexCfgs = GeneralUtility::intExplode(',', $freeIndexUid); + $indexCfgs = GeneralUtility::intExplode(',', (string)$freeIndexUid); $resultsets = []; foreach ($indexCfgs as $freeIndexUid) { // Get result rows @@ -1175,8 +1176,9 @@ class SearchController extends ActionController $blindSettings = $this->settings['blind']; if (!($blindSettings['indexingConfigurations'] ?? false)) { // add an additional index configuration - if ($this->settings['defaultFreeIndexUidList']) { - $uidList = GeneralUtility::intExplode(',', $this->settings['defaultFreeIndexUidList']); + $defaultFreeIndexUidList = (string)($this->settings['defaultFreeIndexUidList'] ?? ''); + if ($defaultFreeIndexUidList) { + $uidList = GeneralUtility::intExplode(',', $defaultFreeIndexUidList); $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class) ->getQueryBuilderForTable('index_config'); $queryBuilder->setRestrictions(GeneralUtility::makeInstance(FrontendRestrictionContainer::class)); diff --git a/typo3/sysext/info/Classes/Controller/InfoModuleController.php b/typo3/sysext/info/Classes/Controller/InfoModuleController.php index 888449c988db236ea24d123098b637cfd010667e..688158c4e25e545a8474b35d97fc23501cd2b59c 100644 --- a/typo3/sysext/info/Classes/Controller/InfoModuleController.php +++ b/typo3/sysext/info/Classes/Controller/InfoModuleController.php @@ -129,7 +129,7 @@ class InfoModuleController if (isset($pagesTSconfig['TCEMAIN.']['preview.']['disableButtonForDokType'])) { $excludeDokTypes = GeneralUtility::intExplode( ',', - $pagesTSconfig['TCEMAIN.']['preview.']['disableButtonForDokType'], + (string)$pagesTSconfig['TCEMAIN.']['preview.']['disableButtonForDokType'], true ); } else { diff --git a/typo3/sysext/lowlevel/Classes/Database/QueryGenerator.php b/typo3/sysext/lowlevel/Classes/Database/QueryGenerator.php index 46bf01eb6636a10849d4bb2a79079f67ead3c210..8599fe117e766ebfd29f5f3348d1de2941279ea3 100644 --- a/typo3/sysext/lowlevel/Classes/Database/QueryGenerator.php +++ b/typo3/sysext/lowlevel/Classes/Database/QueryGenerator.php @@ -2481,7 +2481,7 @@ class QueryGenerator $inputVal = $conf['inputValue' . $suffix] ?? null; } elseif ($comparison === 39 || $comparison === 38) { // in list: - $inputVal = implode(',', GeneralUtility::intExplode(',', ($conf['inputValue' . $suffix] ?? ''))); + $inputVal = implode(',', GeneralUtility::intExplode(',', (string)($conf['inputValue' . $suffix] ?? ''))); } elseif ($comparison === 68 || $comparison === 69 || $comparison === 162 || $comparison === 163) { // in list: if (is_array($conf['inputValue' . $suffix] ?? false)) { @@ -2557,7 +2557,7 @@ class QueryGenerator if (!$this->extFieldLists['queryLimit']) { $this->extFieldLists['queryLimit'] = 100; } - $parts = GeneralUtility::intExplode(',', $this->extFieldLists['queryLimit']); + $parts = GeneralUtility::intExplode(',', (string)$this->extFieldLists['queryLimit']); $limitBegin = 0; $limitLength = (int)($this->extFieldLists['queryLimit'] ?? 0); if ($parts[1] ?? null) { @@ -2726,9 +2726,10 @@ class QueryGenerator $queryBuilder->addOrderBy($fieldName, $order); } } - if ($this->extFieldLists['queryLimit']) { + $queryLimit = (string)($this->extFieldLists['queryLimit'] ?? ''); + if ($queryLimit) { // Explode queryLimit to fetch the limit and a possible offset - $parts = GeneralUtility::intExplode(',', $this->extFieldLists['queryLimit']); + $parts = GeneralUtility::intExplode(',', $queryLimit); if ($parts[1] ?? null) { // Offset and limit are given $queryBuilder->setFirstResult($parts[0]); diff --git a/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php b/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php index d960225ce4bc6f388191b276275af6bd816172d7..2ccb98ae00cc25a2d8b4e83700d207dd146508f2 100644 --- a/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php +++ b/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php @@ -146,9 +146,10 @@ class RecordLinkHandler extends AbstractLinkHandler implements LinkHandlerInterf $this->getUrlParameters([]) ); + $pageTreeMountPoints = (string)($this->configuration['pageTreeMountPoints'] ?? ''); $this->view->assignMultiple([ 'treeEnabled' => (bool)($this->configuration['hidePageTree'] ?? false) === false, - 'pageTreeMountPoints' => GeneralUtility::intExplode(',', $this->configuration['pageTreeMountPoints'] ?? '', true), + 'pageTreeMountPoints' => GeneralUtility::intExplode(',', $pageTreeMountPoints, true), 'recordList' => $recordList, 'initialNavigationWidth' => $this->getBackendUser()->uc['selector']['navigation']['width'] ?? 250, 'treeActions' => ['link'], diff --git a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php index b94d2b0fddf995125b131f574b6db405a2e93677..b4d1806ed34958f2295ebe4440c60aa4e758c864 100644 --- a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php +++ b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php @@ -2254,7 +2254,7 @@ class DatabaseRecordList ->expr(); $permsClause = $expressionBuilder->and($backendUser->getPagePermsClause(Permission::PAGE_SHOW)); // This will hide records from display - it has nothing to do with user rights!! - $pidList = GeneralUtility::intExplode(',', $backendUser->getTSConfig()['options.']['hideRecords.']['pages'] ?? '', true); + $pidList = GeneralUtility::intExplode(',', (string)($backendUser->getTSConfig()['options.']['hideRecords.']['pages'] ?? ''), true); if (!empty($pidList)) { $permsClause = $permsClause->with($expressionBuilder->notIn('pages.uid', $pidList)); } @@ -3319,7 +3319,7 @@ class DatabaseRecordList protected function getNoViewWithDokTypes(array $tsConfig): array { if (isset($tsConfig['noViewWithDokTypes'])) { - $noViewDokTypes = GeneralUtility::intExplode(',', $tsConfig['noViewWithDokTypes'], true); + $noViewDokTypes = GeneralUtility::intExplode(',', (string)$tsConfig['noViewWithDokTypes'], true); } else { $noViewDokTypes = [ PageRepository::DOKTYPE_SPACER, diff --git a/typo3/sysext/seo/Classes/XmlSitemap/PagesXmlSitemapDataProvider.php b/typo3/sysext/seo/Classes/XmlSitemap/PagesXmlSitemapDataProvider.php index 3496099d5fe16078a3b3b5e1211a77e374578656..5b991a92c8023f3d66886fc5f01215e3dbd8c075 100644 --- a/typo3/sysext/seo/Classes/XmlSitemap/PagesXmlSitemapDataProvider.php +++ b/typo3/sysext/seo/Classes/XmlSitemap/PagesXmlSitemapDataProvider.php @@ -67,7 +67,7 @@ class PagesXmlSitemapDataProvider extends AbstractXmlSitemapDataProvider $rootPageId = $site->getRootPageId(); } - $excludePagesRecursive = GeneralUtility::intExplode(',', $this->config['excludePagesRecursive'] ?? '', true); + $excludePagesRecursive = GeneralUtility::intExplode(',', (string)($this->config['excludePagesRecursive'] ?? ''), true); $pageRepository = GeneralUtility::makeInstance(PageRepository::class); $pageIds = $pageRepository->getDescendantPageIdsRecursive($rootPageId, 99, 0, $excludePagesRecursive); @@ -85,7 +85,7 @@ class PagesXmlSitemapDataProvider extends AbstractXmlSitemapDataProvider } if (!empty($this->config['excludedDoktypes'])) { - $excludedDoktypes = GeneralUtility::intExplode(',', $this->config['excludedDoktypes']); + $excludedDoktypes = GeneralUtility::intExplode(',', (string)$this->config['excludedDoktypes']); if (!empty($excludedDoktypes)) { $constraints[] = $queryBuilder->expr()->notIn('doktype', implode(',', $excludedDoktypes)); } diff --git a/typo3/sysext/seo/Classes/XmlSitemap/RecordsXmlSitemapDataProvider.php b/typo3/sysext/seo/Classes/XmlSitemap/RecordsXmlSitemapDataProvider.php index 4d14e5ef3298b84b2c92c02dbf46a4a9d416bdc6..c183f36f991ef64f2c5c82d73f53b545b2f4ba84 100644 --- a/typo3/sysext/seo/Classes/XmlSitemap/RecordsXmlSitemapDataProvider.php +++ b/typo3/sysext/seo/Classes/XmlSitemap/RecordsXmlSitemapDataProvider.php @@ -54,7 +54,7 @@ class RecordsXmlSitemapDataProvider extends AbstractXmlSitemapDataProvider ); } - $pids = !empty($this->config['pid']) ? GeneralUtility::intExplode(',', $this->config['pid']) : []; + $pids = !empty($this->config['pid']) ? GeneralUtility::intExplode(',', (string)$this->config['pid']) : []; $lastModifiedField = $this->config['lastModifiedField'] ?? 'tstamp'; $sortField = $this->config['sortField'] ?? 'sorting';