mirror of
https://github.com/moodle/moodle.git
synced 2025-06-05 23:55:21 +02:00
MDL-46481 backup: implemented quick backup process (one click)
This commit is contained in:
parent
6597413d41
commit
f3973676e8
@ -55,11 +55,24 @@ abstract class backup_moodleform extends base_moodleform {
|
|||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Initial backup user interface stage 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.
|
* 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 {
|
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
|
* Initial backup stage constructor
|
||||||
* @param backup_ui $ui
|
* @param backup_ui $ui
|
||||||
@ -86,6 +92,9 @@ class backup_ui_stage_initial extends backup_ui_stage {
|
|||||||
|
|
||||||
$data = $form->get_data();
|
$data = $form->get_data();
|
||||||
if ($data && confirm_sesskey()) {
|
if ($data && confirm_sesskey()) {
|
||||||
|
if (isset($data->oneclickbackup)) {
|
||||||
|
$this->oneclickbackup = true;
|
||||||
|
}
|
||||||
$tasks = $this->ui->get_tasks();
|
$tasks = $this->ui->get_tasks();
|
||||||
$changes = 0;
|
$changes = 0;
|
||||||
foreach ($tasks as &$task) {
|
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
|
* 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
|
// For the initial stage we are only interested in the root settings
|
||||||
if ($task instanceof backup_root_task) {
|
if ($task instanceof backup_root_task) {
|
||||||
$form->add_heading('rootsettings', get_string('rootsettings', 'backup'));
|
$form->add_heading('rootsettings', get_string('rootsettings', 'backup'));
|
||||||
|
$form->collapse_heading('rootsettings');
|
||||||
$settings = $task->get_settings();
|
$settings = $task->get_settings();
|
||||||
// First add all settings except the filename setting
|
// First add all settings except the filename setting
|
||||||
foreach ($settings as &$setting) {
|
foreach ($settings as &$setting) {
|
||||||
|
@ -369,4 +369,13 @@ abstract class base_moodleform extends moodleform {
|
|||||||
$this->definition_after_data();
|
$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
|
* The next stage
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
final public function get_next_stage() {
|
public function get_next_stage() {
|
||||||
return floor($this->stage*2);
|
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['nomatchingcourses'] = 'There are no courses to display';
|
||||||
$string['norestoreoptions'] = 'There are no categories or existing courses you can restore to.';
|
$string['norestoreoptions'] = 'There are no categories or existing courses you can restore to.';
|
||||||
$string['originalwwwroot'] = 'URL of backup';
|
$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['previousstage'] = 'Previous';
|
||||||
$string['preparingui'] = 'Preparing to display page';
|
$string['preparingui'] = 'Preparing to display page';
|
||||||
$string['preparingdata'] = 'Preparing data';
|
$string['preparingdata'] = 'Preparing data';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user