ACC SHELL
<?php
class Paginator
{
private $currentPage;
private $currentPageQueryString;
private $itemsPerPage;
private $itemsCount;
private $pageURL;
private $pageURLparameter;
public function __construct( $currentPage, $itemsPerPage, $itemsCount, $pageURL, $pageURLparameter = 'page' )
{
$this->currentPage = $currentPage;
$this->currentPageQueryString = '';
$pos = strpos( $pageURL, '?' );
if ( !( $pos === false ) )
$this->currentPageQueryString = substr( $pageURL, $pos + 1 );
$this->itemsPerPage = $itemsPerPage;
$this->itemsCount = $itemsCount;
$this->pageURL = $pageURL;
$this->pageURLparameter = $pageURLparameter;
}
// return: array( 'start' => .., 'end' => .. )
public function getItemsRangeForCurrentPage()
{
$start = $this->currentPage * $this->itemsPerPage;
$end = $start + $this->itemsPerPage;
if ( $end > $this->itemsCount )
$end = $this->itemsCount;
$range = array();
$range['start'] = $start;
$range['end'] = $end;
return $range;
}
// return: array( 'pages' => '', 'firstPage' => .., 'prevPage' => .., 'nextPage' => .., 'lastPage' => .. )
public function getPages( $reverse = false )
{
$pages = '';
$firstPage = ''; $prevPage = '';
$nextPage = ''; $lastPage = '';
$maxPages = ceil( $this->itemsCount / $this->itemsPerPage );
for ( $i = 1; $i <= $maxPages; $i++ )
{
if ( $this->pageURL == '' )
{
$pageHref = $_SERVER['REQUEST_URI'];
}
else
{
$pageURLexploded = explode( '?', $this->pageURL );
if ( isset( $pageURLexploded[0] ) )
$pageHref = $pageURLexploded[0];
}
if ( ( $i > 1 ) /*&& ( $this->currentPageQueryString != '' )*/ )
{
if ( $this->currentPageQueryString == '' )
{
$pageHref .= '?' . $this->pageURLparameter . '=' . $i;
}
else
{
$params = explode( '&', $this->currentPageQueryString );
$pageHref = '?';
foreach ( $params as $param )
{
$pos = strpos( $param, $this->pageURLparameter . '=' );
if ( $pos === false )
$pageHref .= $param . '&';
}
$pageHref .= $this->pageURLparameter . '=' . $i;
}
}
else
{
//$pageHref = 'abc';
}
// first page
if ( ( $i == 1 ) && ( $i != $this->currentPage + 1 ) )
$firstPage = '<div class="numberbutton"><a href="' . $pageHref . '"> << </a></div>';
// previous page
if ( ( $this->currentPage + 1 ) == ( $i + 1 ) )
$prevPage = '<div class="numberbutton"><a href="' . $pageHref . '"> < </a></div>';
// current page
if ( ( $this->currentPage + 1 ) == $i )
{
if ( $reverse )
$pages = '<div class="numberbutton" style="font-weight:bold;"><a href="' . $pageHref . '"> <span class="numberbutton-selected">' . $i. '</span> </a></div>'. $pages;
else
$pages .= '<div class="numberbutton" style="font-weight:bold;"><a href="' . $pageHref . '"> <span class="numberbutton-selected">' . $i. '</span> </a></div>';
}
// other pages
else
{
if ( $reverse )
$pages = '<div class="numberbutton"><a href="' . $pageHref . '"> ' . $i. ' </a></div>' . $pages;
else
$pages .= '<div class="numberbutton"><a href="' . $pageHref . '"> ' . $i. ' </a></div>';
}
// last page
if ( ( $i == $maxPages ) && ( $i != $this->currentPage + 1 ) )
$lastPage = '<div class="numberbutton"><a href="' . $pageHref . '"> >> </a></div>';
// next page
if ( ( $this->currentPage + 1 ) == ( $i - 1 ) )
$nextPage = '<div class="numberbutton"><a href="' . $pageHref . '"> > </a></div>';
// separator
//if ( $i < $maxPages )
// $pages .= ' | ';
}
$paginator = array();
$paginator['pages'] = $pages;
if ( $reverse )
{
$paginator['firstPage'] = $lastPage;
$paginator['prevPage'] = $nextPage;
$paginator['nextPage'] = $prevPage;
$paginator['lastPage'] = $firstPage;
}
else
{
$paginator['firstPage'] = $firstPage;
$paginator['prevPage'] = $prevPage;
$paginator['nextPage'] = $nextPage;
$paginator['lastPage'] = $lastPage;
}
return $paginator;
}
}
?>
ACC SHELL 2018