From d29355945a7f783d229413f247fc3e115e6838eb Mon Sep 17 00:00:00 2001
From: Andreas Fernandez <a.fernandez@scripting-base.de>
Date: Sat, 27 Nov 2021 14:29:51 +0100
Subject: [PATCH] [BUGFIX] Use generated TSFE in PageLinkBuilder
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

If the PageLinkBuilder is invoked with a non-available TSFE as e.g. in
the "Redirects" module, generating the URLs to pages with a fragment,
e.g. to a referenced content element, works now as we're using the
TSFE generated within PageLinkBuilder itself.

Resolves: #96101
Releases: main, 11.5
Change-Id: I481b7d8573424dab59df22b0d81a734e03b70575
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/72323
Tested-by: core-ci <typo3@b13.com>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
---
 typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php b/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php
index 62cae99795b6..8f723276fdbe 100644
--- a/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php
+++ b/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php
@@ -402,6 +402,7 @@ class PageLinkBuilder extends AbstractTypolinkBuilder
      */
     protected function generateUrlForPageWithSiteConfiguration(array $page, Site $siteOfTargetPage, array $queryParameters, string $fragment, array $conf): UriInterface
     {
+        $tsfe = $this->getTypoScriptFrontendController();
         $currentSite = $this->getCurrentSite();
         $currentSiteLanguage = $this->getCurrentSiteLanguage();
         // Happens when currently on a pseudo-site configuration
@@ -434,9 +435,9 @@ class PageLinkBuilder extends AbstractTypolinkBuilder
         if ($fragment
             && $useAbsoluteUrl === false
             && $currentSiteLanguage === $siteLanguageOfTargetPage
-            && $targetPageId === (int)$GLOBALS['TSFE']->id
+            && $targetPageId === (int)$tsfe->id
             && (empty($conf['addQueryString']) || !isset($conf['addQueryString.']))
-            && !($GLOBALS['TSFE']->config['config']['baseURL'] ?? false)
+            && !($tsfe->config['config']['baseURL'] ?? false)
             && count($queryParameters) === 1 // _language is always set
             ) {
             $uri = (new Uri())->withFragment($fragment);
-- 
GitLab