some fixes for gradebook backup/restore, still buggy when viewing outcomes/report, fixing

This commit is contained in:
toyomoyo
2007-07-31 08:26:17 +00:00
parent 1e1c51a3b7
commit a51512c9bc
2 changed files with 56 additions and 19 deletions
+22 -9
View File
@@ -1494,6 +1494,7 @@
//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));
@@ -1535,31 +1536,43 @@
$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;
}
+34 -10
View File
@@ -1347,8 +1347,11 @@
//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']['#']);
@@ -1362,8 +1365,22 @@
// 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
@@ -1413,7 +1430,6 @@
$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;
}
@@ -1455,6 +1471,12 @@
} 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;
}
@@ -1470,11 +1492,12 @@
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']['#']);
@@ -1513,7 +1536,7 @@
$dbrec->sortorder = $lastitem->sortorder + 1;
} else {
// this is the first grade_item
$dbrec->sortorder = 0;
$dbrec->sortorder = 1;
}
$itemid = insert_record('grade_items',$dbrec);
@@ -1548,8 +1571,8 @@
$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')) {
@@ -1573,6 +1596,7 @@
//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']['#']);