<?php
class PaginatedByPage extends Extension {
protected $pageNumGetVar = "page";
public function PageNums($maxPages = 0){
$ret = new DataObjectSet();
if($maxPages) {
$startPage = ($this->owner->CurrentPage() - floor($maxPages / 2)) - 1;
$endPage = $this->owner->CurrentPage() + floor($maxPages / 2);
if($startPage < 0) {
$startPage = 0;
$endPage = $maxPages;
}
if($endPage > $this->owner->TotalPages()) {
$endPage = $this->owner->TotalPages();
$startPage = max(0, $endPage - $maxPages);
}
} else {
$startPage = 0;
$endPage = $this->owner->TotalPages();
}
for($i=$startPage; $i < $endPage; $i++){
if($i == 0) {
$link = HTTP::setGetVar($this->pageNumGetVar, $i + 1);
} else {
$link = HTTP::setGetVar($this->pageNumGetVar, $i + 1);
}
$thePage = new ArrayData(array(
"PageNum" => $i+1,
"Link" => $link,
"CurrentBool" => ($this->owner->CurrentPage() == $i+1)?true:false,
)
);
$ret->push($thePage);
}
return $ret;
}
public function PageNextLink() {
if($this->owner->pageStart + $this->owner->pageLength < $this->owner->totalSize) {
return HTTP::setGetVar($this->pageNumGetVar, $this->owner->CurrentPage() + 1);
}
}
public function PagePrevLink() {
if($this->owner->pageStart - $this->owner->pageLength >= 0) {
return HTTP::setGetVar($this->pageNumGetVar, $this->CurrentPage() - 1);
}
}
}
?>