From ebdec47991582e896ceb4e36b0fd5df2ece75b8a Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 5 May 2016 15:15:58 +0800 Subject: [PATCH 1/2] MDL-54042 user: Fix debugging in core_user_get_users_by_field The course object returned by enrol_get_all_users_courses does not include the defaultgroupingid. This course object is passed to user_get_user_details - which does need the defaultgroupingid. All the other group info is returned (groupmode) etc - so it makes sense to also return this extra field. --- lib/enrollib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/enrollib.php b/lib/enrollib.php index 643cb333b8e..ad22b60fbaf 100644 --- a/lib/enrollib.php +++ b/lib/enrollib.php @@ -789,6 +789,7 @@ function enrol_get_all_users_courses($userid, $onlyactive = false, $fields = NUL $basefields = array('id', 'category', 'sortorder', 'shortname', 'fullname', 'idnumber', 'startdate', 'visible', + 'defaultgroupingid', 'groupmode', 'groupmodeforce'); if (empty($fields)) { From 178d87e0b6faf23df06210698c66c57e89876122 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 5 May 2016 16:27:53 +0800 Subject: [PATCH 2/2] MDL-54042 user: Add unit test to cover change --- enrol/tests/enrollib_test.php | 2 +- user/tests/userlib_test.php | 37 +++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/enrol/tests/enrollib_test.php b/enrol/tests/enrollib_test.php index 61a43922a98..940551f9ca5 100644 --- a/enrol/tests/enrollib_test.php +++ b/enrol/tests/enrollib_test.php @@ -136,7 +136,7 @@ class core_enrollib_testcase extends advanced_testcase { // Make sure sorting and columns work. $basefields = array('id', 'category', 'sortorder', 'shortname', 'fullname', 'idnumber', - 'startdate', 'visible', 'groupmode', 'groupmodeforce'); + 'startdate', 'visible', 'groupmode', 'groupmodeforce', 'defaultgroupingid'); $courses = enrol_get_all_users_courses($user2->id, true); $course = reset($courses); diff --git a/user/tests/userlib_test.php b/user/tests/userlib_test.php index 99d2dd4a5f0..d65349fbbea 100644 --- a/user/tests/userlib_test.php +++ b/user/tests/userlib_test.php @@ -37,6 +37,43 @@ require_once($CFG->dirroot.'/user/lib.php'); * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class core_userliblib_testcase extends advanced_testcase { + /** + * Test user_get_user_details_courses + */ + public function test_user_get_user_details_courses() { + global $DB; + + $this->resetAfterTest(); + + // Create user and modify user profile. + $user1 = $this->getDataGenerator()->create_user(); + $user2 = $this->getDataGenerator()->create_user(); + + $course1 = $this->getDataGenerator()->create_course(); + $coursecontext = context_course::instance($course1->id); + $teacherrole = $DB->get_record('role', array('shortname' => 'teacher')); + $this->getDataGenerator()->enrol_user($user1->id, $course1->id); + $this->getDataGenerator()->enrol_user($user2->id, $course1->id); + role_assign($teacherrole->id, $user1->id, $coursecontext->id); + role_assign($teacherrole->id, $user2->id, $coursecontext->id); + + accesslib_clear_all_caches_for_unit_testing(); + + // Get user2 details as a user with super system capabilities. + $result = user_get_user_details_courses($user2); + $this->assertEquals($user2->id, $result['id']); + $this->assertEquals(fullname($user2), $result['fullname']); + $this->assertEquals($course1->id, $result['enrolledcourses'][0]['id']); + + $this->setUser($user1); + // Get user2 details as a user who can only see this user in a course. + $result = user_get_user_details_courses($user2); + $this->assertEquals($user2->id, $result['id']); + $this->assertEquals(fullname($user2), $result['fullname']); + $this->assertEquals($course1->id, $result['enrolledcourses'][0]['id']); + + } + /** * Test user_update_user. */