[BUGFIX] Add additionalFields to cache identifier in getPageForRootline 63/60263/4
authorWolfgang Klinger <wolfgang@wazum.com>
Fri, 15 Mar 2019 16:13:20 +0000 (17:13 +0100)
committerBenjamin Franzke <bfr@qbus.de>
Sun, 17 Mar 2019 15:00:07 +0000 (16:00 +0100)
Otherwise, consecutive calls with additional fields given
will not return them.

Use md5 hash for the additionalFields in getPageForRootline and
BEgetRootLine.

Resolves: #87934
Releases: master, 9.5
Change-Id: I1720870ecb6920b06fa28a6ba8caf0522c50205c
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60263
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Benjamin Franzke <bfr@qbus.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benjamin Franzke <bfr@qbus.de>
typo3/sysext/backend/Classes/Utility/BackendUtility.php

index afc1315..2027a6e 100644 (file)
@@ -333,7 +333,7 @@ class BackendUtility
         $beGetRootLineCache = $runtimeCache->get('backendUtilityBeGetRootLine') ?: [];
         $output = [];
         $pid = $uid;
-        $ident = $pid . '-' . $clause . '-' . $workspaceOL . ($additionalFields ? '-' . implode(',', $additionalFields) : '');
+        $ident = $pid . '-' . $clause . '-' . $workspaceOL . ($additionalFields ? '-' . md5(implode(',', $additionalFields)) : '');
         if (is_array($beGetRootLineCache[$ident] ?? false)) {
             $output = $beGetRootLineCache[$ident];
         } else {
@@ -406,7 +406,7 @@ class BackendUtility
     {
         $runtimeCache = GeneralUtility::makeInstance(CacheManager::class)->getCache('cache_runtime');
         $pageForRootlineCache = $runtimeCache->get('backendUtilityPageForRootLine') ?: [];
-        $ident = $uid . '-' . $clause . '-' . $workspaceOL;
+        $ident = $uid . '-' . $clause . '-' . $workspaceOL . ($additionalFields ? '-' . md5(implode(',', $additionalFields)) : '');
         if (is_array($pageForRootlineCache[$ident] ?? false)) {
             $row = $pageForRootlineCache[$ident];
         } else {