From: skodak Date: Wed, 27 Feb 2008 10:01:46 +0000 (+0000) Subject: MDL-13695 precreating grades in grade calculation if needed; merged from MOODLE_19_STABLE X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=52e95845e7551baca210c0e853ffce2ee2520801;p=moodle.git MDL-13695 precreating grades in grade calculation if needed; merged from MOODLE_19_STABLE --- diff --git a/lib/grade/grade_item.php b/lib/grade/grade_item.php index c2fe10e902..86b01b7761 100644 --- a/lib/grade/grade_item.php +++ b/lib/grade/grade_item.php @@ -1567,6 +1567,22 @@ class grade_item extends grade_object { return true; // no need to recalculate locked items } + // precreate grades - we need them to exist + $sql = "SELECT DISTINCT go.userid + FROM {$CFG->prefix}grade_grades go + JOIN {$CFG->prefix}grade_items gi + ON gi.id = go.itemid + LEFT OUTER JOIN {$CFG->prefix}grade_grades g + ON (g.userid = go.userid AND g.itemid = $this->id) + WHERE gi.id <> $this->id AND g.id IS NULL"; + if ($missing = get_records_sql($sql)) { + foreach ($missing as $m) { + $grade = new grade_grade(array('itemid'=>$this->id, 'userid'=>$m->userid), false); + $grade->grade_item =& $this; + $grade->insert('system'); + } + } + // get used items $useditems = $this->depends_on();