Commit e01809d1 authored by wernerm's avatar wernerm

Fixed returned range bug(s)

parent c6e20867
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
* and is licensed under the LGPL. For more information, see * and is licensed under the LGPL. For more information, see
* <http://www.phpdoctrine.com>. * <http://www.phpdoctrine.com>.
*/ */
Doctrine::autoload('Doctrine_Pager_Range'); Doctrine::autoload('Doctrine_Pager_Range');
/** /**
...@@ -81,7 +81,12 @@ class Doctrine_Pager_Range_Sliding extends Doctrine_Pager_Range ...@@ -81,7 +81,12 @@ class Doctrine_Pager_Range_Sliding extends Doctrine_Pager_Range
*/ */
protected function _setChunkLength($chunkLength) protected function _setChunkLength($chunkLength)
{ {
$this->_chunkLength = $chunkLength; $chunkLength = (int) $chunkLength;
if (!$chunkLength) {
$chunkLength = 1;
} else {
$this->_chunkLength = $chunkLength;
}
} }
...@@ -95,25 +100,29 @@ class Doctrine_Pager_Range_Sliding extends Doctrine_Pager_Range ...@@ -95,25 +100,29 @@ class Doctrine_Pager_Range_Sliding extends Doctrine_Pager_Range
public function rangeAroundPage() public function rangeAroundPage()
{ {
$pager = $this->getPager(); $pager = $this->getPager();
$page = $pager->getPage(); $page = $pager->getPage();
$pages = $pager->getLastPage();
// Define initial assignments for StartPage and EndPage $chunk = $this->getChunkLength();
$startPage = $page - floor($this->getChunkLength() - 1) / 2; if ($chunk > $pages) {
$endPage = ($startPage + $this->getChunkLength()) - 1; $chunk = $pages;
}
// Check for EndPage out-range $chunkStart = $page - (floor($chunk / 2));
if ($endPage > $pager->getLastPage()) { $chunkEnd = $page + (ceil($chunk / 2)-1);
$offset = $endPage - $pager->getLastPage();
$endPage = $pager->getLastPage(); if ($chunkStart < 1) {
$startPage = $startPage - $offset; $adjust = 1 - $chunkStart;
$chunkStart = 1;
$chunkEnd = $chunkEnd + $adjust;
} }
if ($chunkEnd > $pages) {
// Check for StartPage out-range $adjust = $chunkEnd - $pages;
if ($startPage < $pager->getFirstPage()) { $chunkStart = $chunkStart - $adjust;
$startPage = $pager->getFirstPage(); $chunkEnd = $pages;
} }
return range($startPage, $endPage); return range($chunkStart, $chunkEnd);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment