MDL-33793: Add conditions to the assignment upgrade code to prevent overwriting grade...
authorDamyon Wiese <damyon.wiese@netspot.com.au>
Sun, 17 Jun 2012 14:40:54 +0000 (22:40 +0800)
committerDamyon Wiese <damyon.wiese@netspot.com.au>
Sun, 17 Jun 2012 14:41:59 +0000 (22:41 +0800)
mod/assign/upgradelib.php

index eebfe57..3852d07 100644 (file)
@@ -221,8 +221,8 @@ class assign_upgrade_manager {
             $newassignment->update_calendar($newcoursemodule->id);
 
             // copy the grades from the old assignment to the new one
-            $DB->set_field('grade_items', 'itemmodule', 'assign', array('iteminstance'=>$oldassignment->id));
-            $DB->set_field('grade_items', 'iteminstance', $newassignment->get_instance()->id, array('iteminstance'=>$oldassignment->id));
+            $DB->set_field('grade_items', 'itemmodule', 'assign', array('iteminstance'=>$oldassignment->id, 'itemmodule'=>'assignment'));
+            $DB->set_field('grade_items', 'iteminstance', $newassignment->get_instance()->id, array('iteminstance'=>$oldassignment->id, 'itemmodule'=>'assign'));
             $gradesdone = true;
 
         } catch (Exception $exception) {
@@ -234,8 +234,8 @@ class assign_upgrade_manager {
             // roll back the grades changes
             if ($gradesdone) {
                 // copy the grades from the old assignment to the new one
-                $DB->set_field('grade_items', 'itemmodule', 'assignment', array('iteminstance'=>$newassignment->get_instance()->id));
-                $DB->set_field('grade_items', 'iteminstance', $oldassignment->id, array('iteminstance'=>$newassignment->get_instance()->id));
+                $DB->set_field('grade_items', 'itemmodule', 'assignment', array('iteminstance'=>$newassignment->get_instance()->id, 'itemmodule'=>'assign'));
+                $DB->set_field('grade_items', 'iteminstance', $oldassignment->id, array('iteminstance'=>$newassignment->get_instance()->id, 'itemmodule'=>'assignment'));
             }
             // roll back the completion changes
             if ($completiondone) {