From cc1909af750df48bf40cf81f14731bcbee1bdcb6 Mon Sep 17 00:00:00 2001 From: Henrik Elsner <helsner@dfau.de> Date: Tue, 31 May 2022 20:56:28 +0200 Subject: [PATCH] [BUGFIX] Provide languageField in case it's missing Resolves: #97710 Resolves: #97639 Releases: main, 12.4, 11.5 Change-Id: I5ff95d2d8c4d31105a95da3a18467adb0f7d3852 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/79778 Tested-by: core-ci <typo3@b13.com> Tested-by: Benni Mack <benni@typo3.org> Reviewed-by: Benni Mack <benni@typo3.org> --- .../Classes/ContentObject/ContentObjectRenderer.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php index df5a0ceebd90..7ecee4a1d3e6 100644 --- a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php +++ b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php @@ -5568,6 +5568,7 @@ class ContentObjectRenderer implements LoggerAwareInterface $matchEnd = '(\\s*,|\\s*$)/'; $necessaryFields = ['uid', 'pid']; $wsFields = ['t3ver_state']; + $languageField = $GLOBALS['TCA'][$table]['ctrl']['languageField'] ?? false; if (isset($GLOBALS['TCA'][$table]) && !preg_match($matchStart . '\\*' . $matchEnd, $selectPart) && !preg_match('/(count|max|min|avg|sum)\\([^\\)]+\\)|distinct/i', $selectPart)) { foreach ($necessaryFields as $field) { $match = $matchStart . $field . $matchEnd; @@ -5575,6 +5576,12 @@ class ContentObjectRenderer implements LoggerAwareInterface $selectPart .= ', ' . $connection->quoteIdentifier($table . '.' . $field) . ' AS ' . $connection->quoteIdentifier($field); } } + if (is_string($languageField)) { + $match = $matchStart . $languageField . $matchEnd; + if (!preg_match($match, $selectPart)) { + $selectPart .= ', ' . $connection->quoteIdentifier($table . '.' . $languageField) . ' AS ' . $connection->quoteIdentifier($languageField); + } + } if ($GLOBALS['TCA'][$table]['ctrl']['versioningWS'] ?? false) { foreach ($wsFields as $field) { $match = $matchStart . $field . $matchEnd; -- GitLab