From 415b15ccd69183402ff4afab8dfc6444137fdf0d Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Fri, 24 Aug 2012 11:41:45 +0800 Subject: [PATCH] MDL-29733 grade: SQL and comment cleanup --- lib/grade/grade_item.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/grade/grade_item.php b/lib/grade/grade_item.php index c485f65b8c8..46101926021 100644 --- a/lib/grade/grade_item.php +++ b/lib/grade/grade_item.php @@ -1730,6 +1730,7 @@ class grade_item extends grade_object { return true; // no need to recalculate locked items } + // Precreate grades - we need them to exist if ($userid) { $missing = array(); if (!$DB->record_exists('grade_grades', array('itemid'=>$this->id, 'userid'=>$userid))) { @@ -1738,14 +1739,14 @@ class grade_item extends grade_object { $missing[] = $m; } } else { - // precreate grades - we need them to exist - $params = array($this->courseid, $this->id); - $sql = "SELECT go.userid - FROM {grade_grades} go + // Find any users who have grades for some but not all grade items in this course + $params = array('gicourseid' => $this->courseid, 'ggitemid' => $this->id); + $sql = "SELECT gg.userid + FROM {grade_grades} gg JOIN {grade_items} gi - ON (gi.id = go.itemid AND gi.courseid = ?) - GROUP BY go.userid - HAVING SUM(go.itemid = ?) = 0"; + ON (gi.id = gg.itemid AND gi.courseid = :gicourseid) + GROUP BY gg.userid + HAVING SUM(CASE WHEN gg.itemid = :ggitemid THEN 1 ELSE 0 END) = 0"; $missing = $DB->get_records_sql($sql, $params); }