MDL-63535 core_userkey: Add method that returns users in context

This issue is part of the MDL-62560 Epic.
This commit is contained in:
Mihail Geshoski
2018-10-23 10:29:50 +08:00
parent 8fbb8bc0fd
commit 1ad86e27d0
+36
View File
@@ -29,6 +29,7 @@ defined('MOODLE_INTERNAL') || die();
use \core_privacy\local\metadata\collection;
use \core_privacy\local\request\transform;
use \core_privacy\local\request\writer;
use core_privacy\local\request\userlist;
/**
* Privacy class for requesting user data.
@@ -62,6 +63,41 @@ class provider implements
return $collection;
}
/**
* Get the list of users within a specific context for this system.
*
* @param userlist $userlist The userlist containing the list of users who have data in this context/plugin combination.
* @param context $context The context.
* @param string $script The unique target identifier.
* @param int $instance The instance ID.
*/
public static function get_user_contexts_with_script(userlist $userlist, \context $context, string $script,
int $instance = null) {
if (!$context instanceof \context_user) {
return;
}
$params = [
'userid' => $context->instanceid,
'script' => $script
];
$whereinstance = '';
if (!empty($instance)) {
$params['instance'] = $instance;
$whereinstance = ' AND k.instance = :instance';
}
$sql = "SELECT k.userid
FROM {user_private_key} k
WHERE k.script = :script
AND k.userid = :userid
{$whereinstance}";
$userlist->add_from_sql('userid', $sql, $params);
}
/**
* Exports the data relating to user keys for the specified scripts and instance, within the specified
* context/subcontext.