From 92d7a47d4b98c6675a2ac83d274ffdd16552018a Mon Sep 17 00:00:00 2001
From: Fabian Galinski <fabian@sgalinski.de>
Date: Tue, 7 Aug 2018 14:25:44 +0200
Subject: [PATCH] [BUGFIX] The previous duplicate news entries bugfix was just
 working for 66%

---
 Classes/Controller/ListByCategoryController.php |  2 +-
 Classes/Controller/OverviewController.php       | 12 +++---------
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/Classes/Controller/ListByCategoryController.php b/Classes/Controller/ListByCategoryController.php
index 5d63356..677a1b1 100644
--- a/Classes/Controller/ListByCategoryController.php
+++ b/Classes/Controller/ListByCategoryController.php
@@ -102,7 +102,7 @@ class ListByCategoryController extends AbstractController {
 		$numberOfPages = ($newsPerPage <= 0 ? 0 : ceil($newsCount / $newsPerPage));
 
 		$headerSet = FALSE;
-		$offset = $this->calculatePaginationOffset($currentPageBrowserPage);
+		$offset = $this->calculatePaginationOffset($currentPageBrowserPage, $newsPerPage);
 
 		$news = $this->newsRepository->findAllSortedNewsByCategories(
 			$categoryUids, $newsPerPage, $offset, $this->settings['sortBy'], $tagUids, $startTime, $endTime
diff --git a/Classes/Controller/OverviewController.php b/Classes/Controller/OverviewController.php
index c5132a8..00fada2 100644
--- a/Classes/Controller/OverviewController.php
+++ b/Classes/Controller/OverviewController.php
@@ -239,7 +239,7 @@ class OverviewController extends AbstractController {
 		$newsCount = $this->newsRepository->newsCountByCategories($categoryIds, $tagIds, $startTime, $endTime);
 		$numberOfPages = ($newsLimitPerCategory <= 0 ? 0 : ceil($newsCount / $newsLimitPerCategory));
 		// Redo this function, until one variable get the amount of newsLimitPerTag. Reduces the amount of ajax calls. Needed because of languagevisibility.
-		if ($maxNewsPerCategory < $newsLimitPerCategory && count($allNews) < $newsLimitPerCategory) {
+		if ($maxNewsPerCategory < $newsLimitPerCategory && \count($allNews) < $newsLimitPerCategory) {
 			$nextPage = $currentPageBrowserPage + 1;
 			if ($nextPage <= $numberOfPages) {
 				$this->setPageBrowserPage($nextPage);
@@ -445,13 +445,11 @@ class OverviewController extends AbstractController {
 		$this->view->assign('selectedTag', $selectedTag);
 		$this->view->assign('selectedCategory', $selectedCategory);
 
-		$offset = $this->calculatePaginationOffset($currentPageBrowserPage);
-
 		$newsPerPage = (int) $this->settings['newsLimit'];
+		$offset = $this->calculatePaginationOffset($currentPageBrowserPage, $newsPerPage);
 
 		$startTime = (int) $this->settings['starttime'];
 		$endTime = (int) $this->settings['endtime'];
-
 		if ($this->settings['onlyNewsWithinThisPageSection']) {
 			/** @noinspection PhpUndefinedMethodInspection */
 			$categories = $this->categoryRepository->findByPid($GLOBALS['TSFE']->id);
@@ -511,7 +509,7 @@ class OverviewController extends AbstractController {
 		$numberOfPages = ($newsPerPage <= 0 ? 0 : ceil($newsCount / $newsPerPage));
 
 		// Redo this function, until one variable get the amount of newsLimitPerTag. Reduces the amount of ajax calls. Needed because of languagevisibility.
-		if (count($newsMetaData) < $newsPerPage) {
+		if (\count($newsMetaData) < ($newsPerPage - 1)) {
 			$nextPage = $currentPageBrowserPage + 1;
 			if ($nextPage <= $numberOfPages) {
 				$this->setPageBrowserPage($nextPage);
@@ -542,10 +540,6 @@ class OverviewController extends AbstractController {
 	 * @return void
 	 */
 	protected function setPageBrowserPage($newPage) {
-		if (!isset($_GET['tx_sgnews_pagebrowser']['currentPage'])) {
-			return;
-		}
-
 		$_GET['tx_sgnews_pagebrowser']['currentPage'] = $newPage;
 	}
 }
-- 
GitLab