/** * Returns an array of "local" pages given a page number and range. * * @param Zend_Paginator $paginator * @param integer $pageRange (Optional) Page range * @return array */ public function getPages(Zend_Paginator $paginator, $pageRange = null) { if ($pageRange === null) { $pageRange = $paginator->getPageRange(); } $pageNumber = $paginator->getCurrentPageNumber(); $pageCount = count($paginator); if ($pageRange > $pageCount) { $pageRange = $pageCount; } $delta = ceil($pageRange / 2); if ($pageNumber - $delta > $pageCount - $pageRange) { $lowerBound = $pageCount - $pageRange + 1; $upperBound = $pageCount; } else { if ($pageNumber - $delta < 0) { $delta = $pageNumber; } $offset = $pageNumber - $delta; $lowerBound = $offset + 1; $upperBound = $offset + $pageRange; } return $paginator->getPagesInRange($lowerBound, $upperBound); }
public function testGetSetPageRange() { $this->_restorePaginatorDefaults(); $this->assertEquals(10, $this->_paginator->getPageRange()); $this->_paginator->setPageRange(15); $this->assertEquals(15, $this->_paginator->getPageRange()); }
/** * Returns an array of "local" pages given a page number and range. * * @param Zend_Paginator $paginator * @param integer $pageRange (Optional) Page range * @return array */ public function getPages(Zend_Paginator $paginator, $pageRange = null) { // This is unused if ($pageRange === null) { $pageRange = $paginator->getPageRange(); } $pageNumber = $paginator->getCurrentPageNumber(); $pageCount = count($paginator); $range = array(); if ($pageCount < 10) { // Show all pages if we have less than 10. for ($i = 1; $i < 10; $i++) { if ($i > $pageCount) { break; } $range[$i] = $i; } } else { // More than 10 pages: foreach (array(1, 2) as $i) { $range[$i] = $i; } if ($pageNumber < 6) { // We are on page 1-5 from for ($i = 1; $i <= 7; $i++) { $range[$i] = $i; } } else { // Current page > 5 $range[] = '...'; // Less than 5 pages left if ($pageCount - $pageNumber < 5) { $start = 5 - ($pageCount - $pageNumber); } else { $start = 1; } for ($i = $pageNumber - $start; $i < $pageNumber + (4 - $start); $i++) { if ($i > $pageCount) { break; } $range[$i] = $i; } } if ($pageNumber < $pageCount - 2) { $range[] = '...'; } foreach (array($pageCount - 1, $pageCount) as $i) { $range[$i] = $i; } } if (empty($range)) { $range[] = 1; } return $range; }
/** * Returns an array of "local" pages given a page number and range. * * @param Zend_Paginator $paginator * @param integer $pageRange Unused * @return array */ public function getPages(Zend_Paginator $paginator, $pageRange = null) { $pageRange = $paginator->getPageRange(); $pageNumber = $paginator->getCurrentPageNumber(); $originalPageRange = $pageRange; $pageRange = $pageRange * 2 - 1; if ($originalPageRange + $pageNumber - 1 < $pageRange) { $pageRange = $originalPageRange + $pageNumber - 1; } return parent::getPages($paginator, $pageRange); }
/** * @group ZF-4193 */ public function testCastsIntegerValuesToInteger() { // Current page number $this->_paginator->setCurrentPageNumber(3.3); $this->assertTrue($this->_paginator->getCurrentPageNumber() == 3); // Item count per page $this->_paginator->setItemCountPerPage(3.3); $this->assertTrue($this->_paginator->getItemCountPerPage() == 3); // Page range $this->_paginator->setPageRange(3.3); $this->assertTrue($this->_paginator->getPageRange() == 3); }
/** * Returns an array of "local" pages given a page number and range. * * @param Zend_Paginator $paginator * @param integer $pageRange Unused * @return array */ public function getPages(Zend_Paginator $paginator, $pageRange = null) { $pageRange = $paginator->getPageRange(); $pageNumber = $paginator->getCurrentPageNumber(); $delta = $pageNumber % $pageRange; if ($delta == 0) { $delta = $pageRange; } $offset = $pageNumber - $delta; $lowerBound = $offset + 1; $upperBound = $offset + $pageRange; return $paginator->getPagesInRange($lowerBound, $upperBound); }
/** * Create the page object used in View - paginator method * @access public * @return object */ public function getPages() { $pages = new stdClass(); $pageCount = $this->_paginator->count(); $pages->pageCount = $pageCount; $pages->itemCountPerPage = $this->_itemCountPerPage; $pages->first = 1; $pages->current = (int) $this->_currentPage; $pages->last = $pageCount; // Previous and next if ($this->_currentPage - 1 > 0) { $pages->previous = $this->_currentPage - 1; } if ($this->_currentPage + 1 <= $pageCount) { $pages->next = $this->_currentPage + 1; } // Pages in range $pageRange = $this->_paginator->getPageRange(); if ($pageRange > $pageCount) { $pageRange = $pageCount; } $delta = ceil($pageRange / 2); if ($this->_currentPage - $delta > $pageCount - $pageRange) { $lowerBound = $pageCount - $pageRange + 1; $upperBound = $pageCount; } else { if ($this->_currentPage - $delta < 0) { $delta = $this->_currentPage; } $offset = $this->_currentPage - $delta; $lowerBound = $offset + 1; $upperBound = $offset + $pageRange; } $pages->pagesInRange = $this->_paginator->getPagesInRange($lowerBound, $upperBound); $pages->firstPageInRange = min($pages->pagesInRange); $pages->lastPageInRange = max($pages->pagesInRange); // Item numbers if ($this->_currentItems == null) { $this->getCurrentItems(); } if ($this->_currentItems !== null) { $pages->currentItemCount = $this->_paginator->getCurrentItemCount(); $pages->itemCountPerPage = $this->_paginator->getItemCountPerPage(); $pages->totalItemCount = $this->_paginator->getTotalItemCount(); $pages->firstItemNumber = ($this->_currentPage - 1) * $this->_paginator->getItemCountPerPage() + 1; $pages->lastItemNumber = $pages->firstItemNumber + $pages->currentItemCount - 1; } return $pages; }
/** * Returns an array of "local" pages given a page number and range. * * @param Zend_Paginator $paginator * @param integer $pageRange (Optional) Page range * @return array */ public function getPages(Zend_Paginator $paginator, $pageRange = null) { if ($pageRange === null) { $pageRange = $paginator->getPageRange(); } $pageNumber = $paginator->getCurrentPageNumber(); $pageCount = count($paginator); $range = array(); if ($pageCount < 15) { for ($i = 1; $i < 15; $i++) { if ($i > $pageCount) { break; } $range[$i] = $i; } } else { foreach (array(1, 2) as $i) { $range[$i] = $i; } if ($pageNumber > 8) { $range[] = '...'; $start = 5; if ($pageCount - $pageNumber < 8) { $start = 9 - ($pageCount - $pageNumber); } for ($i = $pageNumber - $start; $i < $pageNumber + (10 - $start); $i++) { if ($i > $pageCount) { break; } $range[$i] = $i; } } else { for ($i = 3; $i <= 10; $i++) { $range[$i] = $i; } } if ($pageNumber < $pageCount - 7) { $range[] = '...'; foreach (array($pageCount - 1, $pageCount) as $i) { $range[$i] = $i; } } } if (empty($range)) { $range[] = 1; } return $range; }