From 2a08fd090460a5b4c5f0bf884446fb500fcaff56 Mon Sep 17 00:00:00 2001
From: Benni Mack <benni@typo3.org>
Date: Sun, 28 Nov 2021 20:32:19 +0100
Subject: [PATCH] [!!!][TASK] Remove legacy Element Browser hooks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/browse_links.php']['browserRendering']
is replaced in favor of the Element Browser registry.

Related: #95322
Resolves: #96123
Releases: master
Change-Id: If362551cf7c4a093cde4e0742037155afedbea32
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/72345
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
---
 ...g-96107-DeprecatedFunctionalityRemoved.rst |  1 +
 .../Php/ArrayDimensionMatcher.php             |  1 +
 .../Controller/ElementBrowserController.php   | 49 +++----------------
 3 files changed, 10 insertions(+), 41 deletions(-)

diff --git a/typo3/sysext/core/Documentation/Changelog/12.0/Breaking-96107-DeprecatedFunctionalityRemoved.rst b/typo3/sysext/core/Documentation/Changelog/12.0/Breaking-96107-DeprecatedFunctionalityRemoved.rst
index 8d12d73115d5..d65b75093aa4 100644
--- a/typo3/sysext/core/Documentation/Changelog/12.0/Breaking-96107-DeprecatedFunctionalityRemoved.rst
+++ b/typo3/sysext/core/Documentation/Changelog/12.0/Breaking-96107-DeprecatedFunctionalityRemoved.rst
@@ -93,6 +93,7 @@ The following global variables have been removed:
 The following hooks have been removed:
 
 - :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['FileDumpEID.php']['checkFileAccess']`
+- :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/browse_links.php']['browserRendering']`
 
 The following signals have been removed:
 
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php
index 4e9d07cf27f8..d4795d3c88ca 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php
@@ -531,6 +531,7 @@ return [
     '$GLOBALS[\'TYPO3_CONF_VARS\'][\'SC_OPTIONS\'][\'typo3/browse_links.php\'][\'browserRendering\']' => [
         'restFiles' => [
             'Deprecation-95322-LegacyElementBrowserLogic.rst',
+            'Breaking-96107-DeprecatedFunctionalityRemoved.rst',
         ],
     ],
     '$GLOBALS[\'TBE_MODULES_EXT\'][\'xMOD_db_new_content_el\'][\'addElClasses\']' => [
diff --git a/typo3/sysext/recordlist/Classes/Controller/ElementBrowserController.php b/typo3/sysext/recordlist/Classes/Controller/ElementBrowserController.php
index b192fa8d8708..9d2ffad3c754 100644
--- a/typo3/sysext/recordlist/Classes/Controller/ElementBrowserController.php
+++ b/typo3/sysext/recordlist/Classes/Controller/ElementBrowserController.php
@@ -17,10 +17,8 @@ namespace TYPO3\CMS\Recordlist\Controller;
 
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
-use TYPO3\CMS\Backend\Routing\UriBuilder;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Http\HtmlResponse;
-use TYPO3\CMS\Core\Http\RedirectResponse;
 use TYPO3\CMS\Core\Localization\LanguageService;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Recordlist\Browser\ElementBrowserInterface;
@@ -55,12 +53,6 @@ class ElementBrowserController
     {
         $this->getLanguageService()->includeLLFile('EXT:recordlist/Resources/Private/Language/locallang_browse_links.xlf');
         $this->mode = $request->getQueryParams()['mode'] ?? $request->getQueryParams()['mode'] ?? '';
-        // Fallback for old calls, which use mode "wizard" or "rte" for link selection
-        if ($this->mode === 'wizard' || $this->mode === 'rte') {
-            trigger_error('Calling ElementBrowserController::mainAction with "wizard" or "mode" as values will be removed in TYPO3 v12.0. Link to the "wizard_link" instead.', E_USER_DEPRECATED);
-            $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
-            return new RedirectResponse((string)$uriBuilder->buildUriFromRoute('wizard_link', $_GET), 303);
-        }
         return new HtmlResponse($this->main($request));
     }
 
@@ -71,42 +63,17 @@ class ElementBrowserController
      */
     protected function main(ServerRequestInterface $request)
     {
-        $content = '';
-
-        // Render type by user func
-        $browserRendered = false;
-
-        // @deprecated will be removed in TYPO3 v12.0.
-        if (!empty($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/browse_links.php']['browserRendering'] ?? [])) {
-            trigger_error('$TYPO3_CONF_VARS[SC_OPTIONS][typo3/browse_links.php][browserRendering] will be removed in TYPO3 v12.0. Use a custom ElementBrowser, as introduced in TYPO3 7.6, instead.', E_USER_DEPRECATED);
-        }
-        foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/browse_links.php']['browserRendering'] ?? [] as $className) {
-            $browserRenderObj = GeneralUtility::makeInstance($className);
-            if (is_object($browserRenderObj) && method_exists($browserRenderObj, 'isValid') && method_exists($browserRenderObj, 'render')) {
-                if ($browserRenderObj->isValid($this->mode, $this)) {
-                    $content = $browserRenderObj->render($this->mode, $this);
-                    $browserRendered = true;
-                    break;
-                }
-            }
+        $browser = $this->getElementBrowserInstance();
+        if (is_callable([$browser, 'setRequest'])) {
+            $browser->setRequest($request);
         }
 
-        // if type was not rendered use default rendering functions
-        if (!$browserRendered) {
-            $browser = $this->getElementBrowserInstance();
-            if (is_callable([$browser, 'setRequest'])) {
-                $browser->setRequest($request);
-            }
-
-            $backendUser = $this->getBackendUser();
-            $modData = $backendUser->getModuleData('browse_links.php', 'ses');
-            [$modData] = $browser->processSessionData($modData);
-            $backendUser->pushModuleData('browse_links.php', $modData);
-
-            $content = $browser->render();
-        }
+        $backendUser = $this->getBackendUser();
+        $modData = $backendUser->getModuleData('browse_links.php', 'ses');
+        [$modData] = $browser->processSessionData($modData);
+        $backendUser->pushModuleData('browse_links.php', $modData);
 
-        return $content;
+        return $browser->render();
     }
 
     /**
-- 
GitLab