1
0
mirror of https://github.com/moodle/moodle.git synced 2025-05-13 19:56:25 +02:00

MDL-46481 backup: implemented quick backup process (one click)

This commit is contained in:
Sam Hemelryk 2014-07-23 12:28:54 +12:00
parent 6597413d41
commit f3973676e8
5 changed files with 75 additions and 5 deletions

@ -55,11 +55,24 @@ abstract class backup_moodleform extends base_moodleform {
}
/**
* Initial backup user interface stage moodleform.
*
* Nothing to override we only need it defined so that moodleform doesn't get confused
* between stages.
*/
class backup_initial_form extends backup_moodleform {}
class backup_initial_form extends backup_moodleform {
/**
* We override the initial form to offer a one click backup option.
*/
public function definition() {
$mform = $this->_form;
$mform->addElement('header', 'backupheading', get_string('backup'));
$mform->addElement('html', html_writer::tag('p', get_string('performoneclickbackup_desc', 'backup')));
$mform->addElement('submit', 'oneclickbackup', get_string('performoneclickbackup', 'backup'));
parent::definition();
$mform->setDisableShortforms(false);
}
}
/**
* Schema backup user interface stage moodleform.
*

@ -62,6 +62,12 @@ abstract class backup_ui_stage extends base_ui_stage {
*/
class backup_ui_stage_initial extends backup_ui_stage {
/**
* When set to true we skip all stages and jump to immediately processing the backup.
* @var bool
*/
protected $oneclickbackup = false;
/**
* Initial backup stage constructor
* @param backup_ui $ui
@ -86,6 +92,9 @@ class backup_ui_stage_initial extends backup_ui_stage {
$data = $form->get_data();
if ($data && confirm_sesskey()) {
if (isset($data->oneclickbackup)) {
$this->oneclickbackup = true;
}
$tasks = $this->ui->get_tasks();
$changes = 0;
foreach ($tasks as &$task) {
@ -112,6 +121,42 @@ class backup_ui_stage_initial extends backup_ui_stage {
}
}
/**
* Gets the next stage for the backup.
*
* We override this function to implement the one click backup.
* When the user performs a one click backup we jump straight to the final stage.
*
* @return int
*/
public function get_next_stage() {
if ($this->oneclickbackup) {
// Its a one click backup.
// The default filename is backup.mbz, this normally gets set to something useful in the confirmation stage.
// because we skipped that stage we must manually set this to a useful value.
$tasks = $this->ui->get_tasks();
foreach ($tasks as $task) {
if ($task instanceof backup_root_task) {
// Find the filename setting.
$setting = $task->get_setting('filename');
if ($setting) {
// Use the helper objects to get a useful name.
$filename = backup_plan_dbops::get_default_backup_filename(
$this->ui->get_format(),
$this->ui->get_type(),
$this->ui->get_controller_id(),
$this->ui->get_setting_value('users'),
$this->ui->get_setting_value('anonymize')
);
$setting->set_value($filename);
}
}
}
return backup_ui::STAGE_FINAL;
}
return parent::get_next_stage();
}
/**
* Initialises the backup_moodleform instance for this stage
*
@ -130,6 +175,7 @@ class backup_ui_stage_initial extends backup_ui_stage {
// For the initial stage we are only interested in the root settings
if ($task instanceof backup_root_task) {
$form->add_heading('rootsettings', get_string('rootsettings', 'backup'));
$form->collapse_heading('rootsettings');
$settings = $task->get_settings();
// First add all settings except the filename setting
foreach ($settings as &$setting) {

@ -369,4 +369,13 @@ abstract class base_moodleform extends moodleform {
$this->definition_after_data();
}
}
/**
* Can be used to collapse a heading from outside of this form.
*
* @param string $heading
*/
public function collapse_heading($heading) {
$this->_form->setExpanded($heading, false);
}
}

@ -84,7 +84,7 @@ abstract class base_ui_stage {
* The next stage
* @return int
*/
final public function get_next_stage() {
public function get_next_stage() {
return floor($this->stage*2);
}
/**

@ -177,6 +177,8 @@ $string['moreresults'] = 'There are too many results, enter a more specific sear
$string['nomatchingcourses'] = 'There are no courses to display';
$string['norestoreoptions'] = 'There are no categories or existing courses you can restore to.';
$string['originalwwwroot'] = 'URL of backup';
$string['performoneclickbackup'] = 'Perform quick backup';
$string['performoneclickbackup_desc'] = 'Clicking this will create a backup using the current settings. If you wish to proceed through each stage of the backup individually use the controls at the bottom of the form.';
$string['previousstage'] = 'Previous';
$string['preparingui'] = 'Preparing to display page';
$string['preparingdata'] = 'Preparing data';