From 82dbb4fe3f748c00ba707c297a1dc896eadf8b4c Mon Sep 17 00:00:00 2001 From: Oliver Bartsch <bo@cedev.de> Date: Fri, 5 Jan 2024 09:39:32 +0100 Subject: [PATCH] [BUGFIX] Use defined `languageField` in DataHandler It's unlikely but possible that the `languageField` of a record does not use `sys_language_uid` as name. This is now properly respected in DataHandler. Resolves: #102757 Releases: main, 12.4 Change-Id: Icdb2b599e6ada75c3562c59a41f2b2449ec61d63 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82373 Tested-by: core-ci <typo3@b13.com> Tested-by: Oliver Bartsch <bo@cedev.de> Reviewed-by: Oliver Bartsch <bo@cedev.de> --- typo3/sysext/core/Classes/DataHandling/DataHandler.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/typo3/sysext/core/Classes/DataHandling/DataHandler.php b/typo3/sysext/core/Classes/DataHandling/DataHandler.php index 7e491fb1503a..1e20d2167d07 100644 --- a/typo3/sysext/core/Classes/DataHandling/DataHandler.php +++ b/typo3/sysext/core/Classes/DataHandling/DataHandler.php @@ -5239,13 +5239,13 @@ class DataHandler implements LoggerAwareInterface ) { return; } + $languageField = $GLOBALS['TCA'][$table]['ctrl']['languageField']; + $localizationParentFieldName = $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField']; $liveRecord = BackendUtility::getRecord($table, $uid); - if ((int)($liveRecord['sys_language_uid'] ?? 0) !== 0 || (int)($liveRecord['t3ver_wsid'] ?? 0) !== 0) { + if ((int)($liveRecord[$languageField] ?? 0) !== 0 || (int)($liveRecord['t3ver_wsid'] ?? 0) !== 0) { // Don't do anything if we're not deleting a live record in default language return; } - $languageField = $GLOBALS['TCA'][$table]['ctrl']['languageField']; - $localizationParentFieldName = $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField']; $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table); $queryBuilder->getRestrictions()->removeAll(); $queryBuilder = $queryBuilder->select('*')->from($table) -- GitLab