From 20134e6a4f77907f560f240a68d1d627a0d23b38 Mon Sep 17 00:00:00 2001 From: Loz Calver Date: Sun, 7 Nov 2021 20:26:21 +0000 Subject: [PATCH] NEW Add FirstPage() and LastPage() to PaginatedList (#10129) --- src/ORM/PaginatedList.php | 20 ++++++++++++++++++-- tests/php/ORM/PaginatedListTest.php | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/ORM/PaginatedList.php b/src/ORM/PaginatedList.php index 200d7b006..92c025194 100644 --- a/src/ORM/PaginatedList.php +++ b/src/ORM/PaginatedList.php @@ -394,12 +394,28 @@ class PaginatedList extends ListDecorator return $this->TotalPages() > 1; } + /** + * @return bool + */ + public function FirstPage() + { + return $this->CurrentPage() == 1; + } + /** * @return bool */ public function NotFirstPage() { - return $this->CurrentPage() != 1; + return !$this->FirstPage(); + } + + /** + * @return bool + */ + public function LastPage() + { + return $this->CurrentPage() == $this->TotalPages(); } /** @@ -407,7 +423,7 @@ class PaginatedList extends ListDecorator */ public function NotLastPage() { - return $this->CurrentPage() < $this->TotalPages(); + return !$this->LastPage(); } /** diff --git a/tests/php/ORM/PaginatedListTest.php b/tests/php/ORM/PaginatedListTest.php index dd9e30b69..29b3c09f4 100644 --- a/tests/php/ORM/PaginatedListTest.php +++ b/tests/php/ORM/PaginatedListTest.php @@ -282,6 +282,14 @@ class PaginatedListTest extends SapphireTest $this->assertFalse($list->MoreThanOnePage()); } + public function testFirstPage() + { + $list = new PaginatedList(new ArrayList()); + $this->assertTrue($list->FirstPage()); + $list->setCurrentPage(2); + $this->assertFalse($list->FirstPage()); + } + public function testNotFirstPage() { $list = new PaginatedList(new ArrayList()); @@ -290,6 +298,16 @@ class PaginatedListTest extends SapphireTest $this->assertTrue($list->NotFirstPage()); } + public function testLastPage() + { + $list = new PaginatedList(new ArrayList()); + $list->setTotalItems(50); + + $this->assertFalse($list->LastPage()); + $list->setCurrentPage(5); + $this->assertTrue($list->LastPage()); + } + public function testNotLastPage() { $list = new PaginatedList(new ArrayList());