MDL-64782 tool_monitor: Performance improvement

This commit is contained in:
Shamim Rezaie 2019-02-25 16:19:51 +11:00
parent 6d817db08e
commit acb25c6534

View file

@ -114,29 +114,16 @@ class provider implements
public static function get_users_in_context(userlist $userlist) { public static function get_users_in_context(userlist $userlist) {
$context = $userlist->get_context(); $context = $userlist->get_context();
if (!is_a($context, \context_user::class)) { if (!$context instanceof \context_user) {
return; return;
} }
$params = [ $params = ['userid' => $context->instanceid];
'contextid' => $context->id,
'contextuser' => CONTEXT_USER,
];
$sql = "SELECT mr.userid
FROM {context} ctx
JOIN {tool_monitor_rules} mr ON ctx.instanceid = mr.userid
AND ctx.contextlevel = :contextuser
WHERE ctx.id = :contextid";
$sql = "SELECT userid FROM {tool_monitor_rules} WHERE userid = :userid";
$userlist->add_from_sql('userid', $sql, $params); $userlist->add_from_sql('userid', $sql, $params);
$sql = "SELECT ms.userid $sql = "SELECT userid FROM {tool_monitor_subscriptions} WHERE userid = :userid";
FROM {context} ctx
LEFT JOIN {tool_monitor_subscriptions} ms ON ctx.instanceid = ms.userid
AND ctx.contextlevel = :contextuser
WHERE ctx.id = :contextid";
$userlist->add_from_sql('userid', $sql, $params); $userlist->add_from_sql('userid', $sql, $params);
} }