some fixes for gradebook backup/restore, still buggy when viewing outcomes/report, fixing
This commit is contained in:
+22
-9
@@ -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
@@ -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']['#']);
|
||||
|
||||
Reference in New Issue
Block a user