Skip to content

Commit

Permalink
MDL-62384 core_grade: Move WHERE clause to JOIN
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewnicols committed May 11, 2018
1 parent 6951d69 commit dafd152
Showing 1 changed file with 23 additions and 17 deletions.
40 changes: 23 additions & 17 deletions grade/classes/privacy/provider.php
Expand Up @@ -127,18 +127,21 @@ public static function get_contexts_for_userid($userid) {
$sql = "
SELECT DISTINCT ctx.id
FROM {context} ctx
LEFT JOIN {grade_outcomes_history} goh
ON (goh.courseid > 0 AND goh.courseid = ctx.instanceid AND ctx.contextlevel = :courselevel1)
LEFT JOIN {grade_outcomes_history} goh ON goh.loggeduser = :userid1 AND (
(goh.courseid > 0 AND goh.courseid = ctx.instanceid AND ctx.contextlevel = :courselevel1)
OR ((goh.courseid IS NULL OR goh.courseid < 1) AND ctx.id = :syscontextid)
LEFT JOIN {grade_categories_history} gch
ON gch.courseid = ctx.instanceid
)
LEFT JOIN {grade_categories_history} gch ON gch.loggeduser = :userid2 AND (
gch.courseid = ctx.instanceid
AND ctx.contextlevel = :courselevel2
LEFT JOIN {grade_items_history} gih
ON gih.courseid = ctx.instanceid
)
LEFT JOIN {grade_items_history} gih ON gih.loggeduser = :userid3 AND (
gih.courseid = ctx.instanceid
AND ctx.contextlevel = :courselevel3
WHERE goh.loggeduser = :userid1
OR gch.loggeduser = :userid2
OR gih.loggeduser = :userid3";
)
WHERE goh.id IS NOT NULL
OR gch.id IS NOT NULL
OR gih.id IS NOT NULL";
$params = [
'syscontextid' => SYSCONTEXTID,
'courselevel1' => CONTEXT_COURSE,
Expand All @@ -159,13 +162,16 @@ public static function get_contexts_for_userid($userid) {
AND ctx.contextlevel = :courselevel
LEFT JOIN {grade_grades} gg
ON gg.itemid = gi.id
AND (gg.userid = :userid1 OR gg.usermodified = :userid2)
LEFT JOIN {grade_grades_history} ggh
ON ggh.itemid = gi.id
WHERE gg.userid = :userid1
OR gg.usermodified = :userid2
OR ggh.userid = :userid3
AND (
ggh.userid = :userid3
OR ggh.loggeduser = :userid4
OR ggh.usermodified = :userid5";
OR ggh.usermodified = :userid5
)
WHERE gg.id IS NOT NULL
OR ggh.id IS NOT NULL";
$params = [
'courselevel' => CONTEXT_COURSE,
'userid1' => $userid,
Expand All @@ -184,14 +190,14 @@ public static function get_contexts_for_userid($userid) {
JOIN {grade_grades_history} ggh
ON ctx.contextlevel = :userlevel
AND ggh.userid = ctx.instanceid
LEFT JOIN {grade_items} gi
ON ggh.itemid = gi.id
WHERE gi.id IS NULL
AND (
ggh.userid = :userid1
OR ggh.usermodified = :userid2
OR ggh.loggeduser = :userid3
)";
)
LEFT JOIN {grade_items} gi
ON ggh.itemid = gi.id
WHERE gi.id IS NULL";
$params = [
'userlevel' => CONTEXT_USER,
'userid1' => $userid,
Expand Down

0 comments on commit dafd152

Please sign in to comment.