MDL-61951 core_grading: SQL improvements for grading_instance join

This commit is contained in:
Jake Dallimore
2018-05-11 10:19:11 +08:00
parent 6f213a2fa2
commit b3252ecdc1
+4 -4
View File
@@ -93,9 +93,9 @@ class provider implements
FROM {context} c
JOIN {grading_areas} a ON a.contextid = c.id
JOIN {grading_definitions} d ON d.areaid = a.id
LEFT JOIN {grading_instances} i ON i.definitionid = d.id
LEFT JOIN {grading_instances} i ON i.definitionid = d.id AND i.raterid = :raterid
WHERE c.contextlevel = :contextlevel
AND (d.usercreated = :usercreated OR d.usermodified = :usermodified OR i.raterid = :raterid)";
AND (d.usercreated = :usercreated OR d.usermodified = :usermodified OR i.id IS NOT NULL)";
$params = [
'usercreated' => $userid,
'usermodified' => $userid,
@@ -152,9 +152,9 @@ class provider implements
];
if (!empty($userid)) {
$join .= ' LEFT JOIN {grading_instances} i ON i.definitionid = d.id';
$join .= ' LEFT JOIN {grading_instances} i ON i.definitionid = d.id AND i.raterid = :raterid';
$select .= ' AND (usercreated = :usercreated
OR usermodified = :usermodified OR i.raterid = :raterid)';
OR usermodified = :usermodified OR i.id IS NOT NULL)';
$params['usercreated'] = $userid;
$params['usermodified'] = $userid;
$params['raterid'] = $userid;