Version Description
Download this release
Release Info
| Developer | wpdprx |
| Plugin | |
| Version | 0.1.4 |
| Comparing to | |
| See all releases | |
Code changes from version 0.1.3 to 0.1.4
- backupwordpress.php +9 -1
- bkpwp-classes/manage_backups.php +5 -11
- bkpwp-classes/schedule.php +2 -1
- bkpwp-pages/bkpwp_manage_backups.php +4 -1
- bkpwp-pages/bkpwp_schedule.php +0 -1
- functions.php +1 -1
- interface.php +49 -0
- manage_backups.php +870 -0
- options.php +449 -0
- schedule.php +117 -0
backupwordpress.php
CHANGED
|
@@ -4,19 +4,27 @@ Plugin Name: BackUpWordPress
|
|
| 4 |
Plugin URI: http://wordpress.designpraxis.at
|
| 5 |
Description: Manage <a href="admin.php?page=backupwordpress/backupwordpress.php">WordPress Backups</a>. Beta Release. Please help testing and give me feedback under the comments section of <a href="http://wordpress.designpraxis.at/plugins/backupwordpress/">the Plugin page</a>. Backup DB, Files & Folders, use .tar.gz, .zip, Exclude List, etc.
|
| 6 |
Author: Roland Rust
|
| 7 |
-
Version: 0.1.
|
| 8 |
Author URI: http://wordpress.designpraxis.at
|
| 9 |
*/
|
| 10 |
|
| 11 |
/*
|
| 12 |
Notes:
|
| 13 |
backupwordpress\Archive\Writer\Tar.php has been debugged around line 80 to handle long filenames according to http://pear.php.net/bugs/bug.php?id=10144&edit=3
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
*/
|
| 15 |
|
| 16 |
/*
|
| 17 |
|
| 18 |
Changelog:
|
| 19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
Changes in 0.1.3:
|
| 21 |
- ajax problems fixed
|
| 22 |
- schedules last run timestamp fixed
|
| 4 |
Plugin URI: http://wordpress.designpraxis.at
|
| 5 |
Description: Manage <a href="admin.php?page=backupwordpress/backupwordpress.php">WordPress Backups</a>. Beta Release. Please help testing and give me feedback under the comments section of <a href="http://wordpress.designpraxis.at/plugins/backupwordpress/">the Plugin page</a>. Backup DB, Files & Folders, use .tar.gz, .zip, Exclude List, etc.
|
| 6 |
Author: Roland Rust
|
| 7 |
+
Version: 0.1.4
|
| 8 |
Author URI: http://wordpress.designpraxis.at
|
| 9 |
*/
|
| 10 |
|
| 11 |
/*
|
| 12 |
Notes:
|
| 13 |
backupwordpress\Archive\Writer\Tar.php has been debugged around line 80 to handle long filenames according to http://pear.php.net/bugs/bug.php?id=10144&edit=3
|
| 14 |
+
|
| 15 |
+
Whishlist:
|
| 16 |
+
- staggered export od files and sql.
|
| 17 |
+
- custom schedules
|
| 18 |
*/
|
| 19 |
|
| 20 |
/*
|
| 21 |
|
| 22 |
Changelog:
|
| 23 |
|
| 24 |
+
Changes in 0.1.4:
|
| 25 |
+
- @set_time_limit(0) in functions.php line 277 supresses the 'Cannot set time limit in safe mode' warning
|
| 26 |
+
- dialoques streamlined: e.g. when you click "delete" on a backup archive, you just need to hit enter to delete it
|
| 27 |
+
|
| 28 |
Changes in 0.1.3:
|
| 29 |
- ajax problems fixed
|
| 30 |
- schedules last run timestamp fixed
|
bkpwp-classes/manage_backups.php
CHANGED
|
@@ -645,6 +645,10 @@ class BKPWP_MANAGE {
|
|
| 645 |
function bkpwp_load_preset($preset) {
|
| 646 |
$options = new BKPWP_OPTIONS();
|
| 647 |
$ret = "<div style=\"border: 1px solid #ccc; padding:10px; margin-bottom:20px;\">";
|
|
|
|
|
|
|
|
|
|
|
|
|
| 648 |
$ret .= "<h4>Configure or Create Backup Preset</h4><p>";
|
| 649 |
$ret .= "<label for=\"mod_bkpwp_preset_name\">".__("Preset Name","bkpwp")." </label>";
|
| 650 |
$ret .= "<input type=\"text\" name=\"mod_bkpwp_preset_name\" id=\"mod_bkpwp_preset_name\" value=\"".$preset['bkpwp_preset_name']."\" /></p>";
|
|
@@ -689,9 +693,6 @@ class BKPWP_MANAGE {
|
|
| 689 |
}
|
| 690 |
$ret .= " onclick=\"if (document.getElementById('mod_bkpwp_sql_only').checked == false) { document.getElementById('mod_bkpwp_sql_only').value=''; document.getElementById('full_only').style.display='block'; } else { document.getElementById('mod_bkpwp_sql_only').value=1; document.getElementById('full_only').style.display='none'; }\" /> ".__("SQL only","bkpwp")."</label></p>";
|
| 691 |
$ret .= "<p><input type=\"button\" class=\"button\" value=\"".__("Save Preset","bkpwp")."\" onclick=\"bkpwp_js_loading('".__("Saving Preset","bkpwp")."'); sajax_target_id = 'bkpwp_action_buffer'; save_preset(); sajax_target_id = ''; return false;\" /></p>";
|
| 692 |
-
if ($preset['bkpwp_preset_options']['default'] == 1) {
|
| 693 |
-
$ret .= "<p>".__("You can not overwrite this default preset. Please save changes with a new Preset Name.","bkpwp")."</p>";
|
| 694 |
-
}
|
| 695 |
$ret .= "</div>";
|
| 696 |
return $ret;
|
| 697 |
}
|
|
@@ -738,7 +739,7 @@ class BKPWP_MANAGE {
|
|
| 738 |
$presets[] = $p;
|
| 739 |
} else {
|
| 740 |
if ($p['bkpwp_preset_options']['default'] == 1) {
|
| 741 |
-
return __("You can not overwrite this default preset. Please save changes with a new Preset Name.","bkpwp");
|
| 742 |
}
|
| 743 |
}
|
| 744 |
}
|
|
@@ -749,13 +750,6 @@ class BKPWP_MANAGE {
|
|
| 749 |
$presets[] = array("bkpwp_preset_name" => $name,
|
| 750 |
"bkpwp_preset_options" => $options);
|
| 751 |
|
| 752 |
-
/* ob_start();
|
| 753 |
-
echo "<pre>";
|
| 754 |
-
print_r($presets);
|
| 755 |
-
echo "</pre>";
|
| 756 |
-
$out = ob_get_contents();
|
| 757 |
-
ob_end_clean(); */
|
| 758 |
-
//return $out;
|
| 759 |
$this->bkpwp_update_presets($presets);
|
| 760 |
return "<div id=\"message\" class=\"updated fade\"><p>".__("Preset saved.","bkpwp")."</p></div>";
|
| 761 |
}
|
| 645 |
function bkpwp_load_preset($preset) {
|
| 646 |
$options = new BKPWP_OPTIONS();
|
| 647 |
$ret = "<div style=\"border: 1px solid #ccc; padding:10px; margin-bottom:20px;\">";
|
| 648 |
+
/*if ($preset['bkpwp_preset_options']['default'] == 1) {
|
| 649 |
+
$ret .= "<div id=\"message\" class=\"updated fade\"><p>".__("You can not overwrite this default preset. Please save changes with a new Preset Name.","bkpwp")."</p></div>";
|
| 650 |
+
}
|
| 651 |
+
*/
|
| 652 |
$ret .= "<h4>Configure or Create Backup Preset</h4><p>";
|
| 653 |
$ret .= "<label for=\"mod_bkpwp_preset_name\">".__("Preset Name","bkpwp")." </label>";
|
| 654 |
$ret .= "<input type=\"text\" name=\"mod_bkpwp_preset_name\" id=\"mod_bkpwp_preset_name\" value=\"".$preset['bkpwp_preset_name']."\" /></p>";
|
| 693 |
}
|
| 694 |
$ret .= " onclick=\"if (document.getElementById('mod_bkpwp_sql_only').checked == false) { document.getElementById('mod_bkpwp_sql_only').value=''; document.getElementById('full_only').style.display='block'; } else { document.getElementById('mod_bkpwp_sql_only').value=1; document.getElementById('full_only').style.display='none'; }\" /> ".__("SQL only","bkpwp")."</label></p>";
|
| 695 |
$ret .= "<p><input type=\"button\" class=\"button\" value=\"".__("Save Preset","bkpwp")."\" onclick=\"bkpwp_js_loading('".__("Saving Preset","bkpwp")."'); sajax_target_id = 'bkpwp_action_buffer'; save_preset(); sajax_target_id = ''; return false;\" /></p>";
|
|
|
|
|
|
|
|
|
|
| 696 |
$ret .= "</div>";
|
| 697 |
return $ret;
|
| 698 |
}
|
| 739 |
$presets[] = $p;
|
| 740 |
} else {
|
| 741 |
if ($p['bkpwp_preset_options']['default'] == 1) {
|
| 742 |
+
return "<div id=\"message\" class=\"updated fade\"><p>".__("You can not overwrite this default preset. Please save changes with a new Preset Name.","bkpwp")."</p></div>";
|
| 743 |
}
|
| 744 |
}
|
| 745 |
}
|
| 750 |
$presets[] = array("bkpwp_preset_name" => $name,
|
| 751 |
"bkpwp_preset_options" => $options);
|
| 752 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 753 |
$this->bkpwp_update_presets($presets);
|
| 754 |
return "<div id=\"message\" class=\"updated fade\"><p>".__("Preset saved.","bkpwp")."</p></div>";
|
| 755 |
}
|
bkpwp-classes/schedule.php
CHANGED
|
@@ -104,7 +104,8 @@ class BKPWP_SCHEDULE {
|
|
| 104 |
"created" => date("Y-m-d-H-i-s"));
|
| 105 |
$schedules[] = $test;
|
| 106 |
if (!wp_next_scheduled('bkpwp_schedule_bkpwp_hook', $test)) {
|
| 107 |
-
wp_schedule_single_event(time()+30, 'bkpwp_schedule_bkpwp_hook', $test);
|
|
|
|
| 108 |
update_option("bkpwp_schedules",$schedules);
|
| 109 |
return true;
|
| 110 |
} else {
|
| 104 |
"created" => date("Y-m-d-H-i-s"));
|
| 105 |
$schedules[] = $test;
|
| 106 |
if (!wp_next_scheduled('bkpwp_schedule_bkpwp_hook', $test)) {
|
| 107 |
+
//wp_schedule_single_event(time()+30, 'bkpwp_schedule_bkpwp_hook', $test);
|
| 108 |
+
wp_schedule_event(time()+30, 'bkpwp_30secs', 'bkpwp_schedule_bkpwp_hook',$test);
|
| 109 |
update_option("bkpwp_schedules",$schedules);
|
| 110 |
return true;
|
| 111 |
} else {
|
bkpwp-pages/bkpwp_manage_backups.php
CHANGED
|
@@ -127,7 +127,10 @@ function bkpwp_delete() {
|
|
| 127 |
<form name="form1" method="post" action="">
|
| 128 |
<input type="hidden" name="bkpwp_delete" value="<?php echo $_REQUEST['bkpwp_delete']; ?>" />
|
| 129 |
<p style="text-align:left" class="submit">
|
| 130 |
-
<input type="submit" name="bkpwp_delete_now" value="<?php _e("delete","bkpwp"); ?> »" />
|
|
|
|
|
|
|
|
|
|
| 131 |
</p>
|
| 132 |
</form>
|
| 133 |
</p><br />
|
| 127 |
<form name="form1" method="post" action="">
|
| 128 |
<input type="hidden" name="bkpwp_delete" value="<?php echo $_REQUEST['bkpwp_delete']; ?>" />
|
| 129 |
<p style="text-align:left" class="submit">
|
| 130 |
+
<input type="submit" name="bkpwp_delete_now" id="bkpwp_delete_submit" value="<?php _e("delete","bkpwp"); ?> »" />
|
| 131 |
+
<script type="text/javascript">
|
| 132 |
+
document.getElementById('bkpwp_delete_submit').focus();
|
| 133 |
+
</script>
|
| 134 |
</p>
|
| 135 |
</form>
|
| 136 |
</p><br />
|
bkpwp-pages/bkpwp_schedule.php
CHANGED
|
@@ -50,7 +50,6 @@ function bkpwp_schedulelist($bkpwppath) {
|
|
| 50 |
<td>
|
| 51 |
<?php
|
| 52 |
$now = time();
|
| 53 |
-
echo $now+120;
|
| 54 |
$d = $timestamp - $now;
|
| 55 |
if (!empty($timestamp)) { ?>
|
| 56 |
<div id="countdowncontainer<?php echo $timestamp; ?>"></div>
|
| 50 |
<td>
|
| 51 |
<?php
|
| 52 |
$now = time();
|
|
|
|
| 53 |
$d = $timestamp - $now;
|
| 54 |
if (!empty($timestamp)) { ?>
|
| 55 |
<div id="countdowncontainer<?php echo $timestamp; ?>"></div>
|
functions.php
CHANGED
|
@@ -274,7 +274,7 @@ function bkpwp_send_file($path) {
|
|
| 274 |
|
| 275 |
//to prevent long file from getting cut off from //max_execution_time
|
| 276 |
|
| 277 |
-
set_time_limit(0);
|
| 278 |
|
| 279 |
$name=basename($path);
|
| 280 |
|
| 274 |
|
| 275 |
//to prevent long file from getting cut off from //max_execution_time
|
| 276 |
|
| 277 |
+
@set_time_limit(0);
|
| 278 |
|
| 279 |
$name=basename($path);
|
| 280 |
|
interface.php
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class BKPWP_INIT {
|
| 4 |
+
|
| 5 |
+
function BKPWP_INIT() {
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
function bkpwp_check_prerequisites() {
|
| 9 |
+
if (!current_user_can('manage bkpwp')) {
|
| 10 |
+
return false;
|
| 11 |
+
}
|
| 12 |
+
|
| 13 |
+
$bkpwppath = get_option("bkpwppath");
|
| 14 |
+
if (!is_writable($bkpwppath)) {
|
| 15 |
+
$notconfigured = 1;
|
| 16 |
+
}
|
| 17 |
+
if (!isset($notconfigured)) {
|
| 18 |
+
return false;
|
| 19 |
+
} else {
|
| 20 |
+
return true;
|
| 21 |
+
}
|
| 22 |
+
}
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
class BKPWP_INTERFACE {
|
| 26 |
+
|
| 27 |
+
function BKPWP_INTERFACE() {
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
function menu() {
|
| 31 |
+
$init = new BKPWP_INIT();
|
| 32 |
+
$options = new BKPWP_OPTIONS();
|
| 33 |
+
if($init->bkpwp_check_prerequisites()) {
|
| 34 |
+
add_menu_page(__("BackUpWordPress","bkpwp"), __("BackUpWordPress","bkpwp"), 9, 'backupwordpress/backupwordpress.php', 'bkpwp_load_menu_page');
|
| 35 |
+
add_submenu_page('backupwordpress/backupwordpress.php', __("Options","bkpwp"), __("Options","bkpwp"), 9, 'bkpwp_options', 'bkpwp_load_menu_page' );
|
| 36 |
+
add_submenu_page('backupwordpress/backupwordpress.php', __("Help","bkpwp"), __("Help","bkpwp"), 9, 'bkpwp_help', 'bkpwp_load_menu_page' );
|
| 37 |
+
} else {
|
| 38 |
+
add_menu_page(__("BackUpWordPress","bkpwp"), __("BackUpWordPress","bkpwp"), 9, 'backupwordpress/backupwordpress.php', 'bkpwp_load_menu_page');
|
| 39 |
+
if(!$options->bkpwp_easy_mode()) {
|
| 40 |
+
add_submenu_page('backupwordpress/backupwordpress.php', __("Backup Presets","bkpwp"), __("Backup Presets","bkpwp"), 9, 'bkpwp_manage_presets', 'bkpwp_load_menu_page');
|
| 41 |
+
add_submenu_page('backupwordpress/backupwordpress.php', __("Scheduled Backups","bkpwp"), __("Scheduled Backups","bkpwp"), 9, 'bkpwp_schedule', 'bkpwp_load_menu_page');
|
| 42 |
+
}
|
| 43 |
+
add_submenu_page('backupwordpress/backupwordpress.php', __("Options","bkpwp"), __("Options","bkpwp"), 9, 'bkpwp_options', 'bkpwp_load_menu_page' );
|
| 44 |
+
add_submenu_page('backupwordpress/backupwordpress.php', __("Help","bkpwp"), __("Help","bkpwp"), 9, 'bkpwp_help', 'bkpwp_load_menu_page' );
|
| 45 |
+
}
|
| 46 |
+
}
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
?>
|
manage_backups.php
ADDED
|
@@ -0,0 +1,870 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
class BKPWP_BACKUP_ARCHIVE {
|
| 6 |
+
|
| 7 |
+
function BKPWP_BACKUP_ARCHIVE() {
|
| 8 |
+
}
|
| 9 |
+
|
| 10 |
+
function bkpwp_view_backup_info($backup,$values="") {
|
| 11 |
+
$ret = "";
|
| 12 |
+
$backup = base64_decode($backup);
|
| 13 |
+
$ret .= "<h5>".__("BackUp Archive Path and Filename","bkpwp")."</h5>";
|
| 14 |
+
$ret .= $backup;
|
| 15 |
+
$ret .= "<h5>".__("BackUp Logfile","bkpwp")."</h5>";
|
| 16 |
+
$backuplog = eregi_replace(get_option("bkpwppath"),get_option("bkpwppath")."/logs",$backup).".txt";
|
| 17 |
+
if (!empty($values)) {
|
| 18 |
+
$values = array();
|
| 19 |
+
if(file_exists($backup)) {
|
| 20 |
+
$values['filesize'] = bkpwp_size_readable(filesize($backup));
|
| 21 |
+
} else {
|
| 22 |
+
$values['filesize'] = $backup." ".__("does not exist.","bkpwp");
|
| 23 |
+
}
|
| 24 |
+
if(file_exists($backuplog)) {
|
| 25 |
+
$lines = file($backuplog);
|
| 26 |
+
foreach($lines as $line_num => $line) {
|
| 27 |
+
if (eregi("Preset:",$line)) {
|
| 28 |
+
$p=explode(":",$line);
|
| 29 |
+
$values['preset'] = $p[1];
|
| 30 |
+
}
|
| 31 |
+
if (eregi("Schedule:",$line)) {
|
| 32 |
+
$values['runby'] = __("scheduled","bkpwp");
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
return $values;
|
| 37 |
+
}
|
| 38 |
+
if(file_exists($backuplog)) {
|
| 39 |
+
$lines = file($backuplog);
|
| 40 |
+
foreach($lines as $line_num => $line) {
|
| 41 |
+
$ret .= __("Line","bkpwp")."# ".sprintf("%02d",$line_num)." ".$line."<br />";
|
| 42 |
+
}
|
| 43 |
+
} else {
|
| 44 |
+
$ret = __("BackUpWordPress Logfile does not exist:","bkpwp")." ".$backuplog;
|
| 45 |
+
}
|
| 46 |
+
return $ret;
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
function bkpwp_get_backup_row($f,$alternate) {
|
| 50 |
+
$backup->options = new BKPWP_OPTIONS();
|
| 51 |
+
$info = new BKPWP_BACKUP_ARCHIVE();
|
| 52 |
+
$info = $info->bkpwp_view_backup_info(base64_encode($f['file']),1);
|
| 53 |
+
//if (!file_exists($f['file'])) { return; }
|
| 54 |
+
$type = $backup->options->bkpwp_get_backup_type($f['filename']);
|
| 55 |
+
if ($alternate != "new_row") {
|
| 56 |
+
?>
|
| 57 |
+
<tr id="bkpwp_manage_backups_row_<?php echo base64_encode($f['file']); ?>" class="bkpwp_manage_backups_row <?php echo $alternate; ?>">
|
| 58 |
+
<?php
|
| 59 |
+
}
|
| 60 |
+
?>
|
| 61 |
+
<th scope="row"><?php
|
| 62 |
+
echo date(get_option('date_format'),filemtime($f['file']))." ".date("H:i",filemtime($f['file']));
|
| 63 |
+
?></th>
|
| 64 |
+
<?php if (!$backup->options->bkpwp_easy_mode()) { ?>
|
| 65 |
+
<td>
|
| 66 |
+
<?php
|
| 67 |
+
echo " <b>".$type."</b>";
|
| 68 |
+
?>
|
| 69 |
+
</td>
|
| 70 |
+
<td>
|
| 71 |
+
<?php
|
| 72 |
+
echo " <b>".$info['preset']."</b>";
|
| 73 |
+
if (!empty($info['runby'])) {
|
| 74 |
+
echo " - ".$info['runby'];
|
| 75 |
+
}
|
| 76 |
+
?>
|
| 77 |
+
</td>
|
| 78 |
+
<?php } ?>
|
| 79 |
+
<td>
|
| 80 |
+
<?php
|
| 81 |
+
echo bkpwp_size_readable(filesize($f['file']))."";
|
| 82 |
+
?>
|
| 83 |
+
</td>
|
| 84 |
+
<td style="text-align: center;">
|
| 85 |
+
<?php
|
| 86 |
+
echo " <a href=\"admin.php?page=backupwordpress/backupwordpress.php&bkpwp_download=".base64_encode($f['file'])."\">".__("download","bkpwp")."</a>";
|
| 87 |
+
?>
|
| 88 |
+
</td>
|
| 89 |
+
<?php if (!$backup->options->bkpwp_easy_mode()) { ?>
|
| 90 |
+
<td style="text-align: center;">
|
| 91 |
+
<?php
|
| 92 |
+
echo " <a href=\"javascript:void(0)\"
|
| 93 |
+
onclick=\"bkpwp_js_loading('".__("View Backup Information","bkpwp")."');
|
| 94 |
+
sajax_target_id = 'bkpwp_action_buffer';
|
| 95 |
+
x_bkpwp_ajax_view_backup('".base64_encode($f['file'])."','');
|
| 96 |
+
sajax_target_id = '';\">".__("view","bkpwp")."</a>";
|
| 97 |
+
?>
|
| 98 |
+
</td>
|
| 99 |
+
<td style="text-align: center;">
|
| 100 |
+
<?php
|
| 101 |
+
echo " <a href=\"admin.php?page=backupwordpress/backupwordpress.php&bkpwp_mail=".base64_encode($f['file'])."\">".__("mail","bkpwp")."</a>";
|
| 102 |
+
?>
|
| 103 |
+
</td>
|
| 104 |
+
<?php } ?>
|
| 105 |
+
<td style="text-align: center;">
|
| 106 |
+
<?php
|
| 107 |
+
echo " <a href=\"admin.php?page=backupwordpress/backupwordpress.php&bkpwp_restore=".base64_encode($f['file'])."\">".__("restore","bkpwp")."</a>";
|
| 108 |
+
?>
|
| 109 |
+
</td>
|
| 110 |
+
<?php if (!$backup->options->bkpwp_easy_mode()) { ?>
|
| 111 |
+
<td style="text-align: center;">
|
| 112 |
+
<?php
|
| 113 |
+
echo " <a href=\"admin.php?page=backupwordpress/backupwordpress.php&bkpwp_delete=".base64_encode($f['file'])."\">".__("delete","bkpwp")."</a>";
|
| 114 |
+
?>
|
| 115 |
+
</td>
|
| 116 |
+
<?php } ?>
|
| 117 |
+
<?php
|
| 118 |
+
if ($alternate != "new_row") {
|
| 119 |
+
?>
|
| 120 |
+
</tr>
|
| 121 |
+
<?php
|
| 122 |
+
}
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
class BKPWP_BACKUP {
|
| 128 |
+
|
| 129 |
+
function BKPWP_BACKUP() {
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
function bkpwp_backquote($a_name)
|
| 133 |
+
{
|
| 134 |
+
/*
|
| 135 |
+
Add backqouotes to tables and db-names in
|
| 136 |
+
SQL queries. Taken from phpMyAdmin.
|
| 137 |
+
*/
|
| 138 |
+
if (!empty($a_name) && $a_name != '*') {
|
| 139 |
+
if (is_array($a_name)) {
|
| 140 |
+
$result = array();
|
| 141 |
+
reset($a_name);
|
| 142 |
+
while(list($key, $val) = each($a_name)) {
|
| 143 |
+
$result[$key] = '`' . $val . '`';
|
| 144 |
+
}
|
| 145 |
+
return $result;
|
| 146 |
+
} else {
|
| 147 |
+
return '`' . $a_name . '`';
|
| 148 |
+
}
|
| 149 |
+
} else {
|
| 150 |
+
return $a_name;
|
| 151 |
+
}
|
| 152 |
+
} // function backquote($a_name, $do_it = TRUE)
|
| 153 |
+
|
| 154 |
+
function bkpwp_make_sql($table,$log)
|
| 155 |
+
{
|
| 156 |
+
/*
|
| 157 |
+
Reads the Database table in $table and creates
|
| 158 |
+
SQL Statements for recreating structure and data
|
| 159 |
+
Taken partially from phpMyAdmin and partially from
|
| 160 |
+
Alain Wolf, Zurich - Switzerland
|
| 161 |
+
Website: http://restkultur.ch/personal/wolf/scripts/db_backup/
|
| 162 |
+
*/
|
| 163 |
+
|
| 164 |
+
$sql_statements = "";
|
| 165 |
+
|
| 166 |
+
// Add SQL statement to drop existing table
|
| 167 |
+
$sql_statements .= "\n";
|
| 168 |
+
$sql_statements .= "\n";
|
| 169 |
+
$sql_statements .= "#\n";
|
| 170 |
+
$sql_statements .= "# Delete any existing table " . $this->bkpwp_backquote($table) . "\n";
|
| 171 |
+
$sql_statements .= "#\n";
|
| 172 |
+
$sql_statements .= "\n";
|
| 173 |
+
$sql_statements .= "DROP TABLE IF EXISTS " . $this->bkpwp_backquote($table) . ";\n";
|
| 174 |
+
|
| 175 |
+
// Table structure
|
| 176 |
+
|
| 177 |
+
// Comment in SQL-file
|
| 178 |
+
$sql_statements .= "\n";
|
| 179 |
+
$sql_statements .= "\n";
|
| 180 |
+
$sql_statements .= "#\n";
|
| 181 |
+
$sql_statements .= "# Table structure of table " . $this->bkpwp_backquote($table) . "\n";
|
| 182 |
+
$sql_statements .= "#\n";
|
| 183 |
+
$sql_statements .= "\n";
|
| 184 |
+
|
| 185 |
+
// Get table structure
|
| 186 |
+
$query = "SHOW CREATE TABLE " . $this->bkpwp_backquote($table);
|
| 187 |
+
$result = mysql_query($query, $GLOBALS["db_connect"]);
|
| 188 |
+
if ($result == FALSE) {
|
| 189 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("Error getting table structure of ","bkpwp").$table."! ".mysql_errno() . ": " . mysql_error()." ".$this->bkpwp_logtimestamp();
|
| 190 |
+
$this->bkpwp_write_log($log);
|
| 191 |
+
} else {
|
| 192 |
+
if (mysql_num_rows($result) > 0) {
|
| 193 |
+
$sql_create_arr = mysql_fetch_array($result);
|
| 194 |
+
$sql_statements .= $sql_create_arr[1];
|
| 195 |
+
}
|
| 196 |
+
mysql_free_result($result);
|
| 197 |
+
$sql_statements .= " ;";
|
| 198 |
+
} // ($result == FALSE)
|
| 199 |
+
|
| 200 |
+
// Table data contents
|
| 201 |
+
|
| 202 |
+
// Get table contents
|
| 203 |
+
$query = "SELECT * FROM " . $this->bkpwp_backquote($table);
|
| 204 |
+
$result = mysql_query($query, $GLOBALS["db_connect"]);
|
| 205 |
+
if ($result == FALSE) {
|
| 206 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("Error getting records of ","bkpwp").$table."! ".mysql_errno() . ": " . mysql_error()." ".$this->bkpwp_logtimestamp();
|
| 207 |
+
$this->bkpwp_write_log($log);
|
| 208 |
+
} else {
|
| 209 |
+
$fields_cnt = mysql_num_fields($result);
|
| 210 |
+
$rows_cnt = mysql_num_rows($result);
|
| 211 |
+
} // if ($result == FALSE)
|
| 212 |
+
|
| 213 |
+
// Comment in SQL-file
|
| 214 |
+
$sql_statements .= "\n";
|
| 215 |
+
$sql_statements .= "\n";
|
| 216 |
+
$sql_statements .= "#\n";
|
| 217 |
+
$sql_statements .= "# Data contents of table " . $table . " (" . $rows_cnt . " records)\n";
|
| 218 |
+
$sql_statements .= "#\n";
|
| 219 |
+
|
| 220 |
+
// Checks whether the field is an integer or not
|
| 221 |
+
for ($j = 0; $j < $fields_cnt; $j++) {
|
| 222 |
+
$field_set[$j] = $this->bkpwp_backquote(mysql_field_name($result, $j));
|
| 223 |
+
$type = mysql_field_type($result, $j);
|
| 224 |
+
if ($type == 'tinyint' || $type == 'smallint' || $type == 'mediumint' || $type == 'int' ||
|
| 225 |
+
$type == 'bigint' ||$type == 'timestamp') {
|
| 226 |
+
$field_num[$j] = TRUE;
|
| 227 |
+
} else {
|
| 228 |
+
$field_num[$j] = FALSE;
|
| 229 |
+
}
|
| 230 |
+
} // end for
|
| 231 |
+
|
| 232 |
+
// Sets the scheme
|
| 233 |
+
$entries = 'INSERT INTO ' . $this->bkpwp_backquote($table) . ' VALUES (';
|
| 234 |
+
$search = array("\x00", "\x0a", "\x0d", "\x1a"); //\x08\\x09, not required
|
| 235 |
+
$replace = array('\0', '\n', '\r', '\Z');
|
| 236 |
+
$current_row = 0;
|
| 237 |
+
while ($row = mysql_fetch_row($result)) {
|
| 238 |
+
$current_row++;
|
| 239 |
+
for ($j = 0; $j < $fields_cnt; $j++) {
|
| 240 |
+
if (!isset($row[$j])) {
|
| 241 |
+
$values[] = 'NULL';
|
| 242 |
+
} else if ($row[$j] == '0' || $row[$j] != '') {
|
| 243 |
+
// a number
|
| 244 |
+
if ($field_num[$j]) {
|
| 245 |
+
$values[] = $row[$j];
|
| 246 |
+
}
|
| 247 |
+
else {
|
| 248 |
+
$values[] = "'" . str_replace($search, $replace, $this->bkpwp_sql_addslashes($row[$j])) . "'";
|
| 249 |
+
} //if ($field_num[$j])
|
| 250 |
+
} else {
|
| 251 |
+
$values[] = "''";
|
| 252 |
+
} // if (!isset($row[$j]))
|
| 253 |
+
} // for ($j = 0; $j < $fields_cnt; $j++)
|
| 254 |
+
$sql_statements .= " \n" . $entries . implode(', ', $values) . ') ;';
|
| 255 |
+
unset($values);
|
| 256 |
+
} // while ($row = mysql_fetch_row($result))
|
| 257 |
+
mysql_free_result($result);
|
| 258 |
+
|
| 259 |
+
// Create footer/closing comment in SQL-file
|
| 260 |
+
$sql_statements .= "\n";
|
| 261 |
+
$sql_statements .= "#\n";
|
| 262 |
+
$sql_statements .= "# End of data contents of table " . $table . "\n";
|
| 263 |
+
$sql_statements .= "# --------------------------------------------------------\n";
|
| 264 |
+
$sql_statements .= "\n";
|
| 265 |
+
return $sql_statements;
|
| 266 |
+
} //function make_sql($table)
|
| 267 |
+
|
| 268 |
+
function bkpwp_sql_addslashes($a_string = '', $is_like = FALSE)
|
| 269 |
+
{
|
| 270 |
+
/*
|
| 271 |
+
Better addslashes for SQL queries.
|
| 272 |
+
Taken from phpMyAdmin.
|
| 273 |
+
*/
|
| 274 |
+
if ($is_like) {
|
| 275 |
+
$a_string = str_replace('\\', '\\\\\\\\', $a_string);
|
| 276 |
+
} else {
|
| 277 |
+
$a_string = str_replace('\\', '\\\\', $a_string);
|
| 278 |
+
}
|
| 279 |
+
$a_string = str_replace('\'', '\\\'', $a_string);
|
| 280 |
+
|
| 281 |
+
return $a_string;
|
| 282 |
+
} // function sql_addslashes($a_string = '', $is_like = FALSE)
|
| 283 |
+
|
| 284 |
+
function bkpwp_mysql($path,$log) {
|
| 285 |
+
if (!$GLOBALS['db_connect'] = @mysql_pconnect(DB_HOST, DB_USER, DB_PASSWORD)) {
|
| 286 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("Could not connect to MySQL server! ","bkpwp"). mysql_error()." ".$this->bkpwp_logtimestamp();
|
| 287 |
+
$this->bkpwp_write_log($log);
|
| 288 |
+
}
|
| 289 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("MySQL server connected successfully ","bkpwp")." ".$this->bkpwp_logtimestamp();
|
| 290 |
+
$this->bkpwp_write_log($log);
|
| 291 |
+
mysql_select_db(DB_NAME,$GLOBALS['db_connect']);
|
| 292 |
+
$file_name = "wordpress.sql";
|
| 293 |
+
//Begin new backup of MySql
|
| 294 |
+
$tables = mysql_list_tables(DB_NAME);
|
| 295 |
+
if (!isset($tables) > 0) {
|
| 296 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("Could not select db ","bkpwp").DB_NAME." ".$this->bkpwp_logtimestamp();
|
| 297 |
+
$this->bkpwp_write_log($log);
|
| 298 |
+
}
|
| 299 |
+
$sql_file = "# WordPress : ".get_bloginfo("url")." MySQL database backup\n";
|
| 300 |
+
$sql_file .= "#\n";
|
| 301 |
+
$sql_file .= "# Generated: " . date("l j. F Y H:i T") . "\n";
|
| 302 |
+
$sql_file .= "# Hostname: " . DB_HOST . "\n";
|
| 303 |
+
$sql_file .= "# Database: " . $this->bkpwp_backquote(DB_NAME) . "\n";
|
| 304 |
+
$sql_file .= "# --------------------------------------------------------\n";
|
| 305 |
+
for ($i = 0; $i < mysql_num_rows($tables); $i++) {
|
| 306 |
+
$curr_table = mysql_tablename($tables, $i);
|
| 307 |
+
// Increase script execution time-limit to 15 min for every table.
|
| 308 |
+
if ( !ini_get('safe_mode')) @set_time_limit(15*60);
|
| 309 |
+
// Create the SQL statements
|
| 310 |
+
$sql_file .= "# --------------------------------------------------------\n";
|
| 311 |
+
$sql_file .= "# Table: " . $this->bkpwp_backquote($curr_table) . "\n";
|
| 312 |
+
$sql_file .= "# --------------------------------------------------------\n";
|
| 313 |
+
$sql_file .= $this->bkpwp_make_sql($curr_table,$log);
|
| 314 |
+
}
|
| 315 |
+
$cachefp = fopen($path."/".$file_name, "w");
|
| 316 |
+
fwrite($cachefp, $sql_file);
|
| 317 |
+
if (file_exists($path."/".$file_name)) {
|
| 318 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".$path."/".$file_name." created ".$this->bkpwp_logtimestamp();
|
| 319 |
+
$this->bkpwp_write_log($log);
|
| 320 |
+
return true;
|
| 321 |
+
} else {
|
| 322 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".$path."/".$file_name." could not be created ".$this->bkpwp_logtimestamp();
|
| 323 |
+
$this->bkpwp_write_log($log);
|
| 324 |
+
}
|
| 325 |
+
return false;
|
| 326 |
+
}
|
| 327 |
+
|
| 328 |
+
function bkpwp_calculate($preset) {
|
| 329 |
+
if ($preset['bkpwp_preset_options']['bkpwp_sql_only'] == 1) {
|
| 330 |
+
$ret = "<p>".__("Database Only Backup with this Preset. No Disk Files will be backed up.","bkpwp")."</p>";
|
| 331 |
+
return $ret;
|
| 332 |
+
}
|
| 333 |
+
$options = new BKPWP_OPTIONS();
|
| 334 |
+
clearstatcache(); //get rid of cached filesizes...
|
| 335 |
+
$dir = bkpwp_conform_dir(ABSPATH);
|
| 336 |
+
$options->excludelist = $preset['bkpwp_preset_options']['bkpwp_excludelist'];
|
| 337 |
+
$files = $options->bkpwp_ls($dir);
|
| 338 |
+
$filesize = 0;
|
| 339 |
+
foreach($files as $f) {
|
| 340 |
+
$str = bkpwp_conform_dir($f,true);
|
| 341 |
+
$thisf = filesize($f);
|
| 342 |
+
$filesize = $filesize+$thisf;
|
| 343 |
+
//echo $str.": ".bkpwp_size_readable($thisf)." (".bkpwp_size_readable($filesize).")\\n";
|
| 344 |
+
}
|
| 345 |
+
update_option("bkpwp_calculation",bkpwp_size_readable($filesize));
|
| 346 |
+
$ret = "<p>".__("Your Wordpress files backuped with preset","bkpwp")." <b>".$preset['bkpwp_preset_name']."</b> ".__(" use","bkpwp")." ";
|
| 347 |
+
$ret .= "<b>".bkpwp_size_readable($filesize)."</b> ".__("of disk space.","bkpwp")."<br />";
|
| 348 |
+
$ret .= "".__("Depending on the type of these files, the resulting Backup Archive filesize can be reduced by more than 70%.","bkpwp")."</p>";
|
| 349 |
+
return $ret;
|
| 350 |
+
}
|
| 351 |
+
|
| 352 |
+
function bkpwp_logtimestamp() {
|
| 353 |
+
return date(get_option('date_format'))." ".date("H:i:s");
|
| 354 |
+
}
|
| 355 |
+
|
| 356 |
+
function bkpwp_do_backup($preset) {
|
| 357 |
+
$options = new BKPWP_OPTIONS();
|
| 358 |
+
$log = array();
|
| 359 |
+
// get the desired archive type from preset
|
| 360 |
+
$type = $preset['bkpwp_preset_options']['bkpwp_archive_type'];
|
| 361 |
+
$sqlonly = $preset['bkpwp_preset_options']['bkpwp_sql_only'];
|
| 362 |
+
$options->excludelist = $preset['bkpwp_preset_options']['bkpwp_excludelist'];
|
| 363 |
+
|
| 364 |
+
$datestamp = date("Y-m-d-H-i-s");
|
| 365 |
+
// temporary directory name
|
| 366 |
+
$backup_tmp_dir = get_option("bkpwppath")."/".$datestamp;
|
| 367 |
+
|
| 368 |
+
// filename for the backup archive
|
| 369 |
+
if ($sqlonly == 1) {
|
| 370 |
+
$backup_filename .= "-sql";
|
| 371 |
+
} else {
|
| 372 |
+
$backup_filename .= "-full";
|
| 373 |
+
}
|
| 374 |
+
|
| 375 |
+
$backup_filename .= ".".$type;
|
| 376 |
+
$backup_filename_short = $datestamp.$backup_filename;
|
| 377 |
+
$backup_filename = $backup_tmp_dir.$backup_filename;
|
| 378 |
+
$log['filename'] = $backup_filename_short;
|
| 379 |
+
$log['logfile'] = array();
|
| 380 |
+
$log['preset'] = $preset['bkpwp_preset_name'];
|
| 381 |
+
$log['schedule'] = $preset['bkpwp_schedule'];
|
| 382 |
+
$time_start = microtime(true);
|
| 383 |
+
|
| 384 |
+
// count milliseconds
|
| 385 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("BackUpWordPress starting at","bkpwp")." ".$this->bkpwp_logtimestamp();
|
| 386 |
+
|
| 387 |
+
// create a temporary directory
|
| 388 |
+
if (!is_dir($backup_tmp_dir)) {
|
| 389 |
+
if (!mkdir($backup_tmp_dir)) {
|
| 390 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("BackUpWordPress temporary Directory","bkpwp")." '".$backup_tmp_dir."' ".__("could not be created","bkpwp");
|
| 391 |
+
} else {
|
| 392 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("BackUpWordPress temporary Directory","bkpwp")." '".$backup_tmp_dir."' ".__("created","bkpwp");
|
| 393 |
+
}
|
| 394 |
+
}
|
| 395 |
+
$this->bkpwp_write_log($log);
|
| 396 |
+
if ($sqlonly != 1) {
|
| 397 |
+
// subdirectory of wordpress files
|
| 398 |
+
$wordpress_files = $backup_tmp_dir."/wordpress_files";
|
| 399 |
+
if (!is_dir($wordpress_files)) {
|
| 400 |
+
if (!mkdir($wordpress_files)) {
|
| 401 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("BackUpWordPress temporary Directory","bkpwp")." '".$wordpress_files."' ".__("could not be created","bkpwp");
|
| 402 |
+
} else {
|
| 403 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("BackUpWordPress temporary Directory","bkpwp")." '".$wordpress_files."' ".__("created","bkpwp");
|
| 404 |
+
}
|
| 405 |
+
$this->bkpwp_write_log($log);
|
| 406 |
+
}
|
| 407 |
+
}
|
| 408 |
+
|
| 409 |
+
$db_dump = $this->bkpwp_mysql($backup_tmp_dir,$log);
|
| 410 |
+
|
| 411 |
+
if(!$db_dump) {
|
| 412 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("SQL Dump could not be created.","bkpwp");
|
| 413 |
+
} else {
|
| 414 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("SQL Dump created.","bkpwp");
|
| 415 |
+
}
|
| 416 |
+
$this->bkpwp_write_log($log);
|
| 417 |
+
if ($sqlonly != 1) {
|
| 418 |
+
// create a temporary directory of files to backup
|
| 419 |
+
$dir = bkpwp_conform_dir(ABSPATH);
|
| 420 |
+
$files = $options->bkpwp_ls($dir);
|
| 421 |
+
$files_copied = 0;
|
| 422 |
+
$subdirs_created = 0;
|
| 423 |
+
$i=1; // the sql at least
|
| 424 |
+
foreach ($files as $f) {
|
| 425 |
+
if (is_dir($f)) {
|
| 426 |
+
if (!mkdir($wordpress_files.bkpwp_conform_dir($f, true))) {
|
| 427 |
+
return __("Failed to make directory","bkpwp");
|
| 428 |
+
} else {
|
| 429 |
+
$subdirs_created++;
|
| 430 |
+
}
|
| 431 |
+
} elseif(file_exists($f)) {
|
| 432 |
+
if (!copy($f,$wordpress_files.bkpwp_conform_dir($f, true))) {
|
| 433 |
+
return __("Failed to copy","bkpwp");
|
| 434 |
+
} else {
|
| 435 |
+
$files_copied++;
|
| 436 |
+
}
|
| 437 |
+
}
|
| 438 |
+
$i++;
|
| 439 |
+
}
|
| 440 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".$subdirs_created." ".__("Temporary Subdirectories copied sucessfully","bkpwp");
|
| 441 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".$files_copied." ".__("Temporary Files copied sucessfully","bkpwp");
|
| 442 |
+
}
|
| 443 |
+
// create backup archive file
|
| 444 |
+
$archive_backup = new File_Archive();
|
| 445 |
+
$archive_backup->setOption("tmpDirectory",get_option("bkpwppath"));
|
| 446 |
+
$archive_backup->extract($backup_tmp_dir,File_Archive::toArchive($backup_filename, File_Archive::toFiles()));
|
| 447 |
+
if (!file_exists($backup_filename)) {
|
| 448 |
+
return __("Failed to create backup archive","bkpwp");
|
| 449 |
+
} else {
|
| 450 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("Archive File created/compressed successfully:","bkpwp")." ".$backup_filename;
|
| 451 |
+
}
|
| 452 |
+
|
| 453 |
+
$deleted_files_count = $this->bkpwp_rmdirtree($backup_tmp_dir);
|
| 454 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".count($deleted_files_count)." ".__("Temporary Directories and Files deleted successfully","bkpwp");
|
| 455 |
+
$deleted_oldarchives_count = $this->bkpwp_delete_old();
|
| 456 |
+
if ($deleted_oldarchives_count > 0) {
|
| 457 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".$deleted_oldarchives_count." ".__("Old BackUpWordPress Archives deleted successfully","bkpwp");
|
| 458 |
+
} else {
|
| 459 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("No old BackUpWordPress Archives to delete","bkpwp");
|
| 460 |
+
}
|
| 461 |
+
|
| 462 |
+
|
| 463 |
+
$time_end = microtime(true);
|
| 464 |
+
$time = $time_end - $time_start;
|
| 465 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("BackUpWordPress done at","bkpwp")." ".$this->bkpwp_logtimestamp();
|
| 466 |
+
$log['logfile'][] = $this->bkpwp_logtimestamp().": ".__("BackUpWordPress was running for","bkpwp")." ".round($time,2)." ".__("Seconds","bkpwp");
|
| 467 |
+
|
| 468 |
+
// write the log
|
| 469 |
+
$this->bkpwp_write_log($log);
|
| 470 |
+
$backup = array("file" => $backup_filename,
|
| 471 |
+
"filename" => $backup_filename_short);
|
| 472 |
+
// start the output
|
| 473 |
+
$backuprow = new BKPWP_BACKUP_ARCHIVE();
|
| 474 |
+
ob_start();
|
| 475 |
+
$backuprow->bkpwp_get_backup_row($backup,"new_row");
|
| 476 |
+
$out = ob_get_contents();
|
| 477 |
+
ob_end_clean();
|
| 478 |
+
|
| 479 |
+
// mail it if bkpwp_automail is set
|
| 480 |
+
$bkpwp_automail = get_option("bkpwp_automail");
|
| 481 |
+
$bkpwp_automail_maxsize = get_option("bkpwp_automail_maxsize");
|
| 482 |
+
if (!empty($bkpwp_automail)) {
|
| 483 |
+
$allowed_bytes = $bkpwp_automail_maxsize*1024*1024;
|
| 484 |
+
$logdump = nl2br($this->bkpwp_write_log($log,1));
|
| 485 |
+
$logdump .= $allowed_bytes.":".filesize($backup_filename)." - ".$backup_filename."<br />\n";
|
| 486 |
+
if ($this->is_readable_for_mailout($backup_filename)) {
|
| 487 |
+
$logdump .= "Backup file is readable.<br />\n";
|
| 488 |
+
}
|
| 489 |
+
if ($allowed_bytes >= filesize($backup_filename)) {
|
| 490 |
+
bkpwp_mail_now(base64_encode($backup_filename), $logdump);
|
| 491 |
+
} else {
|
| 492 |
+
bkpwp_mail_now("", $logdump);
|
| 493 |
+
}
|
| 494 |
+
}
|
| 495 |
+
// send autput
|
| 496 |
+
return $out;
|
| 497 |
+
}
|
| 498 |
+
|
| 499 |
+
function is_readable_for_mailout($file,$count=0) {
|
| 500 |
+
if ($count > 24) {
|
| 501 |
+
return false;
|
| 502 |
+
}
|
| 503 |
+
if (!is_readable($file)) {
|
| 504 |
+
$count++;
|
| 505 |
+
sleep(2);
|
| 506 |
+
is_readable_for_mailout($file,$count);
|
| 507 |
+
}
|
| 508 |
+
return true;
|
| 509 |
+
}
|
| 510 |
+
|
| 511 |
+
//Since looks like the Windows ACLs bug "wont fix" (see http://bugs.php.net/bug.php?id=27609)
|
| 512 |
+
function is__writable($path) {
|
| 513 |
+
|
| 514 |
+
if ($path{strlen($path)-1}=='/')
|
| 515 |
+
return $this->is__writable($path.uniqid(mt_rand()).'.tmp');
|
| 516 |
+
|
| 517 |
+
if (file_exists($path)) {
|
| 518 |
+
if (!($f = @fopen($path, 'r+')))
|
| 519 |
+
return false;
|
| 520 |
+
fclose($f);
|
| 521 |
+
return true;
|
| 522 |
+
}
|
| 523 |
+
|
| 524 |
+
if (!($f = @fopen($path, 'w')))
|
| 525 |
+
return false;
|
| 526 |
+
fclose($f);
|
| 527 |
+
unlink($path);
|
| 528 |
+
return true;
|
| 529 |
+
}
|
| 530 |
+
|
| 531 |
+
function bkpwp_write_log($log,$return="") {
|
| 532 |
+
if (!is_array($log)) { return; }
|
| 533 |
+
$logdir = get_option("bkpwppath")."/logs";
|
| 534 |
+
if (!is_dir($logdir)) {
|
| 535 |
+
mkdir($logdir);
|
| 536 |
+
}
|
| 537 |
+
$logname = $logdir."/".$log['filename'].".txt";
|
| 538 |
+
$logfile = "";
|
| 539 |
+
$logfile .= "Preset: ".$log['preset']."\n";
|
| 540 |
+
if (!empty($log['schedule'])) {
|
| 541 |
+
$logfile .= "Schedule: ".$log['schedule']."\n";
|
| 542 |
+
}
|
| 543 |
+
if (is_array($log['logfile'])) {
|
| 544 |
+
foreach($log['logfile'] as $l) {
|
| 545 |
+
if (is_array($l)) { $l = serialize($l);}
|
| 546 |
+
$logfile .= "## ".$l."\n";
|
| 547 |
+
}
|
| 548 |
+
if (!empty($return)) {
|
| 549 |
+
return $logfile;
|
| 550 |
+
}
|
| 551 |
+
// actually write the log
|
| 552 |
+
if ($this->is__writable($logname)) {
|
| 553 |
+
if (!$handle = fopen($logname, "a")) {
|
| 554 |
+
return __("Logfile could not be opened for writing: ","bkpwp").$logname;
|
| 555 |
+
exit;
|
| 556 |
+
}
|
| 557 |
+
if (!fwrite($handle, $logfile)) {
|
| 558 |
+
return __("Logfile not writable: ","bkpwp").$logname;
|
| 559 |
+
exit;
|
| 560 |
+
}
|
| 561 |
+
fclose($handle);
|
| 562 |
+
return true;
|
| 563 |
+
} else {
|
| 564 |
+
return __("Logfile not writable: ","bkpwp").$logname;
|
| 565 |
+
}
|
| 566 |
+
}
|
| 567 |
+
}
|
| 568 |
+
|
| 569 |
+
function bkpwp_rmdirtree($dirname) {
|
| 570 |
+
if (!eregi(bkpwp_conform_dir(ABSPATH),bkpwp_conform_dir($dirname))) {
|
| 571 |
+
return;
|
| 572 |
+
}
|
| 573 |
+
if (is_dir($dirname)) { //Operate on dirs only
|
| 574 |
+
$result=array();
|
| 575 |
+
if (substr($dirname,-1)!='/') {$dirname.='/';} //Append slash if necessary
|
| 576 |
+
$handle = opendir($dirname);
|
| 577 |
+
while (false !== ($file = readdir($handle))) {
|
| 578 |
+
if ($file!='.' && $file!= '..') { //Ignore . and ..
|
| 579 |
+
$path = $dirname.$file;
|
| 580 |
+
if (is_dir($path)) { //Recurse if subdir, Delete if file
|
| 581 |
+
$result=array_merge($result,$this->bkpwp_rmdirtree($path));
|
| 582 |
+
}else{
|
| 583 |
+
unlink($path);
|
| 584 |
+
$result[].=$path;
|
| 585 |
+
}
|
| 586 |
+
}
|
| 587 |
+
}
|
| 588 |
+
closedir($handle);
|
| 589 |
+
rmdir($dirname); //Remove dir
|
| 590 |
+
$result[] .= $dirname;
|
| 591 |
+
return $result; //Return array of deleted items
|
| 592 |
+
} else {
|
| 593 |
+
return false; //Return false if attempting to operate on a file
|
| 594 |
+
}
|
| 595 |
+
}
|
| 596 |
+
|
| 597 |
+
function bkpwp_delete_old() {
|
| 598 |
+
$backups = new BKPWP_MANAGE();
|
| 599 |
+
$unlinkcount = 0;
|
| 600 |
+
$files = $backups->bkpwp_get_backups();
|
| 601 |
+
if (count($files) <= get_option('bkpwp_max_backups')) {
|
| 602 |
+
return;
|
| 603 |
+
} else {
|
| 604 |
+
$i = 1;
|
| 605 |
+
foreach($files as $f) {
|
| 606 |
+
if ($i > get_option('bkpwp_max_backups')) {
|
| 607 |
+
unlink($f['file']);
|
| 608 |
+
$unlinkcount++;
|
| 609 |
+
}
|
| 610 |
+
$i++;
|
| 611 |
+
}
|
| 612 |
+
}
|
| 613 |
+
if ($unlinkcount > 0) {
|
| 614 |
+
return $unlinkcount;
|
| 615 |
+
}
|
| 616 |
+
return false;
|
| 617 |
+
}
|
| 618 |
+
|
| 619 |
+
}
|
| 620 |
+
|
| 621 |
+
class BKPWP_MANAGE {
|
| 622 |
+
|
| 623 |
+
function BKPWP_MANAGE() {
|
| 624 |
+
}
|
| 625 |
+
|
| 626 |
+
function bkpwp_get_presets() {
|
| 627 |
+
$user = $GLOBALS['userdata']->user_login;
|
| 628 |
+
if(empty($user)) { $user = "admin"; }
|
| 629 |
+
$presets = get_option("bkpwp_presets");
|
| 630 |
+
if(!is_array($presets[$user]['bkpwp_presets'])) {
|
| 631 |
+
return array();
|
| 632 |
+
} else {
|
| 633 |
+
return $presets[$user]['bkpwp_presets'];
|
| 634 |
+
}
|
| 635 |
+
}
|
| 636 |
+
|
| 637 |
+
function bkpwp_update_presets($userpresets) {
|
| 638 |
+
$presets = get_option("bkpwp_presets");
|
| 639 |
+
$user = $GLOBALS['userdata']->user_login;
|
| 640 |
+
if(empty($user)) { $user = "admin"; }
|
| 641 |
+
$presets[$user]['bkpwp_presets'] = $userpresets;
|
| 642 |
+
update_option("bkpwp_presets",$presets);
|
| 643 |
+
}
|
| 644 |
+
|
| 645 |
+
function bkpwp_load_preset($preset) {
|
| 646 |
+
$options = new BKPWP_OPTIONS();
|
| 647 |
+
$ret = "<div style=\"border: 1px solid #ccc; padding:10px; margin-bottom:20px;\">";
|
| 648 |
+
/*if ($preset['bkpwp_preset_options']['default'] == 1) {
|
| 649 |
+
$ret .= "<div id=\"message\" class=\"updated fade\"><p>".__("You can not overwrite this default preset. Please save changes with a new Preset Name.","bkpwp")."</p></div>";
|
| 650 |
+
}
|
| 651 |
+
*/
|
| 652 |
+
$ret .= "<h4>Configure or Create Backup Preset</h4><p>";
|
| 653 |
+
$ret .= "<label for=\"mod_bkpwp_preset_name\">".__("Preset Name","bkpwp")." </label>";
|
| 654 |
+
$ret .= "<input type=\"text\" name=\"mod_bkpwp_preset_name\" id=\"mod_bkpwp_preset_name\" value=\"".$preset['bkpwp_preset_name']."\" /></p>";
|
| 655 |
+
|
| 656 |
+
$ret .= "<p><label for=\"mod_bkpwp_archive_type\">".__("Archive Type","bkpwp")." </label><select name=\"mod_bkpwp_archive_type\" id=\"mod_bkpwp_archive_type\">";
|
| 657 |
+
$archive_types = get_option("bkpwp_archive_types");
|
| 658 |
+
if (is_array($archive_types)) {
|
| 659 |
+
foreach ($archive_types as $type) {
|
| 660 |
+
$ret .= "<option value=\"".$type."\" ";
|
| 661 |
+
if ($preset['bkpwp_preset_options']['bkpwp_archive_type'] == $type) {
|
| 662 |
+
$ret .= " selected";
|
| 663 |
+
}
|
| 664 |
+
$ret .= ">".$type."</option>";
|
| 665 |
+
}
|
| 666 |
+
}
|
| 667 |
+
$ret .= "</select></p>";
|
| 668 |
+
|
| 669 |
+
if($preset['bkpwp_preset_options']['bkpwp_sql_only'] == 1) {
|
| 670 |
+
$fullinit = " style=\"display: none;\"";
|
| 671 |
+
}
|
| 672 |
+
$ret .= "<div id=\"full_only\"".$fullinit.">";
|
| 673 |
+
$lists = $options->bkpwp_get_excludelists();
|
| 674 |
+
if (is_array($lists)) {
|
| 675 |
+
$ret .= "<p>".__("Exclude List","bkpwp")." <select name=\"mod_bkpwp_excludelist\" id=\"mod_bkpwp_excludelist\">";
|
| 676 |
+
$ret .= "<option value=\"\">".__("None","bkpwp")."</option>";
|
| 677 |
+
foreach ($lists as $l) {
|
| 678 |
+
$ret .= "<option value=\"".$l['listname']."\" ";
|
| 679 |
+
if ($preset['bkpwp_preset_options']['bkpwp_excludelist'] == $l['listname']) {
|
| 680 |
+
$ret .= " selected";
|
| 681 |
+
}
|
| 682 |
+
$ret .= ">".$l['listname']."</option>";
|
| 683 |
+
}
|
| 684 |
+
$ret .= "</select>";
|
| 685 |
+
$ret .= " <a href=\"admin.php?page=bkpwp-backup-options&excludelistname=".$preset['bkpwp_preset_options']['bkpwp_excludelist']."#excludelist\">".__("Configure","bkpwp")." »</a>";
|
| 686 |
+
$ret .= "</p>";
|
| 687 |
+
}
|
| 688 |
+
$ret .= "</div>";
|
| 689 |
+
|
| 690 |
+
$ret .= "<p><label for=\"mod_bkpwp_sql_only\"><input type=\"checkbox\" name=\"mod_bkpwp_sql_only\" id=\"mod_bkpwp_sql_only\" value=\"1\"";
|
| 691 |
+
if ($preset['bkpwp_preset_options']['bkpwp_sql_only'] == 1) {
|
| 692 |
+
$ret .= " checked";
|
| 693 |
+
}
|
| 694 |
+
$ret .= " onclick=\"if (document.getElementById('mod_bkpwp_sql_only').checked == false) { document.getElementById('mod_bkpwp_sql_only').value=''; document.getElementById('full_only').style.display='block'; } else { document.getElementById('mod_bkpwp_sql_only').value=1; document.getElementById('full_only').style.display='none'; }\" /> ".__("SQL only","bkpwp")."</label></p>";
|
| 695 |
+
$ret .= "<p><input type=\"button\" class=\"button\" value=\"".__("Save Preset","bkpwp")."\" onclick=\"bkpwp_js_loading('".__("Saving Preset","bkpwp")."'); sajax_target_id = 'bkpwp_action_buffer'; save_preset(); sajax_target_id = ''; return false;\" /></p>";
|
| 696 |
+
$ret .= "</div>";
|
| 697 |
+
return $ret;
|
| 698 |
+
}
|
| 699 |
+
|
| 700 |
+
function bkpwp_view_preset($preset) {
|
| 701 |
+
$backup = new BKPWP_BACKUP();
|
| 702 |
+
$options = new BKPWP_OPTIONS();
|
| 703 |
+
$ret = "<div>";
|
| 704 |
+
if (!empty($preset['bkpwp_preset_options']['bkpwp_excludelist'])) {
|
| 705 |
+
$ret .= "<p>".__("Omitted Folders and Files when using","bkpwp")." <b>".$preset['bkpwp_preset_name']."</b></p>";
|
| 706 |
+
$ret .= "<p>";
|
| 707 |
+
$ret .= $options->bkpwp_ajax_shownobfiles($preset['bkpwp_preset_options']['bkpwp_excludelist']);
|
| 708 |
+
$ret .= "</p>";
|
| 709 |
+
}
|
| 710 |
+
$ret .= $backup->bkpwp_calculate($preset);
|
| 711 |
+
$ret .= "</div>";
|
| 712 |
+
return $ret;
|
| 713 |
+
}
|
| 714 |
+
|
| 715 |
+
function bkpwp_delete_preset($name) {
|
| 716 |
+
$apresets = $this->bkpwp_get_presets();
|
| 717 |
+
$presets= array();
|
| 718 |
+
foreach($apresets as $p) {
|
| 719 |
+
if ($p['bkpwp_preset_name'] != $name) {
|
| 720 |
+
$presets[] = $p;
|
| 721 |
+
} else {
|
| 722 |
+
if ($p['bkpwp_preset_options']['default'] == 1) {
|
| 723 |
+
return __("You can not delete this default preset.","bkpwp");
|
| 724 |
+
}
|
| 725 |
+
}
|
| 726 |
+
}
|
| 727 |
+
$this->bkpwp_update_presets($presets);
|
| 728 |
+
return "<div id=\"message\" class=\"updated fade\"><p>".__("Preset deleted.","bkpwp")."</p></div>";
|
| 729 |
+
}
|
| 730 |
+
|
| 731 |
+
function bkpwp_save_preset($name="",$archive_type="",$excludelist="",$sql_only="") {
|
| 732 |
+
if (empty($name)) {
|
| 733 |
+
$name = "Preset".date("Y-m-d-H-i-s");
|
| 734 |
+
}
|
| 735 |
+
$apresets = $this->bkpwp_get_presets();
|
| 736 |
+
$presets= array();
|
| 737 |
+
foreach($apresets as $p) {
|
| 738 |
+
if ($p['bkpwp_preset_name'] != $name) {
|
| 739 |
+
$presets[] = $p;
|
| 740 |
+
} else {
|
| 741 |
+
if ($p['bkpwp_preset_options']['default'] == 1) {
|
| 742 |
+
return "<div id=\"message\" class=\"updated fade\"><p>".__("You can not overwrite this default preset. Please save changes with a new Preset Name.","bkpwp")."</p></div>";
|
| 743 |
+
}
|
| 744 |
+
}
|
| 745 |
+
}
|
| 746 |
+
|
| 747 |
+
$options = array("bkpwp_archive_type" => $archive_type,
|
| 748 |
+
"bkpwp_sql_only" => $sql_only,
|
| 749 |
+
"bkpwp_excludelist" => $excludelist);
|
| 750 |
+
$presets[] = array("bkpwp_preset_name" => $name,
|
| 751 |
+
"bkpwp_preset_options" => $options);
|
| 752 |
+
|
| 753 |
+
$this->bkpwp_update_presets($presets);
|
| 754 |
+
return "<div id=\"message\" class=\"updated fade\"><p>".__("Preset saved.","bkpwp")."</p></div>";
|
| 755 |
+
}
|
| 756 |
+
|
| 757 |
+
function bkpwp_get_preset($name="") {
|
| 758 |
+
if (empty($name)) {
|
| 759 |
+
$name = "full backup";
|
| 760 |
+
}
|
| 761 |
+
$user = $GLOBALS['userdata']->user_login;
|
| 762 |
+
if(empty($user)) { $user = "admin"; }
|
| 763 |
+
$presets = get_option("bkpwp_presets");
|
| 764 |
+
$apresets = $presets[$user]['bkpwp_presets'];
|
| 765 |
+
foreach($apresets as $p) {
|
| 766 |
+
if ($p['bkpwp_preset_name'] == $name) {
|
| 767 |
+
return $p;
|
| 768 |
+
}
|
| 769 |
+
}
|
| 770 |
+
}
|
| 771 |
+
|
| 772 |
+
function bkpwp_max_views() {
|
| 773 |
+
$maxview = get_option('bkpwp_listmax_backups');
|
| 774 |
+
if (!empty($_REQUEST['bkpwp_show_all'])) {
|
| 775 |
+
$maxview = 999;
|
| 776 |
+
}
|
| 777 |
+
return $maxview;
|
| 778 |
+
}
|
| 779 |
+
|
| 780 |
+
function bkpwp_get_backups() {
|
| 781 |
+
$files = array();
|
| 782 |
+
$bkpwppath = get_option("bkpwppath");
|
| 783 |
+
if (!is_writable($bkpwppath)) {
|
| 784 |
+
return;
|
| 785 |
+
}
|
| 786 |
+
$restorefile = $bkpwppath."/bkpwp_restore.sql";
|
| 787 |
+
if (file_exists($restorefile)) {
|
| 788 |
+
unlink($restorefile);
|
| 789 |
+
}
|
| 790 |
+
if ($handle = opendir($bkpwppath)) {
|
| 791 |
+
while (false !== ($file = readdir($handle))) {
|
| 792 |
+
if (($file != ".") && ($file != "..") && !is_dir($bkpwppath."/".$file)) {
|
| 793 |
+
$files[] = array("file" => $bkpwppath."/".$file,
|
| 794 |
+
"filename" => $file);
|
| 795 |
+
}
|
| 796 |
+
}
|
| 797 |
+
closedir($handle);
|
| 798 |
+
}
|
| 799 |
+
if (count($files) < 1) { return; }
|
| 800 |
+
foreach ($files as $key => $row) {
|
| 801 |
+
$filename[$key] = $row['filename'];
|
| 802 |
+
}
|
| 803 |
+
array_multisort($filename, SORT_DESC, $files);
|
| 804 |
+
return $files;
|
| 805 |
+
}
|
| 806 |
+
}
|
| 807 |
+
|
| 808 |
+
|
| 809 |
+
require(ABSPATH."wp-includes/class-phpmailer.php");
|
| 810 |
+
class backupwordpressMailer extends PHPMailer {
|
| 811 |
+
// Set default variables for all new objects
|
| 812 |
+
//var $From = $GLOBALS['userdata']->user_email;
|
| 813 |
+
var $FromName = "BackUpWordPress";
|
| 814 |
+
/*
|
| 815 |
+
var $Host = "";
|
| 816 |
+
var $Username = ''; // SMTP username
|
| 817 |
+
var $Password = ''; // SMTP password
|
| 818 |
+
var $SMTPAuth = true; */
|
| 819 |
+
var $Mailer = "mail";
|
| 820 |
+
var $WordWrap = 75;
|
| 821 |
+
}
|
| 822 |
+
|
| 823 |
+
function bkpwp_mail_now($file="", $bkpwpinfo="") {
|
| 824 |
+
ob_start();
|
| 825 |
+
include_once($GLOBALS['bkpwp_plugin_path']."bkpwp-pages/bkpwp_footer.php");
|
| 826 |
+
$text_html = ob_get_contents();
|
| 827 |
+
ob_end_clean();
|
| 828 |
+
|
| 829 |
+
ob_start();
|
| 830 |
+
include_once($GLOBALS['bkpwp_plugin_path']."bkpwp-pages/bkpwp_mail_footer.php");
|
| 831 |
+
$text_plain = ob_get_contents();
|
| 832 |
+
ob_end_clean();
|
| 833 |
+
|
| 834 |
+
// Instantiate your new class
|
| 835 |
+
$mail = new backupwordpressMailer;
|
| 836 |
+
$mail->IsHTML(true);
|
| 837 |
+
|
| 838 |
+
// Now you only need to add the necessary stuff
|
| 839 |
+
|
| 840 |
+
$email = get_option("bkpwp_automail_address");
|
| 841 |
+
$name = get_option("bkpwp_automail_receiver");
|
| 842 |
+
|
| 843 |
+
$mail->AddAddress($email, $name);
|
| 844 |
+
$mail->From = $email;
|
| 845 |
+
$mail->FromName = __("BackUpWordPress","bkpwp")." ".get_bloginfo("url");
|
| 846 |
+
$mail->Subject = __("BackUpWordPress","bkpwp")." ".get_bloginfo("url");
|
| 847 |
+
$mail->Body = "<html><body>";
|
| 848 |
+
$mail->Body .= __("Your requested Backup","bkpwp");
|
| 849 |
+
if (empty($file)) {
|
| 850 |
+
$mail->Body .= __("This Backup exceeded","bkpwp")." ".get_option("bkpwp_automail_maxsize")." ".__("MB (megabytes)","bkpwp")."<br /><br />\n\n";
|
| 851 |
+
$mail->Body .= __("Please download it from your WordPress administration backend.","bkpwp")."<br /><br />\n\n";
|
| 852 |
+
}
|
| 853 |
+
|
| 854 |
+
$mail->Body .= $bkpwpinfo;
|
| 855 |
+
$mail->Body .= $text_html;
|
| 856 |
+
$mail->Body .= "</body></html>";
|
| 857 |
+
$mail->AltBody = strip_tags($text_plain);
|
| 858 |
+
|
| 859 |
+
if (!empty($file)) {
|
| 860 |
+
$mail->AddAttachment(base64_decode($file)); // optional name
|
| 861 |
+
}
|
| 862 |
+
|
| 863 |
+
if(!$mail->Send()){
|
| 864 |
+
echo $mail->ErrorInfo;
|
| 865 |
+
return false;
|
| 866 |
+
} else {
|
| 867 |
+
return true;
|
| 868 |
+
}
|
| 869 |
+
}
|
| 870 |
+
?>
|
options.php
ADDED
|
@@ -0,0 +1,449 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class BKPWP_OPTIONS {
|
| 4 |
+
|
| 5 |
+
var $bkpwp_default_backup_path = '/wp-content/backup';
|
| 6 |
+
|
| 7 |
+
function BKPWP_OPTIONS() {
|
| 8 |
+
}
|
| 9 |
+
|
| 10 |
+
function bkpwp_easy_mode() {
|
| 11 |
+
$easy_mode = get_option("bkpwp_easy_mode");
|
| 12 |
+
$user = $GLOBALS['userdata']->user_login;
|
| 13 |
+
if(empty($user)) { $user = "admin"; }
|
| 14 |
+
if ($easy_mode[$user] == 1) {
|
| 15 |
+
return true;
|
| 16 |
+
} else {
|
| 17 |
+
return false;
|
| 18 |
+
}
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
function bkpwp_handle_modeswitch() {
|
| 22 |
+
if (!empty($_REQUEST['bkpwp_modeswitch'])) {
|
| 23 |
+
$user = $GLOBALS['userdata']->user_login;
|
| 24 |
+
if(empty($user)) { $user = "admin"; }
|
| 25 |
+
if (!$this->bkpwp_easy_mode()) {
|
| 26 |
+
$easy_mode[$user] = 1;
|
| 27 |
+
} else {
|
| 28 |
+
$easy_mode[$user] = "";
|
| 29 |
+
}
|
| 30 |
+
|
| 31 |
+
update_option("bkpwp_easy_mode",$easy_mode);
|
| 32 |
+
}
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
function bkpwp_path() {
|
| 36 |
+
return get_option("bkpwppath");
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
function bkpwp_options_edit() {
|
| 40 |
+
if (!current_user_can('manage bkpwp')) {
|
| 41 |
+
return false;
|
| 42 |
+
}
|
| 43 |
+
return true;
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
function bkpwp_delete_option($option) {
|
| 47 |
+
delete_option($option);
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
function bkpwp_update_option($name,$value) {
|
| 51 |
+
update_option($name,$value);
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
function bkpwp_handle_backup_path($suppress_msg=0) {
|
| 55 |
+
if (!$this->bkpwp_options_edit()) {
|
| 56 |
+
bkpwp_display_message(__("You do not have sufficent privileges to do Full Backups.","bkpwp"));
|
| 57 |
+
return;
|
| 58 |
+
}
|
| 59 |
+
if (!empty($_REQUEST['bkpwppath'])) {
|
| 60 |
+
if ($this->bkpwp_easy_mode()){
|
| 61 |
+
$_REQUEST['bkpwppath'] = bkpwp_conform_dir(ABSPATH).$_REQUEST['bkpwppath'];
|
| 62 |
+
}
|
| 63 |
+
if (!eregi(bkpwp_conform_dir(ABSPATH),$_REQUEST['bkpwppath'])) {
|
| 64 |
+
delete_option("bkpwppath");
|
| 65 |
+
$msg = __("Path is not within your webroot. Please specify a writable directory inside ","bkpwp").bkpwp_conform_dir(ABSPATH).".";
|
| 66 |
+
bkpwp_display_message($msg);
|
| 67 |
+
} else {
|
| 68 |
+
if (!is_dir($_REQUEST['bkpwppath'])) {
|
| 69 |
+
if (!mkdir($_REQUEST['bkpwppath'])) {
|
| 70 |
+
$this->bkpwp_delete_option("bkpwppath");
|
| 71 |
+
$msg = __("Wrong Backup Path. Directory does not exist and this script was not able to create it.","bkpwp");
|
| 72 |
+
bkpwp_display_message($msg);
|
| 73 |
+
} else {
|
| 74 |
+
$this->bkpwp_update_option("bkpwppath",$_REQUEST['bkpwppath']);
|
| 75 |
+
$msg = __("Directory did not exist but this script was able to create it.","bkpwp");
|
| 76 |
+
bkpwp_display_message($msg);
|
| 77 |
+
}
|
| 78 |
+
} elseif (!is_writable($_REQUEST['bkpwppath'])) {
|
| 79 |
+
$this->bkpwp_delete_option("bkpwppath");
|
| 80 |
+
$msg = __("Directory does exist but is not writable by the webserver. Check directory permissions (e.g.: chmod 777).","bkpwp");
|
| 81 |
+
bkpwp_display_message($msg);
|
| 82 |
+
} else {
|
| 83 |
+
$this->bkpwp_update_option("bkpwppath",$_REQUEST['bkpwppath']);
|
| 84 |
+
bkpwp_display_message(__("Backup Path saved.","bkpwp")." <a href=\"admin.php?page=".$_REQUEST['page']."\">".__("Continue","bkpwp")." »</a>");
|
| 85 |
+
|
| 86 |
+
}
|
| 87 |
+
}
|
| 88 |
+
}
|
| 89 |
+
if (!is_writable($this->bkpwp_path()) && empty($_REQUEST['bkpwppath'])) {
|
| 90 |
+
$msg = __("Please configure the Backup path first. The field below should allready be filled with a recommendation for that option.","bkpwp");
|
| 91 |
+
if ($suppress_msg == 0) {
|
| 92 |
+
bkpwp_display_message($msg);
|
| 93 |
+
}
|
| 94 |
+
}
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
function bkpwp_check_path() {
|
| 98 |
+
if (!$this->bkpwp_easy_mode()){
|
| 99 |
+
echo $this->bkpwp_path();
|
| 100 |
+
} else {
|
| 101 |
+
if (!is_writable($this->bkpwp_path())) {
|
| 102 |
+
echo $this->bkpwp_default_backup_path;
|
| 103 |
+
} else {
|
| 104 |
+
echo eregi_replace(bkpwp_conform_dir(ABSPATH),"",$this->bkpwp_path());
|
| 105 |
+
}
|
| 106 |
+
}
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
function bkpwp_handle_backup_settings() {
|
| 110 |
+
if (!empty($_REQUEST['bkpwp_backup_options'])) {
|
| 111 |
+
$this->bkpwp_update_option("bkpwp_max_backups",$_REQUEST['bkpwp_max_backups']);
|
| 112 |
+
bkpwp_display_message(__("Settings saved.","bkpwp"));
|
| 113 |
+
}
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
function bkpwp_handle_backup_automail() {
|
| 117 |
+
if (!empty($_REQUEST['bkpwp_automailsettings'])) {
|
| 118 |
+
if (!empty($_REQUEST['bkpwp_automail'])) {
|
| 119 |
+
$this->bkpwp_update_option("bkpwp_automail",$_REQUEST['bkpwp_automail']);
|
| 120 |
+
$this->bkpwp_update_option("bkpwp_automail_address",$GLOBALS['userdata']->user_email);
|
| 121 |
+
$this->bkpwp_update_option("bkpwp_automail_receiver",$GLOBALS['userdata']->user_nicename);
|
| 122 |
+
if (!empty($_REQUEST['bkpwp_automail_maxsize'])) {
|
| 123 |
+
$this->bkpwp_update_option("bkpwp_automail_maxsize",$_REQUEST['bkpwp_automail_maxsize']);
|
| 124 |
+
}
|
| 125 |
+
bkpwp_display_message(__("Settings saved.","bkpwp"));
|
| 126 |
+
} else {
|
| 127 |
+
$this->bkpwp_delete_option("bkpwp_automail_maxsize");
|
| 128 |
+
$this->bkpwp_delete_option("bkpwp_automail_address");
|
| 129 |
+
$this->bkpwp_delete_option("bkpwp_automail_receiver");
|
| 130 |
+
$this->bkpwp_delete_option("bkpwp_automail");
|
| 131 |
+
}
|
| 132 |
+
}
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
+
function bkpwp_handle_backup_excludelists() {
|
| 136 |
+
if (!empty($_REQUEST['nobackup']) && !empty($_REQUEST['excludelist'])) {
|
| 137 |
+
$this->bkpwp_excludelist();
|
| 138 |
+
bkpwp_display_message(__("New Backup Exclude List saved:","bkpwp")." ".$_REQUEST['excludelistname']);
|
| 139 |
+
} elseif (!empty($_REQUEST['nobackupchange']) && !empty($_REQUEST['excludelist'])) {
|
| 140 |
+
$this->bkpwp_excludelist();
|
| 141 |
+
bkpwp_display_message(__("Backup Exclude List saved:","bkpwp")." ".$_REQUEST['excludelistname']);
|
| 142 |
+
} elseif (!empty($_REQUEST['nobackupdelete']) && !empty($_REQUEST['excludelist'])) {
|
| 143 |
+
$this->bkpwp_delete_excludelist($_REQUEST['excludelistname']);
|
| 144 |
+
bkpwp_display_message(__("Backup Exclude List deleted:","bkpwp")." ".$_REQUEST['excludelistname']);
|
| 145 |
+
}
|
| 146 |
+
}
|
| 147 |
+
|
| 148 |
+
function bkpwp_ls_exclusions($dir,$files=array()) {
|
| 149 |
+
$d = opendir($dir);
|
| 150 |
+
while ($file = readdir($d)) {
|
| 151 |
+
if ($file == '.' || $file == '..') { continue; }
|
| 152 |
+
$getfile = $this->bkpwp_match_excludelist($dir,$file);
|
| 153 |
+
if (!empty($getfile)) {
|
| 154 |
+
$files[] = $getfile;
|
| 155 |
+
}
|
| 156 |
+
if (is_dir($dir.'/'.$file)) {
|
| 157 |
+
if (!empty($getfile)) {
|
| 158 |
+
continue;
|
| 159 |
+
}
|
| 160 |
+
$files = $this->bkpwp_ls_exclusions($dir.'/'.$file, $files);
|
| 161 |
+
}
|
| 162 |
+
}
|
| 163 |
+
return $files;
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
+
function bkpwp_ajax_shownobfiles($listname,$dir="") {
|
| 167 |
+
if (empty($dir)) {
|
| 168 |
+
$dir = bkpwp_conform_dir(ABSPATH);
|
| 169 |
+
}
|
| 170 |
+
$this->excludelist = urldecode($listname);
|
| 171 |
+
$ret = "";
|
| 172 |
+
$files = $this->bkpwp_ls_exclusions($dir);
|
| 173 |
+
$stringmatches = array();
|
| 174 |
+
|
| 175 |
+
|
| 176 |
+
$ret .= "<p>";
|
| 177 |
+
$ret .= __("Folders","bkpwp")."<br />";
|
| 178 |
+
foreach($files as $f) {
|
| 179 |
+
if (is_dir($f['file'])) {
|
| 180 |
+
$ret .= "<b>".$f['file']."</b>: ".__("matched by","bkpwp")." ".$f['match']." -> ".$f['value']."<br />";
|
| 181 |
+
} else {
|
| 182 |
+
if ($f['match'] == "string") {
|
| 183 |
+
$t = $f['value'];
|
| 184 |
+
$stringmatches[$t]++;
|
| 185 |
+
}
|
| 186 |
+
}
|
| 187 |
+
}
|
| 188 |
+
$ret .= "</p>";
|
| 189 |
+
|
| 190 |
+
if (count($stringmatches) > 0) {
|
| 191 |
+
$ret .= "<p>";
|
| 192 |
+
$ret .= __("Files","bkpwp")."<br />";
|
| 193 |
+
foreach($stringmatches as $s=>$t) {
|
| 194 |
+
$ret .= "<b>".$t."</b> ".__("files matched by","bkpwp")." ".$s."<br />";
|
| 195 |
+
}
|
| 196 |
+
$ret .= "</p>";
|
| 197 |
+
}
|
| 198 |
+
|
| 199 |
+
return $ret;
|
| 200 |
+
}
|
| 201 |
+
|
| 202 |
+
function bkpwp_ls($dir,$files=array()) {
|
| 203 |
+
$d = opendir($dir);
|
| 204 |
+
$j=0;
|
| 205 |
+
while ($file = readdir($d)) {
|
| 206 |
+
if ($file == '.' || $file == '..') { continue; }
|
| 207 |
+
$getfile = $this->bkpwp_match_excludelist($dir,$file);
|
| 208 |
+
if (!empty($getfile)) {
|
| 209 |
+
continue;
|
| 210 |
+
}
|
| 211 |
+
$files[] = $dir.'/'.$file;
|
| 212 |
+
if (is_dir($dir.'/'.$file)) {
|
| 213 |
+
if (!empty($getfile)) {
|
| 214 |
+
continue;
|
| 215 |
+
}
|
| 216 |
+
$files = $this->bkpwp_ls($dir.'/'.$file,$files); $j++;
|
| 217 |
+
}
|
| 218 |
+
}
|
| 219 |
+
return $files;
|
| 220 |
+
}
|
| 221 |
+
|
| 222 |
+
function bkpwp_match_excludelist($dir,$file) {
|
| 223 |
+
$nobfiles = $this->bkpwp_get_excludelist($this->excludelist);
|
| 224 |
+
$nobfiles['list'][] = get_option("bkpwppath");
|
| 225 |
+
if (is_array($nobfiles['list'])) {
|
| 226 |
+
foreach($nobfiles['list'] as $n) {
|
| 227 |
+
if (empty($n)) { continue; }
|
| 228 |
+
$ifpath = str_replace("\\","/",$n);
|
| 229 |
+
$absolutefilepath = str_replace("\\","/",$dir.'/'.$file);
|
| 230 |
+
$relativefilepath = str_replace(ABSPATH,"",$absolutefilepath);
|
| 231 |
+
if (($ifpath == $absolutefilepath) || ($ifpath == $relativefilepath)) {
|
| 232 |
+
return array('file' => $dir.'/'.$file, 'match' => 'path', 'value' => $n);
|
| 233 |
+
} elseif (!strpos("/",$ifpath) && stristr($file,$n)) {
|
| 234 |
+
return array('file' => $dir.'/'.$file, 'match' => 'string', 'value' => $n);
|
| 235 |
+
}
|
| 236 |
+
}
|
| 237 |
+
}
|
| 238 |
+
return false;
|
| 239 |
+
}
|
| 240 |
+
|
| 241 |
+
function bkpwp_get_excludelists() {
|
| 242 |
+
$allnobs = get_option("bkpwp_excludelists");
|
| 243 |
+
$user = $GLOBALS['userdata']->user_login;
|
| 244 |
+
if(empty($user)) { $user = "admin"; }
|
| 245 |
+
return $allnobs[$user];
|
| 246 |
+
}
|
| 247 |
+
|
| 248 |
+
function bkpwp_get_excludelist($listname) {
|
| 249 |
+
$usernoblists = $this->bkpwp_get_excludelists();
|
| 250 |
+
foreach($usernoblists as $f) {
|
| 251 |
+
if ($f['listname'] == $listname) {
|
| 252 |
+
return $f;
|
| 253 |
+
}
|
| 254 |
+
}
|
| 255 |
+
}
|
| 256 |
+
|
| 257 |
+
function bkpwp_excludelist_tochange() {
|
| 258 |
+
if (!empty($_REQUEST['excludelist_to_change'])) {
|
| 259 |
+
return $this->bkpwp_get_excludelist($_REQUEST['excludelist_to_change']);
|
| 260 |
+
}
|
| 261 |
+
|
| 262 |
+
if (!empty($_REQUEST['excludelistname'])) {
|
| 263 |
+
return $this->bkpwp_get_excludelist($_REQUEST['excludelistname']);
|
| 264 |
+
}
|
| 265 |
+
}
|
| 266 |
+
|
| 267 |
+
function bkpwp_delete_excludelist($listname) {
|
| 268 |
+
$allnobst = get_option("bkpwp_excludelists");
|
| 269 |
+
$user = $GLOBALS['userdata']->user_login;
|
| 270 |
+
if(empty($user)) { $user = "admin"; }
|
| 271 |
+
$allnobs = array();
|
| 272 |
+
if (!is_array($allnobst[$user])) {
|
| 273 |
+
$allnobst[$user] = array();
|
| 274 |
+
}
|
| 275 |
+
foreach ($allnobst[$user] as $a) {
|
| 276 |
+
if ($a['listname'] != $listname) {
|
| 277 |
+
$allnobs[$user][] = $a;
|
| 278 |
+
}
|
| 279 |
+
}
|
| 280 |
+
|
| 281 |
+
update_option("bkpwp_excludelists",$allnobs);
|
| 282 |
+
}
|
| 283 |
+
|
| 284 |
+
function bkpwp_save_excludelist($list,$listname,$listtype) {
|
| 285 |
+
$allnobst = get_option("bkpwp_excludelists");
|
| 286 |
+
$user = $GLOBALS['userdata']->user_login;
|
| 287 |
+
if(empty($user)) { $user = "admin"; }
|
| 288 |
+
$allnobs = array();
|
| 289 |
+
if (!is_array($allnobst[$user])) {
|
| 290 |
+
$allnobst[$user] = array();
|
| 291 |
+
}
|
| 292 |
+
foreach ($allnobst[$user] as $a) {
|
| 293 |
+
if ($a['listname'] != $listname) {
|
| 294 |
+
$allnobs[$user][] = $a;
|
| 295 |
+
}
|
| 296 |
+
}
|
| 297 |
+
$allnobs[$user][] = array("listname" => $listname,
|
| 298 |
+
"listtype" => $listtype,
|
| 299 |
+
"list" => $list);
|
| 300 |
+
|
| 301 |
+
update_option("bkpwp_excludelists",$allnobs);
|
| 302 |
+
}
|
| 303 |
+
|
| 304 |
+
function bkpwp_excludelist($excludelist="",$excludelistname="",$excludelisttype="") {
|
| 305 |
+
$list = array();
|
| 306 |
+
$list[] = $this->bkpwp_path();
|
| 307 |
+
if (!empty($_REQUEST['excludelist'])) {
|
| 308 |
+
$excludelist = $_REQUEST['excludelist'];
|
| 309 |
+
}
|
| 310 |
+
foreach($excludelist as $r) {
|
| 311 |
+
if (eregi(",",$r)) {
|
| 312 |
+
$re=explode(",",$r);
|
| 313 |
+
foreach($re as $e) {
|
| 314 |
+
if (!empty($e)) {
|
| 315 |
+
$list[] = $e;
|
| 316 |
+
}
|
| 317 |
+
}
|
| 318 |
+
} else {
|
| 319 |
+
if (!empty($r)) {
|
| 320 |
+
$list[] = $r;
|
| 321 |
+
}
|
| 322 |
+
}
|
| 323 |
+
}
|
| 324 |
+
$list = array_unique($list);
|
| 325 |
+
if (!empty($_REQUEST['excludelistname'])) {
|
| 326 |
+
$excludelistname = $_REQUEST['excludelistname'];
|
| 327 |
+
}
|
| 328 |
+
if (empty($excludelistname)) {
|
| 329 |
+
$excludelistname = "excl_".date("Y-m-d-H-i-s");
|
| 330 |
+
}
|
| 331 |
+
$this->bkpwp_save_excludelist($list,$excludelistname,$excludelisttype);
|
| 332 |
+
}
|
| 333 |
+
|
| 334 |
+
function bkpwp_check_compression_type($archive_types_wishlist) {
|
| 335 |
+
$a = array();
|
| 336 |
+
foreach($archive_types_wishlist as $at) {
|
| 337 |
+
if (function_exists($at['func']) || empty($at['func'])) {
|
| 338 |
+
$a[] = $at['ext'];
|
| 339 |
+
}
|
| 340 |
+
}
|
| 341 |
+
return $a;
|
| 342 |
+
}
|
| 343 |
+
|
| 344 |
+
function bkpwp_default_archive_types() {
|
| 345 |
+
// a wishlist of compression types
|
| 346 |
+
$archive_types_wishlist = array();
|
| 347 |
+
$archive_types_wishlist[] = array("ext" => "zip", "func" => ""); // pear package file_archive's own
|
| 348 |
+
$archive_types_wishlist[] = array("ext" => "tgz", "func" => "gzopen");
|
| 349 |
+
$archive_types_wishlist[] = array("ext" => "tar.gz", "func" => "gzopen");
|
| 350 |
+
$archive_types_wishlist[] = array("ext" => "tar", "func" => ""); // pear package file_archive's own
|
| 351 |
+
$archive_types_wishlist[] = array("ext" => "tar.bz2", "func" => "bzopen");
|
| 352 |
+
|
| 353 |
+
// run a check if the respective compression is supported by this php installation
|
| 354 |
+
$archive_types = $this->bkpwp_check_compression_type($archive_types_wishlist);
|
| 355 |
+
update_option("bkpwp_archive_types",$archive_types);
|
| 356 |
+
}
|
| 357 |
+
|
| 358 |
+
function bkpwp_get_backup_type($f) {
|
| 359 |
+
$ex = explode(".",$f);
|
| 360 |
+
$ex = explode("-",$ex[0]);
|
| 361 |
+
$type = $ex[6];
|
| 362 |
+
if (eregi("_adv",$type)) {
|
| 363 |
+
$type = eregi_replace("_adv","",$type);
|
| 364 |
+
$type .= " - advanced";
|
| 365 |
+
}
|
| 366 |
+
return $type;
|
| 367 |
+
}
|
| 368 |
+
|
| 369 |
+
function bkpwp_default_excludelists() {
|
| 370 |
+
$defaults = new BKPWP_OPTIONS();
|
| 371 |
+
$presetso = new BKPWP_MANAGE();
|
| 372 |
+
// Excludelists Defaults
|
| 373 |
+
$excludelist[] = ".tmp,~,.bak,#";
|
| 374 |
+
$excludelistname = "temporary and autosave files";
|
| 375 |
+
$excludelisttype = "default";
|
| 376 |
+
$defaults->bkpwp_excludelist($excludelist,$excludelistname,$excludelisttype);
|
| 377 |
+
}
|
| 378 |
+
|
| 379 |
+
function bkpwp_default_presets() {
|
| 380 |
+
// Preset defaults
|
| 381 |
+
// is set for the current user.
|
| 382 |
+
//update_option("bkpwp_presets","");
|
| 383 |
+
$presetso = new BKPWP_MANAGE();
|
| 384 |
+
$presets = $presetso->bkpwp_get_presets();
|
| 385 |
+
if (count($presets) < 1) {
|
| 386 |
+
$presets = array();
|
| 387 |
+
// full backup
|
| 388 |
+
$options = array("bkpwp_archive_type" => 'tar.gz',
|
| 389 |
+
"default" => 1,
|
| 390 |
+
"bkpwp_excludelist" => $excludelistname);
|
| 391 |
+
$presets[] = array("bkpwp_preset_name" => "full backup",
|
| 392 |
+
"bkpwp_preset_options" => $options);
|
| 393 |
+
// sql only
|
| 394 |
+
$options = array("bkpwp_sql_only" => 1,
|
| 395 |
+
"bkpwp_archive_type" => 'tar.gz',
|
| 396 |
+
"default" => 1);
|
| 397 |
+
$presets[] = array("bkpwp_preset_name" => "sql only",
|
| 398 |
+
"bkpwp_preset_options" => $options);
|
| 399 |
+
$presetso->bkpwp_update_presets($presets);
|
| 400 |
+
}
|
| 401 |
+
}
|
| 402 |
+
|
| 403 |
+
function bkpwp_default_schedules() {
|
| 404 |
+
|
| 405 |
+
// scheduling defaults
|
| 406 |
+
$schedules = get_option("bkpwp_schedules");
|
| 407 |
+
if (!is_array($schedules)) {
|
| 408 |
+
$schedules = array();
|
| 409 |
+
$schedules[] = array("preset" => "full backup",
|
| 410 |
+
"status" => "inactive",
|
| 411 |
+
"reccurrence" => 'bkpwp_weekly',
|
| 412 |
+
"info" => __("Full Backup Weekly","bkpwp"),
|
| 413 |
+
"default" => 1,
|
| 414 |
+
"created" => date("Y-m-d-H-i-s"));
|
| 415 |
+
sleep(2);
|
| 416 |
+
$schedules[] = array("preset" => "sql only",
|
| 417 |
+
"status" => "inactive",
|
| 418 |
+
"reccurrence" => 'bkpwp_daily',
|
| 419 |
+
"info" => __("SQL Only Backup Daily","bkpwp"),
|
| 420 |
+
"default" => 1,
|
| 421 |
+
"created" => date("Y-m-d-H-i-s"));
|
| 422 |
+
update_option("bkpwp_schedules",$schedules);
|
| 423 |
+
}
|
| 424 |
+
}
|
| 425 |
+
|
| 426 |
+
function bkpwp_set_defaults() {
|
| 427 |
+
// set a few options
|
| 428 |
+
update_option('bkpwp_listmax_backups',15);
|
| 429 |
+
update_option('bkpwp_max_backups',10);
|
| 430 |
+
update_option("bkpwp_domain","bkpwp");
|
| 431 |
+
update_option("bkpwp_domain_path","wp-content/plugins/bkpwp/locale");
|
| 432 |
+
|
| 433 |
+
$user = $GLOBALS['userdata']->user_login;
|
| 434 |
+
if(empty($user)) { $user = "admin"; }
|
| 435 |
+
if (!$this->bkpwp_easy_mode()) {
|
| 436 |
+
$easy_mode[$user] = 1;
|
| 437 |
+
} else {
|
| 438 |
+
$easy_mode[$user] = "";
|
| 439 |
+
}
|
| 440 |
+
|
| 441 |
+
update_option("bkpwp_easy_mode",$easy_mode);
|
| 442 |
+
|
| 443 |
+
$this->bkpwp_default_archive_types();
|
| 444 |
+
$this->bkpwp_default_excludelists();
|
| 445 |
+
$this->bkpwp_default_presets();
|
| 446 |
+
$this->bkpwp_default_schedules();
|
| 447 |
+
}
|
| 448 |
+
}
|
| 449 |
+
?>
|
schedule.php
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class BKPWP_SCHEDULE {
|
| 4 |
+
|
| 5 |
+
function BKPWP_SCHEDULE() {
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
function bkpwp_get_options_by_created($created) {
|
| 9 |
+
$schedules = get_option("bkpwp_schedules");
|
| 10 |
+
if (is_array($schedules)) {
|
| 11 |
+
foreach($schedules as $s) {
|
| 12 |
+
if ($s['created'] == $created) {
|
| 13 |
+
return $s;
|
| 14 |
+
}
|
| 15 |
+
}
|
| 16 |
+
}
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
function bkpwp_update_schedule($options) {
|
| 20 |
+
$schedules = get_option("bkpwp_schedules");
|
| 21 |
+
$newschedules = array();
|
| 22 |
+
foreach($schedules as $s) {
|
| 23 |
+
if ($s['created'] == $options['created']) {
|
| 24 |
+
$s = $options;
|
| 25 |
+
}
|
| 26 |
+
$newschedules = $s;
|
| 27 |
+
}
|
| 28 |
+
update_option("bkpwp_schedules",$newschedules);
|
| 29 |
+
}
|
| 30 |
+
|
| 31 |
+
function bkpwp_delete_schedule_by_created($created) {
|
| 32 |
+
$schedules = get_option("bkpwp_schedules");
|
| 33 |
+
$newschedules = array();
|
| 34 |
+
foreach($schedules as $s) {
|
| 35 |
+
if ($s['created'] == $created) {
|
| 36 |
+
$timestamp = wp_next_scheduled("bkpwp_schedule_bkpwp_hook",$s);
|
| 37 |
+
if(!empty($timestamp)) {
|
| 38 |
+
wp_unschedule_event($timestamp,"bkpwp_schedule_bkpwp_hook",$s);
|
| 39 |
+
}
|
| 40 |
+
$ret = 1;
|
| 41 |
+
} else {
|
| 42 |
+
$newschedules[] = $s;
|
| 43 |
+
}
|
| 44 |
+
}
|
| 45 |
+
update_option("bkpwp_schedules",$newschedules);
|
| 46 |
+
if (empty($ret)) { return false; }
|
| 47 |
+
return $ret;
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
function bkpwp_unset_schedules() {
|
| 52 |
+
$crons = get_option("cron");
|
| 53 |
+
if (is_array($crons)) {
|
| 54 |
+
foreach($crons as $timestamp => $cron) {
|
| 55 |
+
if (!is_array($cron)) { continue; }
|
| 56 |
+
foreach($cron as $hook => $options) {
|
| 57 |
+
if($hook == "bkpwp_schedule_bkpwp_hook") {
|
| 58 |
+
foreach ($options as $key=>$value) {
|
| 59 |
+
wp_unschedule_event($timestamp,$hook,$value['args']);
|
| 60 |
+
}
|
| 61 |
+
}
|
| 62 |
+
}
|
| 63 |
+
}
|
| 64 |
+
}
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
function bkpwp_toggle_schedule($created) {
|
| 69 |
+
$schedules = get_option("bkpwp_schedules");
|
| 70 |
+
$newschedules = array();
|
| 71 |
+
$bkpwp_reccurrences = get_option("bkpwp_reccurrences");
|
| 72 |
+
foreach($schedules as $s) {
|
| 73 |
+
if ($s['created'] == $created) {
|
| 74 |
+
if ($s['status'] == "active") {
|
| 75 |
+
$timestamp = wp_next_scheduled("bkpwp_schedule_bkpwp_hook",$s);
|
| 76 |
+
if(!empty($timestamp)) {
|
| 77 |
+
wp_unschedule_event($timestamp,"bkpwp_schedule_bkpwp_hook",$s);
|
| 78 |
+
$s['status'] = "inactive";
|
| 79 |
+
$ret = "inactive";
|
| 80 |
+
} else {
|
| 81 |
+
return false;
|
| 82 |
+
}
|
| 83 |
+
} else {
|
| 84 |
+
$recc = $s['reccurrence'];
|
| 85 |
+
$s['status'] = "active";
|
| 86 |
+
wp_schedule_event(time()+$bkpwp_reccurrences[$recc]['interval'], $s['reccurrence'], 'bkpwp_schedule_bkpwp_hook',$s);
|
| 87 |
+
$ret = "active";
|
| 88 |
+
}
|
| 89 |
+
}
|
| 90 |
+
$newschedules[] = $s;
|
| 91 |
+
}
|
| 92 |
+
update_option("bkpwp_schedules",$newschedules);
|
| 93 |
+
if (empty($ret)) { return false; }
|
| 94 |
+
return $ret;
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
function bkpwp_test_schedule() {
|
| 98 |
+
$schedules = get_option("bkpwp_schedules");
|
| 99 |
+
$test = array("preset" => "sql only",
|
| 100 |
+
"status" => "active",
|
| 101 |
+
"reccurrence" => '',
|
| 102 |
+
"info" => __("Test schedule running in 30 seconds","bkpwp"),
|
| 103 |
+
"default" => '',
|
| 104 |
+
"created" => date("Y-m-d-H-i-s"));
|
| 105 |
+
$schedules[] = $test;
|
| 106 |
+
if (!wp_next_scheduled('bkpwp_schedule_bkpwp_hook', $test)) {
|
| 107 |
+
//wp_schedule_single_event(time()+30, 'bkpwp_schedule_bkpwp_hook', $test);
|
| 108 |
+
wp_schedule_event(time()+30, 'bkpwp_30secs', 'bkpwp_schedule_bkpwp_hook',$test);
|
| 109 |
+
update_option("bkpwp_schedules",$schedules);
|
| 110 |
+
return true;
|
| 111 |
+
} else {
|
| 112 |
+
return false;
|
| 113 |
+
}
|
| 114 |
+
}
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
?>
|
