mirror of
https://github.com/moodle/moodle.git
synced 2025-04-22 17:02:03 +02:00
MDL-57027 accesslib: Improve perf of sql
This commit is contained in:
parent
a6210651a9
commit
5e80c61df4
@ -3647,11 +3647,15 @@ function get_users_by_capability(context $context, $capability, $fields = '', $s
|
||||
AND roleid IN (".implode(',', array_keys($prohibited[$cap])) ."))";
|
||||
|
||||
} else {
|
||||
$unions[] = "SELECT ra.userid
|
||||
FROM {role_assignments} ra
|
||||
LEFT JOIN {role_assignments} rap ON (rap.userid = ra.userid AND rap.contextid IN ($ctxids) AND rap.roleid IN (".implode(',', array_keys($prohibited[$cap])) ."))
|
||||
WHERE ra.contextid IN ($ctxids) AND ra.roleid IN (".implode(',', array_keys($needed[$cap])) .")
|
||||
AND rap.id IS NULL";
|
||||
$unions[] = "SELECT userid
|
||||
FROM {role_assignments}
|
||||
WHERE contextid IN ($ctxids) AND roleid IN (".implode(',', array_keys($needed[$cap])) .")
|
||||
AND userid NOT IN (
|
||||
SELECT userid
|
||||
FROM {role_assignments}
|
||||
WHERE contextid IN ($ctxids)
|
||||
AND roleid IN (" . implode(',', array_keys($prohibited[$cap])) . ")
|
||||
)";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user