Skip to content

Commit

Permalink
Remove the options key inside params['paging']
Browse files Browse the repository at this point in the history
This key almost always just duplicated data available elsewhere. It also
included things like conditions which are never referenced by the
helper. Split order into sort + direction to make the helper simpler and
the contract between the helper + component less complex.
  • Loading branch information
markstory committed Sep 17, 2013
1 parent c76a59e commit 16a74c3
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 10 deletions.
6 changes: 4 additions & 2 deletions Cake/Controller/Component/PaginatorComponent.php
Expand Up @@ -212,16 +212,18 @@ public function paginate($object = null, $scope = array(), $whitelist = array())
throw new Error\NotFoundException();
}

reset($order);
$paging = array(
'findType' => $type,
'page' => $page,
'current' => count($results),
'count' => $count,
'prevPage' => ($page > 1),
'nextPage' => ($count > ($page * $limit)),
'pageCount' => $pageCount,
'order' => $order,
'sort' => key($order),
'direction' => current($order),
'limit' => $limit,
'options' => Hash::diff($options, $defaults),
);

if (!isset($this->Controller->request['paging'])) {
Expand Down
Expand Up @@ -254,7 +254,7 @@ public function testPaginateExtraParams() {
$paging = $Controller->request->params['paging']['PaginatorControllerPost'];

$this->assertEquals(12, $Controller->PaginatorControllerPost->lastQueries[1]['limit']);
$this->assertEquals(12, $paging['options']['limit']);
$this->assertEquals(12, $paging['limit']);

$Controller = new PaginatorTestController($this->request);
$Controller->uses = array('ControllerPaginateModel');
Expand Down Expand Up @@ -319,7 +319,7 @@ public function testPaginateSpecialType() {
$Controller->PaginatorControllerPost->lastQueries[1]['conditions'],
array('PaginatorControllerPost.id > ' => '1')
);
$this->assertFalse(isset($Controller->request->params['paging']['PaginatorControllerPost']['options'][0]));
$this->assertEquals('popular', $Controller->request->params['paging']['PaginatorControllerPost']['findType']);
}

/**
Expand Down Expand Up @@ -367,7 +367,7 @@ public function testPaginateOrderModelDefault() {
$this->assertEquals($expected, Hash::extract($result, '{n}.PaginatorControllerPost.created'));
$this->assertEquals(
$Controller->PaginatorControllerPost->order,
$Controller->request->paging['PaginatorControllerPost']['options']['order']
$Controller->request->paging['PaginatorControllerPost']['order']
);

$Controller->PaginatorControllerPost->order = array('PaginatorControllerPost.id');
Expand Down Expand Up @@ -867,26 +867,26 @@ public function testPaginateMaxLimit() {
'contain' => array('ControllerComment'), 'limit' => '1000'
);
$result = $Controller->paginate('PaginatorControllerPost');
$this->assertEquals(100, $Controller->request->params['paging']['PaginatorControllerPost']['options']['limit']);
$this->assertEquals(100, $Controller->request->params['paging']['PaginatorControllerPost']['limit']);

$Controller->request->query = array(
'contain' => array('ControllerComment'), 'limit' => '1000', 'maxLimit' => 1000
);
$result = $Controller->paginate('PaginatorControllerPost');
$this->assertEquals(100, $Controller->request->params['paging']['PaginatorControllerPost']['options']['limit']);
$this->assertEquals(100, $Controller->request->params['paging']['PaginatorControllerPost']['limit']);

$Controller->request->query = array('contain' => array('ControllerComment'), 'limit' => '10');
$result = $Controller->paginate('PaginatorControllerPost');
$this->assertEquals(10, $Controller->request->params['paging']['PaginatorControllerPost']['options']['limit']);
$this->assertEquals(10, $Controller->request->params['paging']['PaginatorControllerPost']['limit']);

$Controller->request->query = array('contain' => array('ControllerComment'), 'limit' => '1000');
$Controller->paginate = array('maxLimit' => 2000);
$result = $Controller->paginate('PaginatorControllerPost');
$this->assertEquals(1000, $Controller->request->params['paging']['PaginatorControllerPost']['options']['limit']);
$this->assertEquals(1000, $Controller->request->params['paging']['PaginatorControllerPost']['limit']);

$Controller->request->query = array('contain' => array('ControllerComment'), 'limit' => '5000');
$result = $Controller->paginate('PaginatorControllerPost');
$this->assertEquals(2000, $Controller->request->params['paging']['PaginatorControllerPost']['options']['limit']);
$this->assertEquals(2000, $Controller->request->params['paging']['PaginatorControllerPost']['limit']);
}

/**
Expand Down

0 comments on commit 16a74c3

Please sign in to comment.