/** * 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 all 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) { return $paginator->getPagesInRange(1, $paginator->count()); }
public function testGetsPagesInOutOfBoundsRange() { $actual = $this->_paginator->getPagesInRange(-1, 12); $this->assertEquals(array_combine(range(1, 11), range(1, 11)), $actual); }
public function testGetPagesInRangeOutOfBounds() { $this->_restorePaginatorDefaults(); $actual = $this->_paginator->getPagesInRange(-1, 12); $this->assertEquals(array_combine(range(1, 11), range(1, 11)), $actual); }