From ad99d661bfbf2cba9b85acb21e325f5d94b62ad4 Mon Sep 17 00:00:00 2001 From: Daniel Goerz <daniel.goerz@posteo.de> Date: Sat, 26 Sep 2020 19:55:58 +0200 Subject: [PATCH] [TASK] Fix phpstan checkFunctionArgumentTypes errors in several extensions This patch fixes incompatible type usage in function arguments and is preparatory work for introducing native type hints and strict mode in all core files. Releases: master, 10.4 Resolves: #92161 Resolves: #92164 Resolves: #92175 Resolves: #92176 Resolves: #92177 Resolves: #92178 Change-Id: I420ea01ba1d277f9a9147d076bc58a13175c8afb Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65540 Tested-by: Oliver Bartsch <bo@cedev.de> Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by: Oliver Bartsch <bo@cedev.de> Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de> --- typo3/sysext/adminpanel/Classes/Utility/MemoryUtility.php | 2 +- .../Classes/Widgets/Provider/SysLogErrorsDataProvider.php | 6 +++--- .../sysext/reports/Classes/Report/Status/Typo3Status.php | 2 +- .../Classes/Controller/BrowseLinksController.php | 2 +- .../rte_ckeditor/Classes/Form/Element/RichTextElement.php | 6 +++--- .../t3editor/Classes/Form/Element/T3editorElement.php | 2 +- .../Controller/TypoScriptTemplateModuleController.php | 5 +++-- typo3/sysext/tstemplate/ext_tables.php | 8 ++++---- 8 files changed, 17 insertions(+), 16 deletions(-) diff --git a/typo3/sysext/adminpanel/Classes/Utility/MemoryUtility.php b/typo3/sysext/adminpanel/Classes/Utility/MemoryUtility.php index 8c05b9fe61c4..7bb2bb870ee4 100644 --- a/typo3/sysext/adminpanel/Classes/Utility/MemoryUtility.php +++ b/typo3/sysext/adminpanel/Classes/Utility/MemoryUtility.php @@ -38,7 +38,7 @@ class MemoryUtility */ public static function isMemoryConsumptionTooHigh(): bool { - $iniLimit = ini_get('memory_limit'); + $iniLimit = (string)ini_get('memory_limit'); $memoryLimit = $iniLimit === '-1' ? -1 : GeneralUtility::getBytesFromSizeMeasurement($iniLimit); $freeMemory = $memoryLimit - memory_get_usage(true); diff --git a/typo3/sysext/dashboard/Classes/Widgets/Provider/SysLogErrorsDataProvider.php b/typo3/sysext/dashboard/Classes/Widgets/Provider/SysLogErrorsDataProvider.php index 9a5349b99439..d402f285cd9a 100644 --- a/typo3/sysext/dashboard/Classes/Widgets/Provider/SysLogErrorsDataProvider.php +++ b/typo3/sysext/dashboard/Classes/Widgets/Provider/SysLogErrorsDataProvider.php @@ -101,9 +101,9 @@ class SysLogErrorsDataProvider implements ChartDataProviderInterface $format = $GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'] ?: 'Y-m-d'; for ($daysBefore = $this->days; $daysBefore >= 0; $daysBefore--) { - $this->labels[] = date($format, strtotime('-' . $daysBefore . ' day')); - $startPeriod = strtotime('-' . $daysBefore . ' day 0:00:00'); - $endPeriod = strtotime('-' . $daysBefore . ' day 23:59:59'); + $this->labels[] = date($format, (int)strtotime('-' . $daysBefore . ' day')); + $startPeriod = (int)strtotime('-' . $daysBefore . ' day 0:00:00'); + $endPeriod = (int)strtotime('-' . $daysBefore . ' day 23:59:59'); $this->data[] = $this->getNumberOfErrorsInPeriod($startPeriod, $endPeriod); } diff --git a/typo3/sysext/reports/Classes/Report/Status/Typo3Status.php b/typo3/sysext/reports/Classes/Report/Status/Typo3Status.php index bb528ad50c74..9d68bd07421e 100644 --- a/typo3/sysext/reports/Classes/Report/Status/Typo3Status.php +++ b/typo3/sysext/reports/Classes/Report/Status/Typo3Status.php @@ -64,7 +64,7 @@ class Typo3Status implements StatusProviderInterface foreach ($xclassFoundArray as $originalClass => $xClassName) { $messageDetail = sprintf( $this->getLanguageService()->getLL('status_xclassUsageFound_message_detail'), - '<code>' . htmlspecialchars($originalClass) . '</code>', + '<code>' . htmlspecialchars((string)$originalClass) . '</code>', '<code>' . htmlspecialchars($xClassName) . '</code>' ); $message .= '<li>' . $messageDetail . '</li>'; diff --git a/typo3/sysext/rte_ckeditor/Classes/Controller/BrowseLinksController.php b/typo3/sysext/rte_ckeditor/Classes/Controller/BrowseLinksController.php index 139ce80031c9..8f35ff6ede13 100644 --- a/typo3/sysext/rte_ckeditor/Classes/Controller/BrowseLinksController.php +++ b/typo3/sysext/rte_ckeditor/Classes/Controller/BrowseLinksController.php @@ -230,7 +230,7 @@ class BrowseLinksController extends AbstractLinkBrowserController $selected = 'selected="selected"'; } $classLabel = !empty($this->thisConfig['classes'][$class]['name']) - ? $this->getPageConfigLabel($this->thisConfig['classes'][$class]['name'], 0) + ? $this->getPageConfigLabel($this->thisConfig['classes'][$class]['name'], false) : $class; $classStyle = !empty($this->thisConfig['classes'][$class]['value']) ? $this->thisConfig['classes'][$class]['value'] diff --git a/typo3/sysext/rte_ckeditor/Classes/Form/Element/RichTextElement.php b/typo3/sysext/rte_ckeditor/Classes/Form/Element/RichTextElement.php index ba7372ffc917..60cd9f6e5916 100644 --- a/typo3/sysext/rte_ckeditor/Classes/Form/Element/RichTextElement.php +++ b/typo3/sysext/rte_ckeditor/Classes/Form/Element/RichTextElement.php @@ -228,7 +228,7 @@ class RichTextElement extends AbstractFormElement $externalPlugins .= '\'\');'; } - $jsonConfiguration = json_encode($configuration); + $jsonConfiguration = (string)json_encode($configuration); // Make a hash of the configuration and append it to CKEDITOR.timestamp // This will mitigate browser caching issue when plugins are updated @@ -428,8 +428,8 @@ class RichTextElement extends AbstractFormElement */ protected function sanitizeFieldId(string $itemFormElementName): string { - $fieldId = preg_replace('/[^a-zA-Z0-9_:.-]/', '_', $itemFormElementName); - return htmlspecialchars(preg_replace('/^[^a-zA-Z]/', 'x', $fieldId)); + $fieldId = (string)preg_replace('/[^a-zA-Z0-9_:.-]/', '_', $itemFormElementName); + return htmlspecialchars((string)preg_replace('/^[^a-zA-Z]/', 'x', $fieldId)); } /** diff --git a/typo3/sysext/t3editor/Classes/Form/Element/T3editorElement.php b/typo3/sysext/t3editor/Classes/Form/Element/T3editorElement.php index c75a47efdd79..86a33f61f194 100644 --- a/typo3/sysext/t3editor/Classes/Form/Element/T3editorElement.php +++ b/typo3/sysext/t3editor/Classes/Form/Element/T3editorElement.php @@ -223,7 +223,7 @@ class T3editorElement extends AbstractFormElement if (!empty($hiddenfields)) { foreach ($hiddenfields as $attributeName => $value) { - $code[] = '<input type="hidden" name="' . htmlspecialchars($attributeName) . '" value="' . htmlspecialchars((string)$value) . '" />'; + $code[] = '<input type="hidden" name="' . htmlspecialchars((string)$attributeName) . '" value="' . htmlspecialchars((string)$value) . '" />'; } } return implode(LF, $code); diff --git a/typo3/sysext/tstemplate/Classes/Controller/TypoScriptTemplateModuleController.php b/typo3/sysext/tstemplate/Classes/Controller/TypoScriptTemplateModuleController.php index 471ab3810d9d..ae843fb3f3f6 100644 --- a/typo3/sysext/tstemplate/Classes/Controller/TypoScriptTemplateModuleController.php +++ b/typo3/sysext/tstemplate/Classes/Controller/TypoScriptTemplateModuleController.php @@ -194,6 +194,7 @@ class TypoScriptTemplateModuleController $this->request = $request; $this->id = (int)($request->getParsedBody()['id'] ?? $request->getQueryParams()['id'] ?? 0); $changedMenuSettings = $request->getParsedBody()['SET'] ?? $request->getQueryParams()['SET'] ?? []; + $changedMenuSettings = is_array($changedMenuSettings) ? $changedMenuSettings : []; $this->menuConfig($changedMenuSettings); // Loads $this->extClassConf with the configuration for the CURRENT function of the menu. $this->extClassConf = $this->getExternalItemConfig('web_ts', 'function', $this->MOD_SETTINGS['function']); @@ -630,7 +631,7 @@ page.10.value = HELLO WORLD! * Then MOD_SETTINGS array is cleaned up (see \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleData()) so it contains only valid values. It's also updated with any SET[] values submitted. * Also loads the modTSconfig internal variable. * - * @param array|string|null $changedSettings can be anything + * @param array $changedSettings can be anything * @see mainAction() * @see \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleData() * @see mergeExternalItems() @@ -699,7 +700,7 @@ page.10.value = HELLO WORLD! * If an instance is created it is initiated with $this passed as value and $this->extClassConf as second argument. Further the $this->MOD_SETTING is cleaned up again after calling the init function. * * @see \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction() - * @param array|string|null $changedSettings + * @param array $changedSettings * @param ServerRequestInterface $request */ protected function checkExtObj($changedSettings, ServerRequestInterface $request) diff --git a/typo3/sysext/tstemplate/ext_tables.php b/typo3/sysext/tstemplate/ext_tables.php index 5ef53627c8b8..45b446c444be 100644 --- a/typo3/sysext/tstemplate/ext_tables.php +++ b/typo3/sysext/tstemplate/ext_tables.php @@ -19,27 +19,27 @@ defined('TYPO3_MODE') or die(); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction( 'web_ts', \TYPO3\CMS\Tstemplate\Controller\TypoScriptTemplateConstantEditorModuleFunctionController::class, - null, + '', 'LLL:EXT:tstemplate/Resources/Private/Language/locallang.xlf:constantEditor' ); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction( 'web_ts', \TYPO3\CMS\Tstemplate\Controller\TypoScriptTemplateInformationModuleFunctionController::class, - null, + '', 'LLL:EXT:tstemplate/Resources/Private/Language/locallang.xlf:infoModify' ); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction( 'web_ts', \TYPO3\CMS\Tstemplate\Controller\TypoScriptTemplateObjectBrowserModuleFunctionController::class, - null, + '', 'LLL:EXT:tstemplate/Resources/Private/Language/locallang.xlf:objectBrowser' ); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction( 'web_ts', \TYPO3\CMS\Tstemplate\Controller\TemplateAnalyzerModuleFunctionController::class, - null, + '', 'LLL:EXT:tstemplate/Resources/Private/Language/locallang.xlf:templateAnalyzer' ); -- GitLab