diff --git a/ground/classes/Model.php b/ground/classes/Model.php index c1f8645..85f9d1b 100644 --- a/ground/classes/Model.php +++ b/ground/classes/Model.php @@ -147,7 +147,13 @@ abstract class Model $sql = 'SELECT * FROM `' . $this->_tableName_ . '`'; $sql .= isset($params['where']) && $params['where'] ? ' WHERE ' . $params['where'] : ''; $sql .= isset($params['order']) && $params['order'] ? ' ORDER BY ' . $params['order'] : ''; - $sql .= isset($params['limit']) && $params['limit'] ? ' LIMIT ' . $params['limit'] : ''; + if (isset($params['limit']) && $params['limit']) { + if (isset($params['offset']) && $params['offset']) { + $sql .= ' LIMIT ' . $params['offset'] . ', ' . $params['limit']; + } else { + $sql .= ' LIMIT ' . $params['limit']; + } + } $res = App::DB()->query($sql); $ready = array(); @@ -298,4 +304,18 @@ abstract class Model $this->_vals_[$this->_primaryKey_] = $this->_id_ = NULL; } + function getCount($params = array()) + { + $sql = 'SELECT count(*) AS `cnt` FROM `' . $this->_tableName_ . '`'; + $sql .= isset($params['where']) && $params['where'] ? ' WHERE ' . $params['where'] : ''; + $res = App::DB()->query($sql); + + $ready = array(); + + + $row = $res->fetch(PDO::FETCH_ASSOC); + + return (int)$row['cnt']; + } + } diff --git a/ground/controllers/PageController.php b/ground/controllers/PageController.php index d60beea..e71a450 100644 --- a/ground/controllers/PageController.php +++ b/ground/controllers/PageController.php @@ -2,6 +2,7 @@ class PageController extends Controller { + const elementsByPage = 50; static function actionPoints() { @@ -37,6 +38,9 @@ class PageController extends Controller } // ------------------------------------------ + $pointsCount = Point::model()->getCount($param); + $pagesCount = ceil($pointsCount/self::elementsByPage); + $page = isset($_GET['page']) ? abs((int)$_GET['page']) : $pagesCount; $param = array(); $param['order'] = 'id DESC'; if (App::getParam('category')) { @@ -46,9 +50,13 @@ class PageController extends Controller } else { $param['where'] = '`moderate` = 1'; if (!(App::$user && App::$user->isAdmin)) { - $param['limit'] = 100; + $param['limit'] = self::elementsByPage; + if($page) { + $param['offset'] = self::elementsByPage * ($pagesCount - $page); + } } } + $points = Point::model()->getAll($param); $categories = Category::model()->getAll(array('order' => 'ord ASC')); @@ -69,8 +77,10 @@ class PageController extends Controller self::render('pointsTemplate.php', array( 'categories' => $categories, -// 'user' => App::$user, 'points' => $result, + 'pointsCount' => $pointsCount, + 'page' => $page, + 'pagesCount' => $pagesCount, 'notModeratedPoints' => $notModeratedPoints, 'randomPoint' => Point::model()->getRandom(), )); diff --git a/ground/views/pointsTemplate.php b/ground/views/pointsTemplate.php index 7104a8d..88d3e70 100644 --- a/ground/views/pointsTemplate.php +++ b/ground/views/pointsTemplate.php @@ -39,8 +39,9 @@ if (App::getParam('user')) { print ""; } ?> + Все точки name . '"'; } @@ -58,6 +59,25 @@ if (App::getParam('user')) { + + +