File Manager
<?php
namespace CGExtensions\query;
class pagination implements \ArrayAccess
{
private $_rs;
public function __construct(resultset &$rs)
{
$this->_rs = $rs;
}
public function OffsetGet($key)
{
switch( $key ) {
case 'pagecount':
$n = $this->_rs->TotalMatches();
$p = (int) ceil($n / $this->_rs->get_query()['limit']);
return $p;
case 'page':
$p = (int)($this->_rs->get_query()['offset'] / $this->_rs->get_query()['limit']) + 1;
return $p;
case 'pagelimit':
return $this->_rs->get_query()['limit'];
case 'totalrows':
return $this->_rs->TotalMatches();
default:
throw new \RuntimeException($key.' is not a member of '.__CLASS__);
}
}
public function OffsetSet($key,$value)
{
// do nothing
}
public function OffsetExists($key)
{
// do nothing
}
public function OffsetUnset($key)
{
// do nothing
}
public function get_pagelist($surround = 3)
{
$list = array();
for( $i = 1; $i <= min($surround,$this['pagecount']); $i++ ) {
$list[] = (int)$i;
}
$x1 = max(1,(int)($this['page'] + $surround / 2));
$x2 = min($this['pagecount'],(int)($this['page'] + $surround / 2) );
for( $i = $x1; $i <= $x2; $i++ ) {
$list[] = (int)$i;
}
for( $i = max(1,$this['pagecount'] - $surround); $i <= $this['pagecount']; $i++) {
$list[] = (int)$i;
}
$list = array_unique($list);
sort($list);
return $list;
}
public function get_pagehash($surround = 3)
{
$list = $this->get_pagelist($surround);
$out = array();
foreach( $list as $one ) {
$out[$one] = $one;
}
return $out;
}
} // end of class
?>
File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com