This commit is contained in:
Anatoly 2018-01-15 16:22:12 +03:00
commit f33afc2861
18 changed files with 240 additions and 48 deletions

57
src/View/Pages.php Normal file
View file

@ -0,0 +1,57 @@
<?php
/**
* @package system.widgets
*/
class View_Pages
{
static $range = 5;
static function getPages($page, $onpage, $count, $prefix = '?')
{
$n = ceil($count / $onpage);
if ($page > $n) $page = $n;
if ($page < 1) $page = 1;
$url = 'page=';
$result = array();
for ($i = max($page - self::$range, 1); $i <= min($n, $page + self::$range); $i++) {
$result [] = array('page' => $i, 'href' => ($i != $page) ? self::href($prefix, $url . $i) : false);
}
return array(
'all' => ($n > 1),
'list' => $result,
'first' => self::href($prefix, $url . 1),
'last' => self::href($prefix, $url . $n),
'next' => ($page == $n)? false : self::href($prefix, $url . ($page + 1)) ,
'prev' => ($page == 1)? false : self::href($prefix, $url . ($page - 1)));
}
/**
* @deprecated
* @param $page int номер страницы
* @param $onpage int количество элем на странице
* @return string
*/
static function getLimit(/*.number.*/$page, /*.number.*/$onpage) {
if ($page <= 0) { $page = 1; }
return "LIMIT $onpage OFFSET " . ($page - 1) * $onpage;
}
/**
* @param $page int номер страницы
* @param $onpage int количество элем на странице
* @return array
*/
static function _getLimit($page, $onpage) {
if ($page <= 0) { $page = 1; }
return array(
'count' => $onpage,
'start' => ($page - 1) * $onpage,
);
}
static function href($prefix, $x) {
return $prefix . $x;
}
}