mirror of
https://github.com/moodle/moodle.git
synced 2025-01-29 19:50:14 +01:00
Merge branch 'MDL-48179-master' of https://github.com/sammarshallou/moodle
This commit is contained in:
commit
0d23255b89
@ -1742,9 +1742,23 @@ class backup_zip_contents extends backup_execution_step implements file_progress
|
||||
// Get the zip packer
|
||||
$zippacker = get_file_packer('application/vnd.moodle.backup');
|
||||
|
||||
// Track overall progress for the 2 long-running steps (archive to
|
||||
// pathname, get backup information).
|
||||
$reporter = $this->task->get_progress();
|
||||
$reporter->start_progress('backup_zip_contents', 2);
|
||||
|
||||
// Zip files
|
||||
$result = $zippacker->archive_to_pathname($files, $zipfile, true, $this);
|
||||
|
||||
// If any sub-progress happened, end it.
|
||||
if ($this->startedprogress) {
|
||||
$this->task->get_progress()->end_progress();
|
||||
$this->startedprogress = false;
|
||||
} else {
|
||||
// No progress was reported, manually move it on to the next overall task.
|
||||
$reporter->progress(1);
|
||||
}
|
||||
|
||||
// Something went wrong.
|
||||
if ($result === false) {
|
||||
@unlink($zipfile);
|
||||
@ -1752,16 +1766,20 @@ class backup_zip_contents extends backup_execution_step implements file_progress
|
||||
}
|
||||
// Read to make sure it is a valid backup. Refer MDL-37877 . Delete it, if found not to be valid.
|
||||
try {
|
||||
backup_general_helper::get_backup_information_from_mbz($zipfile);
|
||||
backup_general_helper::get_backup_information_from_mbz($zipfile, $this);
|
||||
} catch (backup_helper_exception $e) {
|
||||
@unlink($zipfile);
|
||||
throw new backup_step_exception('error_zip_packing', '', $e->debuginfo);
|
||||
}
|
||||
|
||||
// If any progress happened, end it.
|
||||
// If any sub-progress happened, end it.
|
||||
if ($this->startedprogress) {
|
||||
$this->task->get_progress()->end_progress();
|
||||
$this->startedprogress = false;
|
||||
} else {
|
||||
$reporter->progress(2);
|
||||
}
|
||||
$reporter->end_progress();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -230,11 +230,15 @@ abstract class backup_general_helper extends backup_helper {
|
||||
* This will only extract the moodle_backup.xml file from an MBZ
|
||||
* file and then call {@link self::get_backup_information()}.
|
||||
*
|
||||
* This can be a long-running (multi-minute) operation for large backups.
|
||||
* Pass a $progress value to receive progress updates.
|
||||
*
|
||||
* @param string $filepath absolute path to the MBZ file.
|
||||
* @param file_progress $progress Progress updates
|
||||
* @return stdClass containing information.
|
||||
* @since Moodle 2.4
|
||||
*/
|
||||
public static function get_backup_information_from_mbz($filepath) {
|
||||
public static function get_backup_information_from_mbz($filepath, file_progress $progress = null) {
|
||||
global $CFG;
|
||||
if (!is_readable($filepath)) {
|
||||
throw new backup_helper_exception('missing_moodle_backup_file', $filepath);
|
||||
@ -245,7 +249,7 @@ abstract class backup_general_helper extends backup_helper {
|
||||
$tmpdir = $CFG->tempdir . '/backup/' . $tmpname;
|
||||
$fp = get_file_packer('application/vnd.moodle.backup');
|
||||
|
||||
$extracted = $fp->extract_to_pathname($filepath, $tmpdir, array('moodle_backup.xml'));
|
||||
$extracted = $fp->extract_to_pathname($filepath, $tmpdir, array('moodle_backup.xml'), $progress);
|
||||
$moodlefile = $tmpdir . '/' . 'moodle_backup.xml';
|
||||
if (!$extracted || !is_readable($moodlefile)) {
|
||||
throw new backup_helper_exception('missing_moodle_backup_xml_file', $moodlefile);
|
||||
|
Loading…
x
Reference in New Issue
Block a user