Skip to content

Commit

Permalink
Merge branch 'MDL-68437-311' of https://github.com/mihailges/moodle i…
Browse files Browse the repository at this point in the history
…nto MOODLE_311_STABLE
  • Loading branch information
vmdef committed Oct 28, 2022
2 parents 98fd15d + 5ef68db commit e57d950
Show file tree
Hide file tree
Showing 14 changed files with 163 additions and 15 deletions.
2 changes: 1 addition & 1 deletion course/amd/build/repository.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion course/amd/build/repository.min.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion course/amd/src/repository.js
Expand Up @@ -100,14 +100,16 @@ const getLastAccessedCourses = (userid, limit, offset, sort) => {
*
* @param {Number} cmid Course Module from which the users will be obtained
* @param {Number} groupID Group ID from which the users will be obtained
* @param {Boolean} onlyActive Whether to fetch only the active enrolled users or all enrolled users in the course.
* @returns {Promise} Promise containing a list of users
*/
const getEnrolledUsersFromCourseModuleID = (cmid, groupID) => {
const getEnrolledUsersFromCourseModuleID = (cmid, groupID, onlyActive = false) => {
var request = {
methodname: 'core_course_get_enrolled_users_by_cmid',
args: {
cmid: cmid,
groupid: groupID,
onlyactive: onlyActive,
},
};

Expand Down
13 changes: 7 additions & 6 deletions course/externallib.php
Expand Up @@ -4103,6 +4103,8 @@ public static function get_enrolled_users_by_cmid_parameters() {
return new external_function_parameters([
'cmid' => new external_value(PARAM_INT, 'id of the course module', VALUE_REQUIRED),
'groupid' => new external_value(PARAM_INT, 'id of the group', VALUE_DEFAULT, 0),
'onlyactive' => new external_value(PARAM_BOOL, 'whether to return only active users or all.',
VALUE_DEFAULT, false),
]);
}

Expand All @@ -4111,26 +4113,25 @@ public static function get_enrolled_users_by_cmid_parameters() {
*
* @param int $cmid Course Module id from which the users will be obtained
* @param int $groupid Group id from which the users will be obtained
* @param bool $onlyactive Whether to return only the active enrolled users or all enrolled users in the course.
* @return array List of users
* @throws invalid_parameter_exception
*/
public static function get_enrolled_users_by_cmid(int $cmid, int $groupid = 0) {
public static function get_enrolled_users_by_cmid(int $cmid, int $groupid = 0, bool $onlyactive = false) {
global $PAGE;
$warnings = [];

[
'cmid' => $cmid,
'groupid' => $groupid,
] = self::validate_parameters(self::get_enrolled_users_by_cmid_parameters(), [
self::validate_parameters(self::get_enrolled_users_by_cmid_parameters(), [
'cmid' => $cmid,
'groupid' => $groupid,
'onlyactive' => $onlyactive,
]);

list($course, $cm) = get_course_and_cm_from_cmid($cmid);
$coursecontext = context_course::instance($course->id);
self::validate_context($coursecontext);

$enrolledusers = get_enrolled_users($coursecontext, '', $groupid);
$enrolledusers = get_enrolled_users($coursecontext, '', $groupid, 'u.*', null, 0, 0, $onlyactive);

$users = array_map(function ($user) use ($PAGE) {
$user->fullname = fullname($user);
Expand Down
38 changes: 38 additions & 0 deletions course/tests/externallib_test.php
Expand Up @@ -3500,6 +3500,7 @@ public function test_get_enrolled_users_by_cmid() {

$user1 = self::getDataGenerator()->create_user();
$user2 = self::getDataGenerator()->create_user();
$user3 = self::getDataGenerator()->create_user();

$user1picture = new user_picture($user1);
$user1picture->size = 1;
Expand All @@ -3509,6 +3510,10 @@ public function test_get_enrolled_users_by_cmid() {
$user2picture->size = 1;
$user2->profileimage = $user2picture->get_url($PAGE)->out(false);

$user3picture = new user_picture($user3);
$user3picture->size = 1;
$user3->profileimage = $user3picture->get_url($PAGE)->out(false);

// Set the first created user to the test user.
self::setUser($user1);

Expand All @@ -3523,6 +3528,8 @@ public function test_get_enrolled_users_by_cmid() {
// Following lines enrol and assign default role id to the users.
$this->getDataGenerator()->enrol_user($user1->id, $course1->id);
$this->getDataGenerator()->enrol_user($user2->id, $course1->id);
// Enrol a suspended user in the course.
$this->getDataGenerator()->enrol_user($user3->id, $course1->id, null, 'manual', 0, 0, ENROL_USER_SUSPENDED);

// Create what we expect to be returned when querying the course module.
$expectedusers = array(
Expand All @@ -3544,11 +3551,42 @@ public function test_get_enrolled_users_by_cmid() {
'lastname' => $user2->lastname,
'profileimage' => $user2->profileimage,
];
$expectedusers['users'][2] = [
'id' => $user3->id,
'fullname' => fullname($user3),
'firstname' => $user3->firstname,
'lastname' => $user3->lastname,
'profileimage' => $user3->profileimage,
];

// Test getting the users in a given context.
$users = core_course_external::get_enrolled_users_by_cmid($forum1->cmid);
$users = external_api::clean_returnvalue(core_course_external::get_enrolled_users_by_cmid_returns(), $users);

$this->assertEquals(3, count($users['users']));
$this->assertEquals($expectedusers, $users);

// Test getting only the active users in a given context.
$users = core_course_external::get_enrolled_users_by_cmid($forum1->cmid, 0, true);
$users = external_api::clean_returnvalue(core_course_external::get_enrolled_users_by_cmid_returns(), $users);

$expectedusers['users'] = [
[
'id' => $user1->id,
'fullname' => fullname($user1),
'firstname' => $user1->firstname,
'lastname' => $user1->lastname,
'profileimage' => $user1->profileimage,
],
[
'id' => $user2->id,
'fullname' => fullname($user2),
'firstname' => $user2->firstname,
'lastname' => $user2->lastname,
'profileimage' => $user2->profileimage,
]
];

$this->assertEquals(2, count($users['users']));
$this->assertEquals($expectedusers, $users);
}
Expand Down

0 comments on commit e57d950

Please sign in to comment.