mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 01:16:44 +02:00
MDL-55630 mod_assign: Exclude users courses from user details
Exclude users' enrolled courses for performance reason. A new 'includeenrolments' parameter was added to mod_assign::list_particpants.
This commit is contained in:
parent
6a69cda97d
commit
6399ecd743
5 changed files with 76 additions and 7 deletions
|
@ -2510,6 +2510,8 @@ class mod_assign_external extends external_api {
|
|||
'skip' => new external_value(PARAM_INT, 'number of records to skip', VALUE_DEFAULT, 0),
|
||||
'limit' => new external_value(PARAM_INT, 'maximum number of records to return', VALUE_DEFAULT, 0),
|
||||
'onlyids' => new external_value(PARAM_BOOL, 'Do not return all user fields', VALUE_DEFAULT, false),
|
||||
'includeenrolments' => new external_value(PARAM_BOOL, 'Do return courses where the user is enrolled',
|
||||
VALUE_DEFAULT, true)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -2523,11 +2525,12 @@ class mod_assign_external extends external_api {
|
|||
* @param int $skip Number of records to skip
|
||||
* @param int $limit Maximum number of records to return
|
||||
* @param bool $onlyids Only return user ids.
|
||||
* @param bool $includeenrolments Return courses where the user is enrolled.
|
||||
* @return array of warnings and status result
|
||||
* @since Moodle 3.1
|
||||
* @throws moodle_exception
|
||||
*/
|
||||
public static function list_participants($assignid, $groupid, $filter, $skip, $limit, $onlyids) {
|
||||
public static function list_participants($assignid, $groupid, $filter, $skip, $limit, $onlyids, $includeenrolments) {
|
||||
global $DB, $CFG;
|
||||
require_once($CFG->dirroot . "/mod/assign/locallib.php");
|
||||
require_once($CFG->dirroot . "/user/lib.php");
|
||||
|
@ -2539,7 +2542,8 @@ class mod_assign_external extends external_api {
|
|||
'filter' => $filter,
|
||||
'skip' => $skip,
|
||||
'limit' => $limit,
|
||||
'onlyids' => $onlyids
|
||||
'onlyids' => $onlyids,
|
||||
'includeenrolments' => $includeenrolments
|
||||
));
|
||||
$warnings = array();
|
||||
|
||||
|
@ -2551,6 +2555,17 @@ class mod_assign_external extends external_api {
|
|||
|
||||
$participants = $assign->list_participants_with_filter_status_and_group($params['groupid']);
|
||||
|
||||
$userfields = user_get_default_fields();
|
||||
if (!$params['includeenrolments']) {
|
||||
// Remove enrolled courses from users fields to be returned.
|
||||
$key = array_search('enrolledcourses', $userfields);
|
||||
if ($key !== false) {
|
||||
unset($userfields[$key]);
|
||||
} else {
|
||||
throw new moodle_exception('invaliduserfield', 'error', '', 'enrolledcourses');
|
||||
}
|
||||
}
|
||||
|
||||
$result = array();
|
||||
$index = 0;
|
||||
foreach ($participants as $record) {
|
||||
|
@ -2577,7 +2592,7 @@ class mod_assign_external extends external_api {
|
|||
}
|
||||
// Now we do the expensive lookup of user details because we completed the filtering.
|
||||
if (!$assign->is_blind_marking() && !$params['onlyids']) {
|
||||
$userdetails = user_get_user_details($record, $course);
|
||||
$userdetails = user_get_user_details($record, $course, $userfields);
|
||||
} else {
|
||||
$userdetails = array('id' => $record->id);
|
||||
}
|
||||
|
@ -2620,7 +2635,6 @@ class mod_assign_external extends external_api {
|
|||
$userdesc->keys['profileimageurlsmall']->required = VALUE_OPTIONAL;
|
||||
$userdesc->keys['profileimageurl']->required = VALUE_OPTIONAL;
|
||||
$userdesc->keys['email']->desc = 'Email address';
|
||||
$userdesc->keys['email']->desc = 'Email address';
|
||||
$userdesc->keys['idnumber']->desc = 'The idnumber of the user';
|
||||
|
||||
// Define other keys.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue