MDL-64323 GDPR: New request form user search not using configured fields

This commit is contained in:
Kiet.Chan
2019-01-16 13:34:53 +07:00
parent 4c5b60a0f9
commit 81eb8b2bbc
5 changed files with 210 additions and 14 deletions
+28 -6
View File
@@ -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
)
]
));
}