diff --git a/typo3/sysext/backend/Classes/Utility/BackendUtility.php b/typo3/sysext/backend/Classes/Utility/BackendUtility.php index 61cf5906ed054aa49fdb0824ca88164c564a207d..3b03527e41af681992a33923f396086d9bd2da24 100644 --- a/typo3/sysext/backend/Classes/Utility/BackendUtility.php +++ b/typo3/sysext/backend/Classes/Utility/BackendUtility.php @@ -1669,7 +1669,7 @@ class BackendUtility if (GeneralUtility::inList($theColConf['eval'] ?? '', 'date')) { // Handle native date field if (isset($theColConf['dbType']) && $theColConf['dbType'] === 'date') { - $value = $value === $dateTimeFormats['date']['empty'] ? 0 : (int)strtotime($value); + $value = $value === $dateTimeFormats['date']['empty'] ? 0 : (int)strtotime((string)$value); } else { $value = (int)$value; } @@ -1716,7 +1716,7 @@ class BackendUtility } elseif (GeneralUtility::inList($theColConf['eval'] ?? '', 'datetime')) { // Handle native datetime field if (isset($theColConf['dbType']) && $theColConf['dbType'] === 'datetime') { - $value = $value === $dateTimeFormats['datetime']['empty'] ? 0 : (int)strtotime($value); + $value = $value === $dateTimeFormats['datetime']['empty'] ? 0 : (int)strtotime((string)$value); } else { $value = (int)$value; } diff --git a/typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php b/typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php index 804b683cdb7cfd623658c364ecb83e8b47784e89..e47b8236d061f09eee7c73eaa4586ed9af75903a 100644 --- a/typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php +++ b/typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php @@ -202,6 +202,53 @@ class BackendUtilityTest extends UnitTestCase self::assertSame('', BackendUtility::getProcessedValue('tt_content', 'pi_flexform', null)); } + /** + * @test + */ + public function getProcessedValueForDatetimeDbTypeDateNull(): void + { + $GLOBALS['TCA'] = [ + 'tt_content' => [ + 'columns' => [ + 'header' => [ + 'config' => [ + 'type' => 'datetime', + 'dbType' => 'date', + 'format' => 'date', + ], + ], + ], + ], + ]; + $languageServiceMock = $this->createMock(LanguageService::class); + $languageServiceMock->method('sL')->willReturn('testLabel'); + $GLOBALS['LANG'] = $languageServiceMock; + self::assertSame('', BackendUtility::getProcessedValue('tt_content', 'header', null)); + } + + /** + * @test + */ + public function getProcessedValueForDatetimeDbTypeDatetimeNull(): void + { + $GLOBALS['TCA'] = [ + 'tt_content' => [ + 'columns' => [ + 'header' => [ + 'config' => [ + 'type' => 'datetime', + 'dbType' => 'datetime', + ], + ], + ], + ], + ]; + $languageServiceMock = $this->createMock(LanguageService::class); + $languageServiceMock->method('sL')->willReturn('testLabel'); + $GLOBALS['LANG'] = $languageServiceMock; + self::assertSame('', BackendUtility::getProcessedValue('tt_content', 'header', null)); + } + /** * @test */