diff --git a/CHANGELOG-4.0.md b/CHANGELOG-4.0.md index 6879b470a8b..6af8742bd55 100644 --- a/CHANGELOG-4.0.md +++ b/CHANGELOG-4.0.md @@ -4,6 +4,7 @@ - Added `Phalcon\Db\Adapter\Pdo\Postgresql::describeReferences` to implement custom Postgresql rules - Added `Phalcon\Mvc\Router\RouteInterface::convert` so that calling `Phalcon\Mvc\Router\Group::add` will return an instance that has `convert` method [#13380](https://github.com/phalcon/cphalcon/issues/13380) - Added `Phalcon\Mvc\ModelInterface::getModelsMetaData` [#13070](https://github.com/phalcon/cphalcon/issues/13402) +- Added `paginate()` method as a proxy of `getPaginate`. Added `previous` in the paginator object same as `before`. After 4.0 is released we will deprecate `getPaginate()`, `before` and `total_items` [#13492](https://github.com/phalcon/cphalcon/issues/13492) ## Changed - By configuring `prefix` and `statsKey` the `Phalcon\Cache\Backend\Redis::queryKeys` no longer returns prefixed keys, now it returns original keys without prefix. [#13456](https://github.com/phalcon/cphalcon/pull/13456) diff --git a/phalcon/paginator/adapter.zep b/phalcon/paginator/adapter.zep index 8a8682ae2e3..d19a4c8e5be 100644 --- a/phalcon/paginator/adapter.zep +++ b/phalcon/paginator/adapter.zep @@ -35,6 +35,14 @@ abstract class Adapter implements AdapterInterface */ protected _page = null; + /** + * Get current rows limit + */ + public function getLimit() -> int + { + return this->_limitRows; + } + /** * Set the current page number */ @@ -52,12 +60,4 @@ abstract class Adapter implements AdapterInterface let this->_limitRows = limitRows; return this; } - - /** - * Get current rows limit - */ - public function getLimit() -> int - { - return this->_limitRows; - } } diff --git a/phalcon/paginator/adapter/model.zep b/phalcon/paginator/adapter/model.zep index 9281a3c39eb..7d38a3a5ead 100644 --- a/phalcon/paginator/adapter/model.zep +++ b/phalcon/paginator/adapter/model.zep @@ -70,12 +70,22 @@ class Model extends Adapter /** * Returns a slice of the resultset to show in the pagination + * + * @deprecated will be removed after 4.0 */ public function getPaginate() -> <\stdClass> + { + return this->paginate(); + } + + /** + * Returns a slice of the resultset to show in the pagination + */ + public function paginate() -> <\stdClass> { var config, items, pageItems, page; int pageNumber, show, n, start, lastShowPage, - i, next, totalPages, before; + i, next, totalPages, previous; let show = (int) this->_limitRows, config = this->_config, @@ -136,18 +146,25 @@ class Model extends Adapter } if pageNumber > 1 { - let before = pageNumber - 1; + let previous = pageNumber - 1; } else { - let before = 1; + let previous = 1; } let page = new \stdClass(), page->items = pageItems, page->first = 1, - page->before = before, + /** + * @deprecated `before` will be removed after 4.0 + */ + page->before = previous, + page->previous = previous, page->current = pageNumber, page->last = totalPages, page->next = next, + /** + * @deprecated `total_pages` will be removed after 4.0 + */ page->total_pages = totalPages, page->total_items = n, page->limit = this->_limitRows; diff --git a/phalcon/paginator/adapter/nativearray.zep b/phalcon/paginator/adapter/nativearray.zep index 91dc1c346c1..f176fa33eb2 100644 --- a/phalcon/paginator/adapter/nativearray.zep +++ b/phalcon/paginator/adapter/nativearray.zep @@ -73,11 +73,21 @@ class NativeArray extends Adapter /** * Returns a slice of the resultset to show in the pagination + * + * @deprecated will be removed after 4.0 */ public function getPaginate() -> <\stdClass> + { + return this->paginate(); + } + + /** + * Returns a slice of the resultset to show in the pagination + */ + public function paginate() -> <\stdClass> { var config, items, page; - int show, pageNumber, totalPages, number, before, next; + int show, pageNumber, totalPages, number, previous, next; double roundedTotal; /** @@ -118,18 +128,25 @@ class NativeArray extends Adapter } if pageNumber > 1 { - let before = pageNumber - 1; + let previous = pageNumber - 1; } else { - let before = 1; + let previous = 1; } let page = new \stdClass(), page->items = items, page->first = 1, - page->before = before, + /** + * @deprecated `before` will be removed after 4.0 + */ + page->before = previous, + page->previous = previous, page->current = pageNumber, page->last = totalPages, page->next = next, + /** + * @deprecated `total_pages` will be removed after 4.0 + */ page->total_pages = totalPages, page->total_items = number, page->limit = this->_limitRows; diff --git a/phalcon/paginator/adapter/querybuilder.zep b/phalcon/paginator/adapter/querybuilder.zep index 2b5d449ab35..ed65ce1548f 100644 --- a/phalcon/paginator/adapter/querybuilder.zep +++ b/phalcon/paginator/adapter/querybuilder.zep @@ -120,11 +120,21 @@ class QueryBuilder extends Adapter /** * Returns a slice of the resultset to show in the pagination + * + * @deprecated will be removed after 4.0 */ public function getPaginate() -> <\stdClass> + { + return this->paginate(); + } + + /** + * Returns a slice of the resultset to show in the pagination + */ + public function paginate() -> <\stdClass> { var originalBuilder, builder, totalBuilder, totalPages, - limit, numberPage, number, query, page, before, items, totalQuery, + limit, numberPage, number, query, page, previous, items, totalQuery, result, row, rowcount, next, sql, columns, db, hasHaving, hasGroup, model, modelClass, dbService; @@ -162,9 +172,9 @@ class QueryBuilder extends Adapter let query = builder->getQuery(); if numberPage == 1 { - let before = 1; + let previous = 1; } else { - let before = numberPage - 1; + let previous = numberPage - 1; } /** @@ -253,15 +263,21 @@ class QueryBuilder extends Adapter let page = new \stdClass(), page->items = items, page->first = 1, - page->before = before, + /** + * @deprecated `before` will be removed after 4.0 + */ + page->before = previous, + page->previous = previous, page->current = numberPage, page->last = totalPages, page->next = next, + /** + * @deprecated `total_pages` will be removed after 4.0 + */ page->total_pages = totalPages, page->total_items = rowcount, page->limit = this->_limitRows; return page; } - } diff --git a/phalcon/paginator/adapterinterface.zep b/phalcon/paginator/adapterinterface.zep index 80f9530e8d8..a4dd2100730 100644 --- a/phalcon/paginator/adapterinterface.zep +++ b/phalcon/paginator/adapterinterface.zep @@ -33,9 +33,16 @@ interface AdapterInterface /** * Returns a slice of the resultset to show in the pagination + * + * @deprecated will be removed after 4.0 */ public function getPaginate() -> <\stdClass>; + /** + * Returns a slice of the resultset to show in the pagination + */ + public function paginate() -> <\stdClass>; + /** * Set current rows limit */ diff --git a/tests/unit/Paginator/Adapter/NativeArrayTest.php b/tests/unit/Paginator/Adapter/NativeArrayTest.php index d5f3041b79d..b5a840ed284 100644 --- a/tests/unit/Paginator/Adapter/NativeArrayTest.php +++ b/tests/unit/Paginator/Adapter/NativeArrayTest.php @@ -49,11 +49,29 @@ function () { expect($page)->isInstanceOf('stdClass'); expect($page->items)->count(25); + expect($page->previous)->equals(1); expect($page->before)->equals(1); expect($page->next)->equals(2); expect($page->last)->equals(2); expect($page->limit)->equals(25); + /** + * Now check by calling 'paginate()' + */ + $page = $paginator->paginate(); + + expect($page)->isInstanceOf('stdClass'); + expect($page->items)->count(25); + + expect($page->previous)->equals(1); + expect($page->before)->equals(1); + expect($page->next)->equals(2); + expect($page->last)->equals(2); + expect($page->limit)->equals(25); + + expect($page->current)->equals(1); + expect($page->total_pages)->equals(2); + expect($page->current)->equals(1); expect($page->total_pages)->equals(2); }