Project

General

Profile

Actions

Bug #104396

closed

DataHandler::inlineLocalizeSynchronize fails for tables without versioning

Added by Hannes Lau 4 months ago. Updated about 1 month ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
DataHandler aka TCEmain
Target version:
-
Start date:
2024-07-15
Due date:
% Done:

100%

Estimated time:
TYPO3 Version:
12
PHP Version:
8.3
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

In https://github.com/TYPO3/typo3/blob/12.4/typo3/sysext/core/Classes/DataHandling/DataHandler.php#L5031 the andWhere Clause `'AND t3ver_oid=0'` is always appended, even for tables without versioning. This leads to an invalid field exception `unknown column t3ver_oid`.

Original:

$parentRecordLocalization = BackendUtility::getRecordLocalization($table, $id, $command['language'], 'AND t3ver_oid=0');

Quick patch was:

-            $parentRecordLocalization = BackendUtility::getRecordLocalization($table, $id, $command['language'], 'AND t3ver_oid=0');
+            $useVersioning = (bool) ($GLOBALS['TCA'][$table]['ctrl']['versioningWS'] ?? false);
+            $versioningWhereClause = $useVersioning ? 'AND t3ver_oid=0' : '';
+            $parentRecordLocalization = BackendUtility::getRecordLocalization($table, $id, $command['language'], $versioningWhereClause);

Actions

Also available in: Atom PDF