Skip to content

Commit

Permalink
Merge pull request #5970 from cakephp/issue-5964
Browse files Browse the repository at this point in the history
Allow numeric sorts in PaginatorComponent.
  • Loading branch information
lorenzo committed Feb 26, 2015
2 parents ea79cf5 + c92cfb4 commit de255ae
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
4 changes: 4 additions & 0 deletions lib/Cake/Controller/Component/PaginatorComponent.php
Expand Up @@ -388,6 +388,10 @@ public function validateSort(Model $object, array $options, array $whitelist = a
if (!empty($options['order']) && is_array($options['order'])) {
$order = array();
foreach ($options['order'] as $key => $value) {
if (is_int($key)) {
$key = $value;
$value = 'asc';
}
$field = $key;
$alias = $object->alias;
if (strpos($key, '.') !== false) {
Expand Down
14 changes: 12 additions & 2 deletions lib/Cake/Test/Case/Controller/Component/PaginatorComponentTest.php
Expand Up @@ -454,6 +454,13 @@ public function testPaginateExtraParams() {
$this->assertEquals(array(1, 2, 3), Hash::extract($result, '{n}.PaginatorControllerPost.id'));
$this->assertTrue(!isset($Controller->PaginatorControllerPost->lastQueries[1]['contain']));

$Controller->Paginator->settings = array(
'order' => array('PaginatorControllerPost.author_id')
);
$result = $Controller->Paginator->paginate('PaginatorControllerPost');
$this->assertEquals(1, $Controller->params['paging']['PaginatorControllerPost']['page']);
$this->assertEquals(array(1, 3, 2), Hash::extract($result, '{n}.PaginatorControllerPost.id'));

$Controller->request->params['named'] = array('page' => '-1');
$Controller->Paginator->settings = array(
'PaginatorControllerPost' => array(
Expand Down Expand Up @@ -606,7 +613,7 @@ public function testPaginateOrderModelDefault() {

$Controller->PaginatorControllerPost->order = array('PaginatorControllerPost.id');
$result = $Controller->Paginator->validateSort($Controller->PaginatorControllerPost, array());
$this->assertEmpty($result['order']);
$this->assertEquals(array('PaginatorControllerPost.id' => 'asc'), $result['order']);

$Controller->PaginatorControllerPost->order = 'PaginatorControllerPost.id';
$result = $Controller->Paginator->validateSort($Controller->PaginatorControllerPost, array());
Expand All @@ -617,7 +624,10 @@ public function testPaginateOrderModelDefault() {
'PaginatorControllerPost.created' => 'asc'
);
$result = $Controller->Paginator->validateSort($Controller->PaginatorControllerPost, array());
$expected = array('PaginatorControllerPost.created' => 'asc');
$expected = array(
'PaginatorControllerPost.id' => 'asc',
'PaginatorControllerPost.created' => 'asc'
);
$this->assertEquals($expected, $result['order']);
}

Expand Down

0 comments on commit de255ae

Please sign in to comment.