diff --git a/backup/moodle2/restore_final_task.class.php b/backup/moodle2/restore_final_task.class.php
index ab189717049..18b43362984 100644
--- a/backup/moodle2/restore_final_task.class.php
+++ b/backup/moodle2/restore_final_task.class.php
@@ -43,7 +43,7 @@ class restore_final_task extends restore_task {
}
// Gradebook
- //$this->add_step(new restore_gradebook_step('gradebook_step','gradebook.xml'));
+ $this->add_step(new restore_gradebook_step('gradebook_step','gradebook.xml'));
// Review all the module_availability records in backup_ids in order
// to match them with existing modules / grade items.
diff --git a/backup/moodle2/restore_stepslib.php b/backup/moodle2/restore_stepslib.php
index e69bbcdb8a1..29b2575e321 100644
--- a/backup/moodle2/restore_stepslib.php
+++ b/backup/moodle2/restore_stepslib.php
@@ -231,11 +231,11 @@ class restore_gradebook_step extends restore_structure_step {
$newitemid = $DB->insert_record('grade_letters', $data);
$this->set_mapping('grade_letter', $oldid, $newitemid);
}
+
+ //put all activity grade items in the correct grade category and mark all for recalculation
protected function after_execute() {
global $DB;
- //put all activity grade items in the correct grade category
-
$conditions = array(
'backupid' => $this->get_restoreid(),
'itemname' => 'grade_item'//,
@@ -245,53 +245,19 @@ class restore_gradebook_step extends restore_structure_step {
if (!empty($rs)) {
foreach($rs as $grade_item_backup) {
- // Get the complete grade item object (stored as info)
- echo '
grade_item_backup==';
- var_dump($grade_item_backup);
+ $updateobj = new stdclass();
+ $updateobj->id = $grade_item_backup->newitemid;
- //get the grade_item from the backup to find out the old categoryid
- //cant use the grade_item in the DB as the category IDs have been defaulted to the course grade_item
- var_dump('trying to get grade_item from backup with id=='.$grade_item_backup->itemid);
-
- //this isnt working so tried to avoid a second trip to the DB to see if that would help
- //$grade_item = restore_dbops::get_backup_ids_record($this->get_restoreid(), 'grade_item', $grade_item_backup->itemid)->info;
- $grade_item = null;
- if ($grade_item_backup->info != null) {
- $grade_item = unserialize(base64_decode($grade_item_backup->info));
- }
-
- var_dump('grade_item object from backup==');
- //$grade_item = $DB->get_record('grade_items', array('id'=>$grade_item_backup->newitemid));
- //var_dump('grade_item object from db==');
- var_dump($grade_item);
-
- if (!empty($grade_item)) {
- //exclude the grade items handled as part of the gradebook backup/restore process
- if ($grade_item->itemtype!='course' && $grade_item->itemtype!='category' && $grade_item->itemtype!='manual') {
- var_dump('got a grade item we need to deal with. was put in category '.$grade_item->categoryid);
-
- //find the category the grade item is meant to be in
- /*$conditions = array(
- 'backupid' => $this->get_restoreid(),
- 'itemname' => 'grade_category',
- 'itemid' => $grade_item->categoryid
- );
- $grade_category_backup = $DB->get_record('backup_ids_temp', $conditions);
- echo 'grade_category_backup==';
- var_dump($grade_category_backup);
- */
- $updateobj = new stdclass();
- //$updateobj->id = $grade_item->id;
- $updateobj->id = $grade_item_backup->newitemid;
- //$updateobj->categoryid = $grade_category_backup->newitemid;
- $updateobj->categoryid = $this->get_mappingid('grade_category', $grade_item->categoryid);
- var_dump('updateobj==');
- var_dump($updateobj->categoryid);
- $DB->update_record('grade_items', $updateobj);
- }
+ //if this is an activity grade item that needs to be put back in its correct category
+ if (!empty($grade_item_backup->parentitemid)) {
+ $updateobj->categoryid = $this->get_mappingid('grade_category', $grade_item_backup->parentitemid);
} else {
- mtrace('backup_ids_temp contains a grade_item that doesnt have the serialized grade_item object in ->info');
+ //mark course and category items as needing to be recalculated
+ $updateobj->needsupdate=1;
}
+ $DB->update_record('grade_items', $updateobj);
+
+ //todo need to get hold of the grade_items previous sortorder to restore it
}
}
$rs->close();