MDL-61870 mod_assign: Conditionally backup groups

When group info is not backed up, do not backup assignment submissions or overrides that related to a specific group.
We are already correctly not restoring them, but it is more robust not to include them in the backup file at all.
This commit is contained in:
Damyon Wiese 2018-07-02 10:31:47 +08:00
parent 8ea4df50c9
commit 192e48bb90

View File

@ -61,6 +61,7 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st
// To know if we are including userinfo.
$userinfo = $this->get_setting_value('userinfo');
$groupinfo = $this->get_setting_value('groups');
// Define each element separated.
$assign = new backup_nested_element('assign', array('id'),
@ -159,8 +160,12 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st
$userflag->set_source_table('assign_user_flags',
array('assignment' => backup::VAR_PARENTID));
$submission->set_source_table('assign_submission',
array('assignment' => backup::VAR_PARENTID));
$submissionparams = array('assignment' => backup::VAR_PARENTID);
if (!$groupinfo) {
// Without group info, skip group submissions.
$submissionparams['groupid'] = backup_helper::is_sqlparam(0);
}
$submission->set_source_table('assign_submission', $submissionparams);
$grade->set_source_table('assign_grades',
array('assignment' => backup::VAR_PARENTID));
@ -172,6 +177,10 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st
$overrideparams['userid'] = backup_helper::is_sqlparam(null); // Without userinfo, skip user overrides.
}
if (!$groupinfo) {
// Without group info, skip group overrides.
$overrideparams['groupid'] = backup_helper::is_sqlparam(0);
}
$override->set_source_table('assign_overrides', $overrideparams);
// Define id annotations.