From cc098629a6019d76084b290e804694479f9ded31 Mon Sep 17 00:00:00 2001 From: mark_story Date: Thu, 24 Jul 2008 02:46:39 +0000 Subject: [PATCH] Added direction check to Controller::paginate(). paginate() now forces 'asc' when wrong. Added tests. Closes #5120 git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@7357 3807eeeb-6ff5-0310-8944-8be069107fe0 --- cake/libs/controller/controller.php | 3 +++ cake/tests/cases/libs/controller/controller.test.php | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/cake/libs/controller/controller.php b/cake/libs/controller/controller.php index 5fe9bc351..6475aab3b 100644 --- a/cake/libs/controller/controller.php +++ b/cake/libs/controller/controller.php @@ -913,6 +913,9 @@ class Controller extends Object { } if (isset($options['sort']) && isset($options['direction'])) { + if (!in_array(strtolower($options['direction']), array('asc', 'desc'))) { + $options['direction'] = 'asc'; + } $options['order'] = array($options['sort'] => $options['direction']); } elseif (isset($options['sort'])) { $options['order'] = array($options['sort'] => 'asc'); diff --git a/cake/tests/cases/libs/controller/controller.test.php b/cake/tests/cases/libs/controller/controller.test.php index 9a267eb8a..fea4a48f6 100644 --- a/cake/tests/cases/libs/controller/controller.test.php +++ b/cake/tests/cases/libs/controller/controller.test.php @@ -323,6 +323,11 @@ class ControllerTest extends CakeTestCase { $results = Set::extract($Controller->paginate('ControllerPost'), '{n}.ControllerPost.id'); $this->assertEqual($Controller->params['paging']['ControllerPost']['page'], 1); $this->assertEqual($results, array(1, 2, 3)); + + $Controller->passedArgs = array('sort' => 'ControllerPost.author_id', 'direction' => 'allYourBase'); + $results = Set::extract($Controller->paginate('ControllerPost'), '{n}.ControllerPost.id'); + $this->assertEqual($Controller->ControllerPost->lastQuery['order'][0], array('ControllerPost.author_id' => 'asc')); + $this->assertEqual($results, array(1, 3, 2)); } /** * testPaginateExtraParams method