From f86bd7ece031d5ec4f05354de8d49fa34ab33a4e Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Mon, 2 Jul 2018 10:31:47 +0800 Subject: [PATCH] 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. --- .../backup/moodle2/backup_assign_stepslib.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/mod/assign/backup/moodle2/backup_assign_stepslib.php b/mod/assign/backup/moodle2/backup_assign_stepslib.php index 4facb4fda31..0f018ca9212 100644 --- a/mod/assign/backup/moodle2/backup_assign_stepslib.php +++ b/mod/assign/backup/moodle2/backup_assign_stepslib.php @@ -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.