MDL-86006 mod_assign: Add multimarking to assign backup and restore
This commit is contained in:
committed by
David Woloszyn
parent
6e3b1b7d2f
commit
204dda9aa8
@@ -91,6 +91,8 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st
|
||||
'maxattempts',
|
||||
'markingworkflow',
|
||||
'markingallocation',
|
||||
'markercount',
|
||||
'multimarkmethod',
|
||||
'markinganonymous',
|
||||
'preventsubmissionnotingroup',
|
||||
'activity',
|
||||
@@ -101,14 +103,30 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st
|
||||
|
||||
$userflags = new backup_nested_element('userflags');
|
||||
|
||||
$userflag = new backup_nested_element('userflag', array('id'),
|
||||
array('userid',
|
||||
'assignment',
|
||||
'mailed',
|
||||
'locked',
|
||||
'extensionduedate',
|
||||
'workflowstate',
|
||||
'allocatedmarker'));
|
||||
$userflag = new backup_nested_element(
|
||||
'userflag',
|
||||
['id'],
|
||||
[
|
||||
'userid',
|
||||
'assignment',
|
||||
'mailed',
|
||||
'locked',
|
||||
'extensionduedate',
|
||||
'workflowstate',
|
||||
]
|
||||
);
|
||||
|
||||
$allocatedmarkers = new backup_nested_element('allocatedmarkers');
|
||||
|
||||
$allocatedmarker = new backup_nested_element(
|
||||
'allocatedmarker',
|
||||
['id'],
|
||||
[
|
||||
'student',
|
||||
'assignment',
|
||||
'marker',
|
||||
]
|
||||
);
|
||||
|
||||
$submissions = new backup_nested_element('submissions');
|
||||
|
||||
@@ -133,6 +151,22 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st
|
||||
'penalty',
|
||||
'attemptnumber'));
|
||||
|
||||
$marks = new backup_nested_element('marks');
|
||||
|
||||
$mark = new backup_nested_element(
|
||||
'mark',
|
||||
['id'],
|
||||
[
|
||||
'assignment',
|
||||
'gradeid',
|
||||
'timecreated',
|
||||
'timemodified',
|
||||
'marker',
|
||||
'mark',
|
||||
'workflowstate',
|
||||
]
|
||||
);
|
||||
|
||||
$pluginconfigs = new backup_nested_element('plugin_configs');
|
||||
|
||||
$pluginconfig = new backup_nested_element('plugin_config', array('id'),
|
||||
@@ -148,10 +182,14 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st
|
||||
// Build the tree.
|
||||
$assign->add_child($userflags);
|
||||
$userflags->add_child($userflag);
|
||||
$assign->add_child($allocatedmarkers);
|
||||
$allocatedmarkers->add_child($allocatedmarker);
|
||||
$assign->add_child($submissions);
|
||||
$submissions->add_child($submission);
|
||||
$assign->add_child($grades);
|
||||
$grades->add_child($grade);
|
||||
$assign->add_child($marks);
|
||||
$marks->add_child($mark);
|
||||
$assign->add_child($pluginconfigs);
|
||||
$pluginconfigs->add_child($pluginconfig);
|
||||
$assign->add_child($overrides);
|
||||
@@ -172,6 +210,15 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st
|
||||
if ($userinfo) {
|
||||
$userflag->set_source_table('assign_user_flags',
|
||||
array('assignment' => backup::VAR_PARENTID));
|
||||
$allocatedmarker->set_source_table(
|
||||
'assign_allocated_marker',
|
||||
['assignment' => backup::VAR_PARENTID]
|
||||
);
|
||||
|
||||
$mark->set_source_table(
|
||||
'assign_mark',
|
||||
['assignment' => backup::VAR_PARENTID]
|
||||
);
|
||||
|
||||
$submissionparams = array('assignment' => backup::VAR_PARENTID);
|
||||
if (!$groupinfo) {
|
||||
@@ -198,7 +245,9 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st
|
||||
|
||||
// Define id annotations.
|
||||
$userflag->annotate_ids('user', 'userid');
|
||||
$userflag->annotate_ids('user', 'allocatedmarker');
|
||||
$allocatedmarker->annotate_ids('user', 'student');
|
||||
$allocatedmarker->annotate_ids('user', 'marker');
|
||||
$mark->annotate_ids('user', 'marker');
|
||||
$submission->annotate_ids('user', 'userid');
|
||||
$submission->annotate_ids('group', 'groupid');
|
||||
$grade->annotate_ids('user', 'userid');
|
||||
|
||||
@@ -71,6 +71,16 @@ class restore_assign_activity_structure_step extends restore_activity_structure_
|
||||
$userflag = new restore_path_element('assign_userflag',
|
||||
'/activity/assign/userflags/userflag');
|
||||
$paths[] = $userflag;
|
||||
$allocatedmarker = new restore_path_element(
|
||||
'assign_allocatedmarker',
|
||||
'/activity/assign/allocatedmarkers/allocatedmarker'
|
||||
);
|
||||
$paths[] = $allocatedmarker;
|
||||
$mark = new restore_path_element(
|
||||
'assign_mark',
|
||||
'/activity/assign/marks/mark'
|
||||
);
|
||||
$paths[] = $mark;
|
||||
}
|
||||
|
||||
$paths[] = new restore_path_element('assign_override', '/activity/assign/overrides/override');
|
||||
@@ -131,6 +141,9 @@ class restore_assign_activity_structure_step extends restore_activity_structure_
|
||||
if (!isset($data->markingallocation)) {
|
||||
$data->markingallocation = 0;
|
||||
}
|
||||
if (!isset($data->markercount)) {
|
||||
$data->markercount = 1;
|
||||
}
|
||||
if (!isset($data->markinganonymous)) {
|
||||
$data->markinganonymous = 0;
|
||||
}
|
||||
@@ -213,9 +226,6 @@ class restore_assign_activity_structure_step extends restore_activity_structure_
|
||||
$data->assignment = $this->get_new_parentid('assign');
|
||||
|
||||
$data->userid = $this->get_mappingid('user', $data->userid);
|
||||
if (!empty($data->allocatedmarker)) {
|
||||
$data->allocatedmarker = $this->get_mappingid('user', $data->allocatedmarker);
|
||||
}
|
||||
if (!empty($data->extensionduedate)) {
|
||||
$data->extensionduedate = $this->apply_date_offset($data->extensionduedate);
|
||||
} else {
|
||||
@@ -226,6 +236,40 @@ class restore_assign_activity_structure_step extends restore_activity_structure_
|
||||
$newitemid = $DB->insert_record('assign_user_flags', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process an allocated_marker restore.
|
||||
*
|
||||
* @param object $data The data in object form.
|
||||
*/
|
||||
protected function process_assign_allocatedmarker($data): void {
|
||||
global $DB;
|
||||
|
||||
$data = (object)$data;
|
||||
|
||||
$data->assignment = $this->get_new_parentid('assign');
|
||||
$data->student = $this->get_mappingid('user', $data->student);
|
||||
$data->marker = $this->get_mappingid('user', $data->marker);
|
||||
|
||||
$DB->insert_record('assign_allocated_marker', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process mark restore.
|
||||
*
|
||||
* @param object $data The data in object form.
|
||||
*/
|
||||
protected function process_assign_mark($data): void {
|
||||
global $DB;
|
||||
|
||||
$data = (object)$data;
|
||||
|
||||
$data->assignment = $this->get_new_parentid('assign');
|
||||
$data->marker = $this->get_mappingid('user', $data->marker);
|
||||
$data->gradeid = $this->get_mappingid('grade', $data->gradeid);
|
||||
|
||||
$DB->insert_record('assign_mark', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a grade restore
|
||||
* @param object $data The data in object form
|
||||
|
||||
@@ -1302,6 +1302,8 @@ class assign {
|
||||
|
||||
if (!empty($data->reset_gradebook_grades)) {
|
||||
$DB->delete_records_select('assign_grades', "assignment $sql", $params);
|
||||
$DB->delete_records_select('assign_mark', "assignment $sql", $params);
|
||||
$DB->delete_records_select('assign_allocated_marker', "assignment $sql", $params);
|
||||
// Remove all grades from gradebook.
|
||||
require_once($CFG->dirroot . '/mod/assign/lib.php');
|
||||
assign_reset_gradebook($data->courseid);
|
||||
|
||||
Reference in New Issue
Block a user