diff --git a/backup/moodle2/backup_root_task.class.php b/backup/moodle2/backup_root_task.class.php index 45e792d0980..6366c8fbefa 100644 --- a/backup/moodle2/backup_root_task.class.php +++ b/backup/moodle2/backup_root_task.class.php @@ -163,5 +163,10 @@ class backup_root_task extends backup_task { $groups = new backup_groups_setting('groups', base_setting::IS_BOOLEAN, true); $groups->set_ui(new backup_setting_ui_checkbox($groups, get_string('rootsettinggroups', 'backup'))); $this->add_setting($groups); + + // Define competencies inclusion setting if competencies are enabled. + $competencies = new backup_competencies_setting(); + $competencies->set_ui(new backup_setting_ui_checkbox($competencies, get_string('rootsettingcompetencies', 'backup'))); + $this->add_setting($competencies); } } diff --git a/backup/moodle2/backup_settingslib.php b/backup/moodle2/backup_settingslib.php index f799e4a363f..d2e1e5f09a5 100644 --- a/backup/moodle2/backup_settingslib.php +++ b/backup/moodle2/backup_settingslib.php @@ -130,6 +130,27 @@ class backup_calendarevents_setting extends backup_anonymize_setting {} */ class backup_userscompletion_setting extends backup_anonymize_setting {} +/** + * root setting to control if backup will include competencies or not. + */ +class backup_competencies_setting extends backup_generic_setting { + + /** + * backup_competencies_setting constructor. + */ + public function __construct() { + $defaultvalue = false; + $visibility = base_setting::HIDDEN; + $status = base_setting::LOCKED_BY_CONFIG; + if (\core_competency\api::is_enabled()) { + $defaultvalue = true; + $visibility = base_setting::VISIBLE; + $status = base_setting::NOT_LOCKED; + } + parent::__construct('competencies', base_setting::IS_BOOLEAN, $defaultvalue, $visibility, $status); + } +} + // Section backup settings /** diff --git a/backup/moodle2/backup_stepslib.php b/backup/moodle2/backup_stepslib.php index 2ace0f3ce12..da219a1c0bd 100644 --- a/backup/moodle2/backup_stepslib.php +++ b/backup/moodle2/backup_stepslib.php @@ -1585,6 +1585,21 @@ class backup_course_competencies_structure_step extends backup_structure_step { return $wrapper; } + + /** + * Execute conditions. + * + * @return bool + */ + protected function execute_condition() { + + // Do not execute if competencies are not included. + if (!$this->get_setting_value('competencies')) { + return false; + } + + return true; + } } /** @@ -1612,6 +1627,21 @@ class backup_activity_competencies_structure_step extends backup_structure_step return $wrapper; } + + /** + * Execute conditions. + * + * @return bool + */ + protected function execute_condition() { + + // Do not execute if competencies are not included. + if (!$this->get_setting_value('competencies')) { + return false; + } + + return true; + } } /** diff --git a/backup/moodle2/restore_root_task.class.php b/backup/moodle2/restore_root_task.class.php index 922e20394f6..42b7c80603f 100644 --- a/backup/moodle2/restore_root_task.class.php +++ b/backup/moodle2/restore_root_task.class.php @@ -266,5 +266,11 @@ class restore_root_task extends restore_task { $groups->set_ui(new backup_setting_ui_checkbox($groups, get_string('rootsettinggroups', 'backup'))); $groups->get_ui()->set_changeable($changeable); $this->add_setting($groups); + + // Competencies restore setting. Show when competencies is enabled and the setting is available. + $hascompetencies = !empty($rootsettings['competencies']); + $competencies = new restore_competencies_setting($hascompetencies); + $competencies->set_ui(new backup_setting_ui_checkbox($competencies, get_string('rootsettingcompetencies', 'backup'))); + $this->add_setting($competencies); } } diff --git a/backup/moodle2/restore_settingslib.php b/backup/moodle2/restore_settingslib.php index 3ac0e2bcb3c..005449f9a59 100644 --- a/backup/moodle2/restore_settingslib.php +++ b/backup/moodle2/restore_settingslib.php @@ -78,6 +78,30 @@ class restore_comments_setting extends restore_role_assignments_setting {} */ class restore_badges_setting extends restore_generic_setting {} +/** + * root setting to control if competencies will also be restored. + */ +class restore_competencies_setting extends restore_generic_setting { + + /** + * restore_competencies_setting constructor. + * @param bool $hascompetencies Flag whether to set the restore setting as checked and unlocked. + */ + public function __construct($hascompetencies) { + $defaultvalue = false; + $visibility = base_setting::HIDDEN; + $status = base_setting::LOCKED_BY_CONFIG; + if (\core_competency\api::is_enabled()) { + $visibility = base_setting::VISIBLE; + if ($hascompetencies) { + $defaultvalue = true; + $status = base_setting::NOT_LOCKED; + } + } + parent::__construct('competencies', base_setting::IS_BOOLEAN, $defaultvalue, $visibility, $status); + } +} + /** * root setting to control if restore will create * events or no, depends of @restore_users_setting diff --git a/backup/moodle2/restore_stepslib.php b/backup/moodle2/restore_stepslib.php index 623d8762166..3c1f547310b 100644 --- a/backup/moodle2/restore_stepslib.php +++ b/backup/moodle2/restore_stepslib.php @@ -3213,8 +3213,8 @@ class restore_course_competencies_structure_step extends restore_structure_step */ protected function execute_condition() { - // Do not restore when competencies are disabled. - if (!\core_competency\api::is_enabled()) { + // Do not execute if competencies are not included. + if (!$this->get_setting_value('competencies')) { return false; } @@ -3288,8 +3288,8 @@ class restore_activity_competencies_structure_step extends restore_structure_ste */ protected function execute_condition() { - // Do not restore when competencies are disabled. - if (!\core_competency\api::is_enabled()) { + // Do not execute if competencies are not included. + if (!$this->get_setting_value('competencies')) { return false; } diff --git a/lang/en/backup.php b/lang/en/backup.php index dc12e736873..a63c3e6187d 100644 --- a/lang/en/backup.php +++ b/lang/en/backup.php @@ -237,6 +237,7 @@ $string['rootsettingroleassignments'] = 'Include user role assignments'; $string['rootsettingactivities'] = 'Include activities and resources'; $string['rootsettingbadges'] = 'Include badges'; $string['rootsettingblocks'] = 'Include blocks'; +$string['rootsettingcompetencies'] = 'Include competencies'; $string['rootsettingfilters'] = 'Include filters'; $string['rootsettingcomments'] = 'Include comments'; $string['rootsettingcalendarevents'] = 'Include calendar events';