1
0
mirror of https://github.com/moodle/moodle.git synced 2025-05-02 14:28:30 +02:00
This commit is contained in:
Víctor Déniz 2021-08-11 10:59:03 +01:00
commit eda5b689fd

@ -99,24 +99,24 @@ if ($formaction == 'bulkchange.php') {
$hiddenfields = array_flip(explode(',', $CFG->hiddenuserfields)); $hiddenfields = array_flip(explode(',', $CFG->hiddenuserfields));
} }
// TODO Does not support custom user profile fields (MDL-70456). // Retrieve all identity fields required for users.
$identityfields = \core_user\fields::get_identity_fields($context, false); $userfieldsapi = \core_user\fields::for_identity($context);
$identityfieldsselect = ''; $userfields = $userfieldsapi->get_sql('u', true, '', '', false);
$identityfields = array_keys($userfields->mappings);
foreach ($identityfields as $field) { foreach ($identityfields as $field) {
$columnnames[$field] = get_string($field); $columnnames[$field] = \core_user\fields::get_display_name($field);
$identityfieldsselect .= ', u.' . $field . ' ';
} }
[$useridsql, $useridparams] = $DB->get_in_or_equal($userids, SQL_PARAMS_NAMED, 'userid'); [$useridsql, $useridparams] = $DB->get_in_or_equal($userids, SQL_PARAMS_NAMED, 'userid');
[$userordersql, $userorderparams] = users_order_by_sql('u', null, $context); [$userordersql, $userorderparams] = users_order_by_sql('u', null, $context);
$params = array_merge($useridparams, $userorderparams); $params = array_merge($userfields->params, $useridparams, $userorderparams);
// Add column for groups if the user can view them. // Add column for groups if the user can view them.
if (!isset($hiddenfields['groups'])) { if (!isset($hiddenfields['groups'])) {
$columnnames['groupnames'] = get_string('groups'); $columnnames['groupnames'] = get_string('groups');
$identityfieldsselect .= ', gcn.groupnames'; $userfields->selects .= ', gcn.groupnames';
[$groupconcatnamesql, $groupconcatnameparams] = groups_get_names_concat_sql($course->id); [$groupconcatnamesql, $groupconcatnameparams] = groups_get_names_concat_sql($course->id);
$groupconcatjoin = "LEFT JOIN ({$groupconcatnamesql}) gcn ON gcn.userid = u.id"; $groupconcatjoin = "LEFT JOIN ({$groupconcatnamesql}) gcn ON gcn.userid = u.id";
@ -125,8 +125,9 @@ if ($formaction == 'bulkchange.php') {
$groupconcatjoin = ''; $groupconcatjoin = '';
} }
$sql = "SELECT u.firstname, u.lastname" . $identityfieldsselect . " $sql = "SELECT u.firstname, u.lastname, {$userfields->selects}
FROM {user} u FROM {user} u
{$userfields->joins}
{$groupconcatjoin} {$groupconcatjoin}
WHERE u.id {$useridsql} WHERE u.id {$useridsql}
ORDER BY {$userordersql}"; ORDER BY {$userordersql}";