From 8865b1cfa72064580a48c58a1b874f155b68ef55 Mon Sep 17 00:00:00 2001
From: Daniel Siepmann <daniel.siepmann@typo3.org>
Date: Tue, 15 Jan 2019 14:40:10 +0100
Subject: [PATCH] [BUGFIX] Respect columnsOverrides in TCA for suggest wizard

These changes in the SuggestWizardController allow users to override
allowed tables in group fields with columnsOverrides.

Typical usecases for this is to use the records field for tt_content
elements.

Resolves: #76661
Releases: master
Change-Id: Ic566c793f8d953802f5f6ff670fde485c19ed9db
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/59444
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Josef Glatz <josefglatz@gmail.com>
Tested-by: Oliver Bartsch <bo@cedev.de>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Josef Glatz <josefglatz@gmail.com>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
---
 .../Classes/Controller/Wizard/SuggestWizardController.php | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/typo3/sysext/backend/Classes/Controller/Wizard/SuggestWizardController.php b/typo3/sysext/backend/Classes/Controller/Wizard/SuggestWizardController.php
index 572dfe8ee5ae..a3f18fa5cbe2 100644
--- a/typo3/sysext/backend/Classes/Controller/Wizard/SuggestWizardController.php
+++ b/typo3/sysext/backend/Classes/Controller/Wizard/SuggestWizardController.php
@@ -60,6 +60,14 @@ class SuggestWizardController
             // Normal columns field
             $fieldConfig = $GLOBALS['TCA'][$tableName]['columns'][$fieldName]['config'];
             $fieldNameInPageTsConfig = $fieldName;
+
+            // With possible columnsOverrides
+            $row = BackendUtility::getRecord($tableName, $uid);
+            $recordType = BackendUtility::getTCAtypeValue($tableName, $row);
+            $columnsOverridesConfigOfField = $GLOBALS['TCA'][$tableName]['types'][$recordType]['columnsOverrides'][$fieldName]['config'] ?? null;
+            if ($columnsOverridesConfigOfField) {
+                ArrayUtility::mergeRecursiveWithOverrule($fieldConfig, $columnsOverridesConfigOfField);
+            }
         } else {
             // A flex flex form field
             $flexFormTools = GeneralUtility::makeInstance(FlexFormTools::class);
-- 
GitLab