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