From 0ac8c40c0a2439c07b81a59378a197f07f814274 Mon Sep 17 00:00:00 2001
From: Matthias Adrowski <matthias.adrowski@sgalinski.de>
Date: Thu, 27 Jan 2022 17:12:47 +0100
Subject: [PATCH] [TASK] Fix last Issues, get index full working

---
 Classes/Paginator/QueryBuilderPaginator.php   |  3 ++-
 .../ViewHelpers/Backend/ControlViewHelper.php | 21 +++++++++++++++----
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/Classes/Paginator/QueryBuilderPaginator.php b/Classes/Paginator/QueryBuilderPaginator.php
index 4dd6f50..5d9dd48 100644
--- a/Classes/Paginator/QueryBuilderPaginator.php
+++ b/Classes/Paginator/QueryBuilderPaginator.php
@@ -67,7 +67,8 @@ final class QueryBuilderPaginator extends AbstractPaginator {
 	}
 
 	protected function getTotalAmountOfItems(): int {
-		$totalItems = $this->queryBuilder
+		$countBuilder = clone $this->queryBuilder;
+		$totalItems = $countBuilder
 			->setMaxResults(99999)
 			->setFirstResult(0)
 			->count('uid')
diff --git a/Classes/ViewHelpers/Backend/ControlViewHelper.php b/Classes/ViewHelpers/Backend/ControlViewHelper.php
index 29079f3..c490812 100644
--- a/Classes/ViewHelpers/Backend/ControlViewHelper.php
+++ b/Classes/ViewHelpers/Backend/ControlViewHelper.php
@@ -65,9 +65,24 @@ class ControlViewHelper extends AbstractViewHelper {
 		}
 
 		$databaseRecordList = GeneralUtility::makeInstance(DatabaseRecordList::class);
+		if ($table === 'pages') {
+			if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
+				$databaseRecordList->searchlevels = 1;
+			}
+			else {
+				// searchLevels is Init with 0 and can only be set by using ->start
+				$databaseRecordList->start($row['uid'], $table, 0, '', 1, 1);
+			}
+		}
+
 		$backendUser = $GLOBALS['BE_USER'];
 		$pageInfo = BackendUtility::readPageAccess($row['pid'], $backendUser->getPagePermsClause(1));
-		$databaseRecordList->calcPerms = $GLOBALS['BE_USER']->calcPerms($pageInfo);
+		if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '<')) {
+			$databaseRecordList->calcPerms = $GLOBALS['BE_USER']->calcPerms($pageInfo);
+		}
+		else {
+			$databaseRecordList->calcPerms = new \TYPO3\CMS\Core\Type\Bitmask\Permission($GLOBALS['BE_USER']->calcPerms($pageInfo));
+		}
 		$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
 		$pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/AjaxDataHandler');
 		$pageRenderer->addInlineLanguageLabelFile('EXT:backend/Resources/Private/Language/locallang_alt_doc.xlf');
@@ -75,9 +90,7 @@ class ControlViewHelper extends AbstractViewHelper {
 		$languageService->includeLLFile('EXT:backend/Resources/Private/Language/locallang_alt_doc.xlf');
 
 		$databaseRecordList->currentTable = $sortingData;
-		if ($table === 'pages') {
-			$databaseRecordList->searchLevels = 1;
-		}
+
 
 		$out = $databaseRecordList->makeControl($table, $row);
 		if ($table === 'pages') {
-- 
GitLab