paginator/ 0000775 0000764 0000764 00000000000 11222560536 013550 5 ustar ahsanchez ahsanchez paginator/__MACOSX/ 0000775 0000764 0000764 00000000000 10652767316 015053 5 ustar ahsanchez ahsanchez paginator/src/ 0000755 0000764 0000764 00000000000 10631053430 014326 5 ustar ahsanchez ahsanchez paginator/__MACOSX/src/ 0000775 0000764 0000764 00000000000 10652767316 015642 5 ustar ahsanchez ahsanchez paginator/src/TrailingLayout.php 0000644 0000764 0000764 00000000646 10652762343 020031 0 ustar ahsanchez ahsanchez getPageNumber();
$totalPages = $parent->fetchNumberPages();
$str = "";
if($totalPages >= 1) {
for($i = 1; $i <= $totalPages; $i++) {
$str .= " Page $i";
$str .= $i != $totalPages ? " | " : "";
}
}
return $str;
}
}
?> paginator/src/Paginated.php 0000644 0000764 0000764 00000006426 10652762212 016753 0 ustar ahsanchez ahsanchez
/**
* The intention of the Paginated class is to manage the iteration of records
* based on a specified page number usually addressed by a get parameter in the query string
* and to use a layout interface to produce number pages based on the amount of elements
*/
require_once "PageLayout.php";
class Paginated {
private $rs; //result set
private $pageSize; //number of records to display
private $pageNumber; //the page to be displayed
private $rowNumber; //the current row of data which must be less than the pageSize in keeping with the specified size
private $offSet;
private $layout;
function __construct($obj, $displayRows = 10, $pageNum = 1) {
$this->setRs($obj);
$this->setPageSize($displayRows);
$this->assignPageNumber($pageNum);
$this->setRowNumber(0);
$this->setOffSet(($this->getPageNumber() - 1) * ($this->getPageSize()));
}
//implement getters and setters
public function setOffSet($offSet) {
$this->offSet = $offSet;
}
public function getOffSet() {
return $this->offSet;
}
public function getRs() {
return $this->rs;
}
public function setRs($obj) {
$this->rs = $obj;
}
public function getPageSize() {
return $this->pageSize;
}
public function setPageSize($pages) {
$this->pageSize = $pages;
}
//accessor and mutator for page numbers
public function getPageNumber() {
return $this->pageNumber;
}
public function setPageNumber($number) {
$this->pageNumber = $number;
}
//fetches the row number
public function getRowNumber() {
return $this->rowNumber;
}
public function setRowNumber($number) {
$this->rowNumber = $number;
}
public function fetchNumberPages() {
if (!$this->getRs()) {
return false;
}
$pages = ceil(count($this->getRs()) / (float)$this->getPageSize());
return $pages;
}
//sets the current page being viewed to the value of the parameter
public function assignPageNumber($page) {
if(($page <= 0) || ($page > $this->fetchNumberPages()) || ($page == "")) {
$this->setPageNumber(1);
}
else {
$this->setPageNumber($page);
}
//upon assigning the current page, move the cursor in the result set to (page number minus one) multiply by the page size
//example (2 - 1) * 10
}
public function fetchPagedRow() {
if((!$this->getRs()) || ($this->getRowNumber() >= $this->getPageSize())) {
return false;
}
$this->setRowNumber($this->getRowNumber() + 1);
$index = $this->getOffSet();
$this->setOffSet($this->getOffSet() + 1);
return $this->rs[$index];
}
public function isFirstPage() {
return ($this->getPageNumber() <= 1);
}
public function isLastPage() {
return ($this->getPageNumber() >= $this->fetchNumberPages());
}
/**
*
* @return PageLayout
*/
public function getLayout() {
return $this->layout;
}
/**
*
* @param PageLayout
*/
public function setLayout(PageLayout $layout) {
$this->layout = $layout;
}
//returns a string with the base navigation for the page
//if queryVars are to be added then the first parameter should be preceeded by a ampersand
public function fetchPagedNavigation($queryVars = "") {
return $this->getLayout()->fetchPagedLinks($this, $queryVars);
}//end writeNavigation
}//end Paginated
?> paginator/src/PageLayout.php 0000644 0000764 0000764 00000000407 10652756750 017134 0 ustar ahsanchez ahsanchez
/**
* The interface which specifies the behaviour all page layout classes must implement
* PageLayout is a part of Paginated and can reference programmer defined layouts
*/
interface PageLayout {
public function fetchPagedLinks($parent, $queryVars);
}
?>
paginator/src/index.php 0000644 0000764 0000764 00000002376 10652767223 016175 0 ustar ahsanchez ahsanchez
Pagination
";
while($row = $pagedResults->fetchPagedRow()) { //when $row is false loop terminates
echo "{$row}";
}
echo "";
//important to set the strategy to be used before a call to fetchPagedNavigation
$pagedResults->setLayout(new DoubleBarLayout());
echo $pagedResults->fetchPagedNavigation();
?>