From 0bb438a00df79173bfef621f1b3a16486fac279d Mon Sep 17 00:00:00 2001 From: Susanne Moog <susanne.moog@typo3.com> Date: Sat, 9 Dec 2017 16:01:06 +0100 Subject: [PATCH] [BUGFIX] Fix offset and limit in list module Offset and limit in a count query do not make sense. Additionally the hook deprecation was incomplete as the core also threw deprecation warnings on list module pagination. Change-Id: I8435d15c981f47e2940dbbf470e2de84fc3d5055 Resolves: #83269 Releases: master Reviewed-on: https://review.typo3.org/54999 Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Benni Mack <benni@typo3.org> Tested-by: Benni Mack <benni@typo3.org> --- .../recordlist/Classes/RecordList/DatabaseRecordList.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php index 4f6f7a62af3c..a714577e090b 100644 --- a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php +++ b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php @@ -3200,6 +3200,10 @@ class DatabaseRecordList $queryBuilder->setMaxResults($this->iLimit); } + if ($this->firstElementNumber > 0) { + $queryBuilder->setFirstResult($this->firstElementNumber); + } + if ($addSorting) { if ($this->sortField && in_array($this->sortField, $this->makeFieldList($table, 1))) { $queryBuilder->orderBy($this->sortField, $this->sortRev ? 'DESC' : 'ASC'); @@ -3284,7 +3288,7 @@ class DatabaseRecordList $queryBuilder->addOrderBy($fieldName, $sorting); } } - if (!empty($parameters['firstResult'])) { + if (!empty($parameters['firstResult']) && $parameters['firstResult'] !== $this->firstElementNumber) { $this->logDeprecation('firstResult'); $queryBuilder->setFirstResult((int)$parameters['firstResult']); } @@ -3325,6 +3329,9 @@ class DatabaseRecordList } $queryBuilder = $this->prepareQueryBuilder($table, $pageId, ['*'], $constraints, $queryBuilder, false); + // Reset limit and offset for full count query + $queryBuilder->setFirstResult(0); + $queryBuilder->setMaxResults(1); $this->totalItems = (int)$queryBuilder->count('*') ->execute() -- GitLab