]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-13695 precreating grades in grade calculation if needed; merged from MOODLE_19_STABLE
authorskodak <skodak>
Wed, 27 Feb 2008 10:01:46 +0000 (10:01 +0000)
committerskodak <skodak>
Wed, 27 Feb 2008 10:01:46 +0000 (10:01 +0000)
lib/grade/grade_item.php

index c2fe10e90217a0738951df127c02b06f9a695dab..86b01b7761a6010b4aeb2acb4dcd1237f9f655cb 100644 (file)
@@ -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();