From 6a01551317ae2ab4f03f73a34ade219c3aec0a80 Mon Sep 17 00:00:00 2001 From: Achim Fritz Date: Sat, 28 Sep 2024 09:50:37 +0200 Subject: [PATCH] [TASK] v13 cache --- Classes/CacheHelper.php | 9 ++++++++- .../Functional/DataProcessing/ListMenuProcessorTest.php | 5 +++++ .../Functional/DataProcessing/TreeMenuProcessorTest.php | 5 +++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Classes/CacheHelper.php b/Classes/CacheHelper.php index 4fedd6e..4eca271 100644 --- a/Classes/CacheHelper.php +++ b/Classes/CacheHelper.php @@ -12,6 +12,7 @@ */ use Psr\Http\Message\ServerRequestInterface; +use TYPO3\CMS\Core\Cache\CacheTag; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Context\Exception\AspectNotFoundException; @@ -86,7 +87,13 @@ protected function buildTagsAndAddThemToPageCache(array $pages): array $tags = array_map(function ($pageId) { return 'menuId_' . $pageId; }, $usedPageIds); - $this->getFrontendController()->addCacheTags($tags); + + if (GeneralUtility::makeInstance(Typo3Version::class)->getMajorVersion() < 13) { + $this->getFrontendController()->addCacheTags($tags); + } else { + $cacheDataCollector = $this->getServerRequest()->getAttribute('frontend.cache.collector'); + $cacheDataCollector->addCacheTags(...array_map(fn (string $tag) => new CacheTag($tag), $tags)); + } return $tags; } diff --git a/Tests/Functional/DataProcessing/ListMenuProcessorTest.php b/Tests/Functional/DataProcessing/ListMenuProcessorTest.php index 5459d22..072d741 100644 --- a/Tests/Functional/DataProcessing/ListMenuProcessorTest.php +++ b/Tests/Functional/DataProcessing/ListMenuProcessorTest.php @@ -13,6 +13,7 @@ */ use B13\Menus\DataProcessing\ListMenu; +use TYPO3\CMS\Core\Cache\CacheDataCollector; use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Site\Entity\Site; @@ -317,6 +318,8 @@ public function processTest(array $tsfe, array $configuration, array $expected) $request = GeneralUtility::makeInstance(ServerRequest::class); $request = $request->withAttribute('site', $site); $request = $request->withAttribute('applicationType', SystemEnvironmentBuilder::REQUESTTYPE_FE); + $cacheDataCollector = new CacheDataCollector(); + $request = $request->withAttribute('frontend.cache.collector', $cacheDataCollector); $GLOBALS['TYPO3_REQUEST'] = $request; $GLOBALS['TSFE'] = $this->getTypoScriptFrontendController($site, $tsfe['id']); @@ -371,6 +374,8 @@ public function menuIdTagsAreAddedToPageCache(array $tsfe, array $configuration, $request = GeneralUtility::makeInstance(ServerRequest::class); $request = $request->withAttribute('site', $site); $request = $request->withAttribute('applicationType', SystemEnvironmentBuilder::REQUESTTYPE_FE); + $cacheDataCollector = new CacheDataCollector(); + $request = $request->withAttribute('frontend.cache.collector', $cacheDataCollector); $GLOBALS['TYPO3_REQUEST'] = $request; $GLOBALS['TSFE'] = $this->getTypoScriptFrontendController($site, $tsfe['id']); diff --git a/Tests/Functional/DataProcessing/TreeMenuProcessorTest.php b/Tests/Functional/DataProcessing/TreeMenuProcessorTest.php index 62d1b4f..e4149cc 100644 --- a/Tests/Functional/DataProcessing/TreeMenuProcessorTest.php +++ b/Tests/Functional/DataProcessing/TreeMenuProcessorTest.php @@ -13,6 +13,7 @@ */ use B13\Menus\DataProcessing\TreeMenu; +use TYPO3\CMS\Core\Cache\CacheDataCollector; use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Site\Entity\Site; @@ -401,6 +402,8 @@ public function processTest(array $tsfe, array $configuration, array $expected): $request = GeneralUtility::makeInstance(ServerRequest::class); $request = $request->withAttribute('site', $site); $request = $request->withAttribute('applicationType', SystemEnvironmentBuilder::REQUESTTYPE_FE); + $cacheDataCollector = new CacheDataCollector(); + $request = $request->withAttribute('frontend.cache.collector', $cacheDataCollector); $GLOBALS['TYPO3_REQUEST'] = $request; $GLOBALS['TSFE'] = $this->getTypoScriptFrontendController($site, $tsfe['id']); @@ -466,6 +469,8 @@ public function menuIdTagsAreAddedToPageCache(array $tsfe, int $entryPoints, arr $request = GeneralUtility::makeInstance(ServerRequest::class); $request = $request->withAttribute('site', $site); $request = $request->withAttribute('applicationType', SystemEnvironmentBuilder::REQUESTTYPE_FE); + $cacheDataCollector = new CacheDataCollector(); + $request = $request->withAttribute('frontend.cache.collector', $cacheDataCollector); $GLOBALS['TYPO3_REQUEST'] = $request; $GLOBALS['TSFE'] = $this->getTypoScriptFrontendController($site, $tsfe['id']);