MDL-64323 GDPR: New request form user search not using configured fields
This commit is contained in:
@@ -689,6 +689,7 @@ class external extends external_api {
|
||||
* @throws restricted_context_exception
|
||||
*/
|
||||
public static function get_users($query) {
|
||||
global $DB;
|
||||
$params = external_api::validate_parameters(self::get_users_parameters(), [
|
||||
'query' => $query
|
||||
]);
|
||||
@@ -703,15 +704,30 @@ class external extends external_api {
|
||||
// Exclude admins and guest user.
|
||||
$excludedusers = array_keys(get_admins()) + [guest_user()->id];
|
||||
$sort = 'lastname ASC, firstname ASC';
|
||||
$fields = 'id, email, ' . $allusernames;
|
||||
$users = get_users(true, $query, true, $excludedusers, $sort, '', '', 0, 30, $fields);
|
||||
$fields = 'id,' . $allusernames;
|
||||
|
||||
$extrafields = get_extra_user_fields($context);
|
||||
if (!empty($extrafields)) {
|
||||
$fields .= ',' . implode(',', $extrafields);
|
||||
}
|
||||
|
||||
list($sql, $params) = users_search_sql($query, '', false, $extrafields, $excludedusers);
|
||||
$users = $DB->get_records_select('user', $sql, $params, $sort, $fields, 0, 30);
|
||||
|
||||
$useroptions = [];
|
||||
foreach ($users as $user) {
|
||||
$useroptions[$user->id] = (object)[
|
||||
$useroption = (object)[
|
||||
'id' => $user->id,
|
||||
'fullname' => fullname($user),
|
||||
'email' => $user->email
|
||||
'fullname' => fullname($user)
|
||||
];
|
||||
$useroption->extrafields = [];
|
||||
foreach ($extrafields as $extrafield) {
|
||||
$useroption->extrafields[] = (object)[
|
||||
'name' => $extrafield,
|
||||
'value' => $user->$extrafield
|
||||
];
|
||||
}
|
||||
$useroptions[$user->id] = $useroption;
|
||||
}
|
||||
|
||||
return $useroptions;
|
||||
@@ -729,7 +745,13 @@ class external extends external_api {
|
||||
[
|
||||
'id' => new external_value(core_user::get_property_type('id'), 'ID of the user'),
|
||||
'fullname' => new external_value(core_user::get_property_type('firstname'), 'The fullname of the user'),
|
||||
'email' => new external_value(core_user::get_property_type('email'), 'The user\'s email address', VALUE_OPTIONAL),
|
||||
'extrafields' => new external_multiple_structure(
|
||||
new external_single_structure([
|
||||
'name' => new external_value(PARAM_TEXT, 'Name of the extrafield.'),
|
||||
'value' => new external_value(PARAM_TEXT, 'Value of the extrafield.')
|
||||
]
|
||||
), 'List of extra fields', VALUE_OPTIONAL
|
||||
)
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user