From 4a5eee6b73b1c7749c004a2daf15fee6d42f6418 Mon Sep 17 00:00:00 2001
From: Stefan Froemken <froemken@gmail.com>
Date: Tue, 9 May 2023 14:40:58 +0200
Subject: [PATCH] [BUGFIX] Fix type error in for pageType in f:uri.page
 ViewHelper

The Fluid ViewHelper `f:uri.page` will now cast argument `pageType` to
int before using it.

Resolves: #100845
Releases: main, 12.4, 11.5
Change-Id: Ifbda5befa0757975c20411bfac2549a3affab9bf
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/79132
Tested-by: core-ci <typo3@b13.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
---
 typo3/sysext/fluid/Classes/ViewHelpers/Uri/PageViewHelper.php | 2 +-
 .../Tests/Functional/ViewHelpers/Link/PageViewHelperTest.php  | 4 ++++
 .../Tests/Functional/ViewHelpers/Uri/PageViewHelperTest.php   | 4 ++++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Uri/PageViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Uri/PageViewHelper.php
index 728a4c0f29d8..98cfad40bb0b 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/Uri/PageViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/Uri/PageViewHelper.php
@@ -94,7 +94,7 @@ class PageViewHelper extends AbstractViewHelper
         }
         $pageUid = $arguments['pageUid'];
         $additionalParams = $arguments['additionalParams'];
-        $pageType = $arguments['pageType'];
+        $pageType = (int)($arguments['pageType'] ?? 0);
         $noCache = $arguments['noCache'];
         $section = $arguments['section'];
         $language = $arguments['language'] ?? null;
diff --git a/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Link/PageViewHelperTest.php b/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Link/PageViewHelperTest.php
index 84e349af1989..159937f01cd5 100644
--- a/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Link/PageViewHelperTest.php
+++ b/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Link/PageViewHelperTest.php
@@ -43,6 +43,10 @@ class PageViewHelperTest extends FunctionalTestCase
                 '<f:link.page pageUid="1">linkMe</f:link.page>',
                 '<a href="/">linkMe</a>',
             ],
+            'link to root page with page type' => [
+                '<f:link.page pageUid="1" pageType="1234">linkMe</f:link.page>',
+                '<a href="/?type=1234">linkMe</a>',
+            ],
             'link to page sub page' => [
                 '<f:link.page pageUid="3">linkMe</f:link.page>',
                 '<a href="/dummy-1-2/dummy-1-2-3">linkMe</a>',
diff --git a/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Uri/PageViewHelperTest.php b/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Uri/PageViewHelperTest.php
index 059c9a43dbec..2b8e5fa884d6 100644
--- a/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Uri/PageViewHelperTest.php
+++ b/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Uri/PageViewHelperTest.php
@@ -43,6 +43,10 @@ class PageViewHelperTest extends FunctionalTestCase
                 '<f:uri.page pageUid="1" />',
                 '/',
             ],
+            'link to root page with page type' => [
+                '<f:uri.page pageUid="1" pageType="1234" />',
+                '/?type=1234',
+            ],
             'link to page sub page' => [
                 '<f:uri.page pageUid="3" />',
                 '/dummy-1-2/dummy-1-2-3',
-- 
GitLab