External backup function

This commit is contained in:
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 */ /* Upload settings as a file */
if (boolval($backupservices)) { if (boolval($backupservices)) {
$filecontent = local_webhooks_archiving_data($callbacks); $filecontent = local_webhooks_create_backup();
$filename = "webhooks_" . date("U") . ".backup"; $filename = "webhooks_" . date("U") . ".backup";
send_file($filecontent, $filename, 0, 0, true, true); 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); 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. * Compress an array into a string.
* *

View File

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