//Output individual fields
fwrite ($bf,full_tag("ID",5,false,$grade_item->id));
+ fwrite ($bf,full_tag("CATEGORYID",5,false,$grade_item->categoryid));
fwrite ($bf,full_tag("ITEMNAME",5,false,$grade_item->itemname));
fwrite ($bf,full_tag("ITEMTYPE",5,false,$grade_item->itemtype));
fwrite ($bf,full_tag("ITEMMODULE",5,false,$grade_item->itemmodule));
$status = true;
- // get all the grade_items
- // might need to do it using sortorder
- if ($grade_outcomes = get_records('grade_outcomes', 'courseid', $preferences->backup_course)) {
+ // get all global outcomes (used in this course)
+ // and course specific outcomes
+ // we don't need to backup all the outcomes in this case
+ $grade_outcomes = get_records_sql('SELECT go.*
+ FROM '.$CFG->prefix.'grade_outcomes_courses goc,
+ '.$CFG->prefix.'grade_outcomes go
+ WHERE goc.courseid = '.$preferences->backup_course.'
+ AND goc.outcomeid = go.id');
- //Begin grade_items tag
+ if (empty($grade_outcomes)) {
+ $grade_outcomes = get_records('grade_outcomes', 'courseid', $preferences->backup_course);
+ } elseif ($mcourseoutcomes = get_records('grade_outcomes', 'courseid', $preferences->backup_course)) {
+ $grade_outcomes += $mcourseoutcomes;
+ }
+
+ if (!empty($grade_outcomes)) {
+ //Begin grade_outcomes tag
fwrite ($bf,start_tag("GRADE_OUTCOMES",3,true));
- //Iterate for each item
+ //Iterate for each outcome
foreach ($grade_outcomes as $grade_outcome) {
- //Begin grade_item
+ //Begin grade_outcome
fwrite ($bf,start_tag("GRADE_OUTCOME",4,true));
//Output individual fields
fwrite ($bf,full_tag("ID",5,false,$grade_outcome->id));
+ fwrite ($bf,full_tag("COURSEID",5,false,$grade_outcome->courseid));
fwrite ($bf,full_tag("SHORTNAME",5,false,$grade_outcome->shortname));
fwrite ($bf,full_tag("FULLNAME",5,false,$grade_outcome->fullname));
fwrite ($bf,full_tag("SCALEID",5,false,$grade_outcome->scaleid));
fwrite ($bf,full_tag("USERMODIFIED",5,false,$grade_outcome->usermodified));
- //End grade_item
+ //End grade_outcome
fwrite ($bf,end_tag("GRADE_OUTCOME",4,true));
}
- //End grade_items tag
+ //End grade_outcomes tag
$status = fwrite ($bf,end_tag("GRADE_OUTCOMES",3,true));
}
-
return $status;
}
//print_object ($GLOBALS['traverse_array']); //Debug
//$GLOBALS['traverse_array']=""; //Debug
//Now build the GRADE_PREFERENCES record structure
-
- $dbrec->courseid = $restore->course_id;
+ if ($info['GRADE_OUTCOME']['#']['COURSEID']['0']['#']) {
+ $dbrec->courseid = $restore->course_id;
+ } else {
+ $dbrec->courseid = NULL;
+ }
$dbrec->shortname = backup_todb($info['GRADE_OUTCOME']['#']['SHORTNAME']['0']['#']);
$dbrec->fullname = backup_todb($info['GRADE_OUTCOME']['#']['FULLNAME']['0']['#']);
// Structure is equal to db, insert record
// If the shortname doesn't exist
- if (!$prerec = get_record('grade_outcomes','courseid',$dbrec->courseid,'shortname',$dbrec->shortname)) {
- $status = insert_record('grade_outcomes',$dbrec);
+
+
+ if (!empty($dbrec->courseid)) {
+ $course_to_search = 0;
+ } else {
+ $course_to_search = $restore->course_id;
+ }
+
+ if (!$prerec = get_record('grade_outcomes','courseid',$course_to_search,'shortname',$dbrec->shortname)) {
+ $newid = insert_record('grade_outcomes',$dbrec);
+ } else {
+ $newid = $prerec->id;
+ }
+
+ if ($newid) {
+ backup_putid($restore->backup_unique_code,"grade_outcomes", $rec->old_id, $newid);
}
}
//Increment counters
$dbrec->courseid = $restore->course_id;
if (!empty($info['GRADE_ITEM']['#']['CATEGORYID']['0']['#'])) {
-
$category = backup_getid($restore->backup_unique_code,'grade_categories',backup_todb($info['GRADE_ITEM']['#']['CATEGORYID']['0']['#']));
$dbrec->categoryid = $category->new_id;
}
} elseif ($dbrec->itemtype == 'course') { // We don't restore course type to avoid duplicate course items
if ($restoreall) {
// TODO any special code needed here to restore course item without duplicating it?
+ // find the course category with depth 1, and course id = current course id
+ // this would have been already restored
+
+ $cat = get_record('grade_categories', 'depth', 1, 'courseid', $restore->course_id);
+ $dbrec->iteminstance = $cat->id;
+
} else {
continue;
}
if ($info['GRADE_ITEM']['#']['SCALEID']['0']['#']) {
$scale = backup_getid($restore->backup_unique_code,"scale",backup_todb($info['GRADE_ITEM']['#']['SCALEID']['0']['#']));
- $derec->scaleid = $scale->new_id;
+ $dbrec->scaleid = $scale->new_id;
}
/// needs to be restored first
- $dbrec->outcomeid = backup_todb($info['GRADE_ITEM']['#']['OUTCOMEID']['0']['#']);
+ $dbrec->outcomeid = backup_getid($restore->backup_unique_code,"grade_outcomes",backup_todb($info['GRADE_ITEM']['#']['OUTCOMEID']['0']['#']));
+
$dbrec->gradepass = backup_todb($info['GRADE_ITEM']['#']['GRADEPASS']['0']['#']);
$dbrec->multfactor = backup_todb($info['GRADE_ITEM']['#']['MULTFACTOR']['0']['#']);
$dbrec->plusfactor = backup_todb($info['GRADE_ITEM']['#']['PLUSFACTOR']['0']['#']);
$dbrec->sortorder = $lastitem->sortorder + 1;
} else {
// this is the first grade_item
- $dbrec->sortorder = 0;
+ $dbrec->sortorder = 1;
}
$itemid = insert_record('grade_items',$dbrec);
$grade->overridden = backup_todb($ite_info['#']['OVERRIDDEN']['0']['#']);
$grade->excluded = backup_todb($ite_info['#']['EXCLUDED']['0']['#']);
- insert_record('grade_grades', $grade);
-
+ $newid = insert_record('grade_grades', $grade);
+ backup_putid($restore->backup_unique_code,"grade_grades", backup_todb($ite_info['#']['ID']['0']['#']), $newid);
$counter++;
if ($counter % 20 == 0) {
if (!defined('RESTORE_SILENTLY')) {
//print_object ($GLOBALS['traverse_array']); //Debug
//$GLOBALS['traverse_array']=""; //Debug
$grade = backup_getid($restore->backup_unique_code,"grade_grades", backup_todb($ite_info['#']['GRADEID']['0']['#']));
+
$text->gradeid = $grade->new_id;
$text->information = backup_todb($ite_info['#']['INFORMATION']['0']['#']);
$text->informationformat = backup_todb($ite_info['#']['INFORMATIONFORMAT']['0']['#']);