MDL-27233 add new options to keep enrols and groups purging existing course in restore

This commit is contained in:
Petr Skoda 2011-11-09 10:55:16 +01:00
parent 16ef46e7b6
commit d53e3298c0
4 changed files with 29 additions and 3 deletions

View File

@ -133,6 +133,26 @@ class restore_course_task extends restore_task {
$startdate->set_ui(new backup_setting_ui_dateselector($startdate, get_string('setting_course_startdate', 'backup')));
$this->add_setting($startdate);
$purge_enrols = new restore_course_generic_setting('keep_roles_and_enrolments', base_setting::IS_BOOLEAN, false);
$purge_enrols->set_ui(new backup_setting_ui_select($purge_enrols, $purge_enrols->get_name(), array(1=>get_string('yes'), 0=>get_string('no'))));
$purge_enrols->get_ui()->set_label(get_string('setting_keep_roles_and_enrolments', 'backup'));
if ($this->get_target() != backup::TARGET_CURRENT_DELETING and $this->get_target() != backup::TARGET_EXISTING_DELETING) {
$purge_enrols->set_value(false);
$purge_enrols->set_status(backup_setting::LOCKED_BY_CONFIG);
$purge_enrols->set_visibility(backup_setting::HIDDEN);
}
$this->add_setting($purge_enrols);
$purge_groups = new restore_course_generic_setting('keep_groups_and_groupings', base_setting::IS_BOOLEAN, false);
$purge_groups->set_ui(new backup_setting_ui_select($purge_groups, $purge_groups->get_name(), array(1=>get_string('yes'), 0=>get_string('no'))));
$purge_groups->get_ui()->set_label(get_string('setting_keep_groups_and_groupings', 'backup'));
if ($this->get_target() != backup::TARGET_CURRENT_DELETING and $this->get_target() != backup::TARGET_EXISTING_DELETING) {
$purge_groups->set_value(false);
$purge_groups->set_status(backup_setting::LOCKED_BY_CONFIG);
$purge_groups->set_visibility(backup_setting::HIDDEN);
}
$this->add_setting($purge_groups);
// Define overwrite_conf to decide if course configuration will be restored over existing one
$overwrite = new restore_course_overwrite_conf_setting('overwrite_conf', base_setting::IS_BOOLEAN, false);
$overwrite->set_ui(new backup_setting_ui_select($overwrite, $overwrite->get_name(), array(1=>get_string('yes'), 0=>get_string('no'))));

View File

@ -1354,10 +1354,11 @@ abstract class restore_dbops {
/**
* Deletes all of the content associated with the given course (courseid)
* @param int $courseid
* @param array $options
* @return bool True for success
*/
public static function delete_course_content($courseid) {
return remove_course_contents($courseid, false);
public static function delete_course_content($courseid, array $options = null) {
return remove_course_contents($courseid, false, $options);
}
}

View File

@ -139,7 +139,10 @@ class restore_ui extends base_ui {
throw new restore_ui_exception('restoreuifinalisedbeforeexecute');
}
if ($this->controller->get_target() == backup::TARGET_CURRENT_DELETING || $this->controller->get_target() == backup::TARGET_EXISTING_DELETING) {
restore_dbops::delete_course_content($this->controller->get_courseid());
$options = array();
$options['keep_roles_and_enrolments'] = $this->get_setting_value('keep_roles_and_enrolments');
$options['keep_groups_and_groupings'] = $this->get_setting_value('keep_groups_and_groupings');
restore_dbops::delete_course_content($this->controller->get_courseid(), $options);
}
$this->controller->execute_plan();
$this->progress = self::PROGRESS_EXECUTED;

View File

@ -220,5 +220,7 @@ $string['setting_overwriteconf'] = 'Overwrite course configuration';
$string['setting_course_fullname'] = 'Course name';
$string['setting_course_shortname'] = 'Course short name';
$string['setting_course_startdate'] = 'Course startdate';
$string['setting_keep_roles_and_enrolments'] = 'Keep current roles and enrolments';
$string['setting_keep_groups_and_groupings'] = 'Keep current groups and groupings';
$string['totalcategorysearchresults'] = 'Total categories: {$a}';
$string['totalcoursesearchresults'] = 'Total courses: {$a}';