External backup function

This commit is contained in:
Valentin Popov 2017-11-23 18:42:47 +04:00
parent 3da34ec7f1
commit 4bf6f61131
3 changed files with 29 additions and 9 deletions

View File

@ -54,7 +54,7 @@ $callbacks = local_webhooks_get_list_records();
/* Upload settings as a file */
if (boolval($backupservices)) {
$filecontent = local_webhooks_archiving_data($callbacks);
$filecontent = local_webhooks_create_backup();
$filename = "webhooks_" . date("U") . ".backup";
send_file($filecontent, $filename, 0, 0, true, true);
}

26
lib.php
View File

@ -108,6 +108,32 @@ function local_webhooks_update_record($data, $insert = true) {
return boolval($result);
}
/**
* Make a backup copy of all the services.
*
* @return string
*/
function local_webhooks_create_backup() {
$listservices = local_webhooks_get_list_records();
$listservices = local_webhooks_archiving_data($listservices);
return $listservices;
}
/**
* Restore the data from the backup.
*
* @param string $data
*/
function local_webhooks_restore_backup($listservices = "") {
$listservices = local_webhooks_unarchive_data($listservices);
local_webhooks_remove_list_records();
foreach ($listservices as $servicerecord) {
local_webhooks_update_record($servicerecord, true);
}
}
/**
* Compress an array into a string.
*

View File

@ -46,14 +46,8 @@ if ($mform->is_cancelled()) {
/* Processing the received file */
if ($data = $mform->get_data()) {
$content = $mform->get_file_content("backupfile");
$callbacks = local_webhooks_unarchive_data($content);
local_webhooks_remove_list_records();
foreach ($callbacks as $callback) {
local_webhooks_update_record($callback, true);
}
$content = $mform->get_file_content("backupfile");
local_webhooks_restore_backup($content);
redirect($managerservice, new lang_string("restorefinished", "moodle"));
}