From 56c5c9a08a3573dcb342929de2c96c388caeeb06 Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Wed, 6 Jul 2016 15:11:15 +0800 Subject: [PATCH] MDL-55043 core_competency: Sort by id to ensure we get expected result. --- competency/classes/api.php | 2 +- competency/classes/evidence.php | 8 +++----- competency/tests/api_test.php | 6 +++--- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/competency/classes/api.php b/competency/classes/api.php index a440bc25964..043111e5bd9 100644 --- a/competency/classes/api.php +++ b/competency/classes/api.php @@ -4152,7 +4152,7 @@ class api { * @param int $limit Number of records to return. * @return \core_competency\evidence[] */ - public static function list_evidence_in_course($userid = 0, $courseid = 0, $competencyid = 0, $sort = 'timecreated, id', + public static function list_evidence_in_course($userid = 0, $courseid = 0, $competencyid = 0, $sort = 'timecreated', $order = 'DESC', $skip = 0, $limit = 0) { static::require_enabled(); diff --git a/competency/classes/evidence.php b/competency/classes/evidence.php index a6a9e92e537..40e1448f440 100644 --- a/competency/classes/evidence.php +++ b/competency/classes/evidence.php @@ -311,11 +311,9 @@ class evidence extends persistent { ); if (!empty($sort)) { - $sortcolumns = explode(',', $sort); - array_walk($sortcolumns, function(&$sortcolumn, $key, $order) { - $sortcolumn = trim($sortcolumn) . ' ' . $order; - }, $order); - $sort = ' ORDER BY e.' . implode(', e.', $sortcolumns); + $sort = ' ORDER BY e.' . $sort . ' ' . $order . ', e.id ASC'; + } else { + $sort = ' ORDER BY e.id ASC'; } $sql = 'SELECT e.* diff --git a/competency/tests/api_test.php b/competency/tests/api_test.php index 44aaf7628fe..cc96253ee2d 100644 --- a/competency/tests/api_test.php +++ b/competency/tests/api_test.php @@ -2615,9 +2615,9 @@ class core_competency_api_testcase extends advanced_testcase { $evidence2 = api::add_evidence($u1->id, $c->get_id(), $cmcontext->id, \core_competency\evidence::ACTION_LOG, 'invaliddata', 'error'); - $result = api::list_evidence_in_course($u1->id, $course->id, $c->get_id()); - $this->assertEquals($result[0]->get_id(), $evidence2->get_id()); - $this->assertEquals($result[1]->get_id(), $evidence1->get_id()); + $result = api::list_evidence_in_course($u1->id, $course->id, $c->get_id(), 'timecreated', 'ASC'); + $this->assertEquals($evidence1->get_id(), $result[0]->get_id()); + $this->assertEquals($evidence2->get_id(), $result[1]->get_id()); } public function test_list_course_modules_using_competency() {