Version Description
- use ftp_row for login and other commands
- Add option to send only email on erros
- Internal struckture changes
- Add option to diesable WP-Cron and use Hoster cron
- bug fixes
Download this release
Release Info
Developer | danielhuesken |
Plugin | BackWPup – WordPress Backup Plugin |
Version | 0.6.3 |
Comparing to | |
See all releases |
Code changes from version 0.6.2 to 0.6.3
- app/dojob/after.php +8 -9
- app/dojob/bevore.php +22 -20
- app/dojob/check.php +7 -7
- app/dojob/db.php +20 -20
- app/dojob/destination-ftp.php +62 -29
- app/dojob/destination-mail.php +17 -11
- app/dojob/file.php +17 -17
- app/dojob/optimize.php +5 -5
- app/functions.php +44 -107
- app/options-edit.php +15 -14
- app/options-logs.php +2 -2
- app/options-runnow.php +1 -1
- app/options-save.php +134 -105
- app/options-settings.php +11 -1
- app/options.php +1 -1
- backwpup.php +6 -7
- readme.txt +9 -2
app/dojob/after.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?PHP
|
2 |
//Delete old Logs/Backupfiles
|
3 |
if (!empty($jobs[$jobid]['maxbackups'])) {
|
4 |
-
|
5 |
$counter=0;$countdelbackups=0;$countdellogs=0;
|
6 |
$result=mysql_query("SELECT * FROM ".$wpdb->backwpup_logs." ORDER BY logtime DESC");
|
7 |
while ($logs = mysql_fetch_assoc($result)) {
|
@@ -17,20 +17,20 @@ if (!empty($jobs[$jobid]['maxbackups'])) {
|
|
17 |
}
|
18 |
}
|
19 |
if ($countdelbackups>0)
|
20 |
-
|
21 |
if ($countdellogs>0)
|
22 |
-
|
23 |
}
|
24 |
|
25 |
if (is_file($backupfile)) {
|
26 |
-
|
27 |
}
|
28 |
|
29 |
-
if (is_file(
|
30 |
-
unlink(
|
31 |
}
|
32 |
|
33 |
-
if (empty($jobs[$jobid]['backupdir']) and (dirname($backupfile)!=
|
34 |
unlink($backupfile);
|
35 |
unset($backupfile);
|
36 |
}
|
@@ -41,8 +41,7 @@ $jobs[$jobid]['lastrun']=$jobs[$jobid]['starttime'];
|
|
41 |
$jobs[$jobid]['lastruntime']=$jobs[$jobid]['stoptime']-$jobs[$jobid]['starttime'];
|
42 |
$jobs[$jobid]['scheduletime']=wp_next_scheduled('backwpup_cron',array('jobid'=>$jobid));
|
43 |
update_option('backwpup_jobs',$jobs); //Save Settings
|
44 |
-
|
45 |
//Write backupfile und worktime to log
|
46 |
$wpdb->update( $wpdb->backwpup_logs, array( 'worktime' => $jobs[$jobid]['lastruntime'], 'backupfile' => mysql_real_escape_string($backupfile)), array( 'logtime' => $logtime ));
|
47 |
-
ob_end_flush();
|
48 |
?>
|
1 |
<?PHP
|
2 |
//Delete old Logs/Backupfiles
|
3 |
if (!empty($jobs[$jobid]['maxbackups'])) {
|
4 |
+
backwpup_joblog($logtime,__('Delete old backup files...','backwpup'));
|
5 |
$counter=0;$countdelbackups=0;$countdellogs=0;
|
6 |
$result=mysql_query("SELECT * FROM ".$wpdb->backwpup_logs." ORDER BY logtime DESC");
|
7 |
while ($logs = mysql_fetch_assoc($result)) {
|
17 |
}
|
18 |
}
|
19 |
if ($countdelbackups>0)
|
20 |
+
backwpup_joblog($logtime,$countdelbackups.' '.__('old backup files deleted!!!','backwpup'));
|
21 |
if ($countdellogs>0)
|
22 |
+
backwpup_joblog($logtime,$countdellogs.' '.__('old logs deleted!!!','backwpup'));
|
23 |
}
|
24 |
|
25 |
if (is_file($backupfile)) {
|
26 |
+
backwpup_joblog($logtime,sprintf(__('Backup zip filesize is %1s','backwpup'),backwpup_formatBytes(filesize($backupfile))));
|
27 |
}
|
28 |
|
29 |
+
if (is_file(get_temp_dir().'backwpup/'.DB_NAME.'.sql') ) { //delete sql temp file
|
30 |
+
unlink(get_temp_dir().'backwpup/'.DB_NAME.'.sql');
|
31 |
}
|
32 |
|
33 |
+
if (empty($jobs[$jobid]['backupdir']) and (dirname($backupfile)!=get_temp_dir().'backwpup') and is_file($backupfile) ) { //delete backup file in temp dir
|
34 |
unlink($backupfile);
|
35 |
unset($backupfile);
|
36 |
}
|
41 |
$jobs[$jobid]['lastruntime']=$jobs[$jobid]['stoptime']-$jobs[$jobid]['starttime'];
|
42 |
$jobs[$jobid]['scheduletime']=wp_next_scheduled('backwpup_cron',array('jobid'=>$jobid));
|
43 |
update_option('backwpup_jobs',$jobs); //Save Settings
|
44 |
+
backwpup_joblog($logtime,sprintf(__('Backup Excution time %1s sec.','backwpup'),$jobs[$jobid]['lastruntime']));
|
45 |
//Write backupfile und worktime to log
|
46 |
$wpdb->update( $wpdb->backwpup_logs, array( 'worktime' => $jobs[$jobid]['lastruntime'], 'backupfile' => mysql_real_escape_string($backupfile)), array( 'logtime' => $logtime ));
|
|
|
47 |
?>
|
app/dojob/bevore.php
CHANGED
@@ -1,10 +1,12 @@
|
|
1 |
<?php
|
2 |
global $logtime;
|
3 |
ignore_user_abort(true);
|
|
|
4 |
ob_start();
|
5 |
-
|
|
|
6 |
|
7 |
-
define( 'PCLZIP_TEMPORARY_DIR',
|
8 |
$cfg=get_option('backwpup');
|
9 |
$jobs=get_option('backwpup_jobs');
|
10 |
$logtime=time();
|
@@ -16,7 +18,7 @@ if ($jobs[$jobid]['type']=='FILE' or $jobs[$jobid]['type']=='DB+FILE' or $jobs[$
|
|
16 |
if (!empty($jobs[$jobid]['backupdir'])) {
|
17 |
$backupfile=$jobs[$jobid]['backupdir'].'/backwpup_'.$jobid.'_'.date('Y-m-d_H-i-s',$jobs[$jobid]['starttime']).'.zip';
|
18 |
} else {
|
19 |
-
$backupfile=
|
20 |
}
|
21 |
} else {
|
22 |
$backupfile='';
|
@@ -31,43 +33,43 @@ $wpdb->insert( $wpdb->backwpup_logs, array( 'logtime' => $logtime, 'jobid' => $j
|
|
31 |
|
32 |
|
33 |
if (!ini_get('safe_mode') or strtolower(ini_get('safe_mode'))=='off' or ini_get('safe_mode')=='0') {
|
34 |
-
if (empty($cfg['maxexecutiontime']))
|
35 |
$cfg['maxexecutiontime']=300;
|
36 |
set_time_limit($cfg['maxexecutiontime']); //300 is most webserver time limit.
|
37 |
} else {
|
38 |
-
|
39 |
}
|
40 |
|
41 |
if (!function_exists('memory_get_usage')) {
|
42 |
-
if (empty($cfg['memorylimit']))
|
43 |
$cfg['memorylimit']='128M';
|
44 |
ini_set('memory_limit', $cfg['memorylimit']);
|
45 |
-
|
46 |
}
|
47 |
|
48 |
//Look for and Crate Temp dir and secure
|
49 |
-
|
50 |
|
51 |
-
if (!is_dir(
|
52 |
-
if (!mkdir(
|
53 |
-
|
54 |
require_once('after.php');
|
55 |
return false;
|
56 |
}
|
57 |
}
|
58 |
-
if (!is_writeable(
|
59 |
-
|
60 |
require_once('after.php');
|
61 |
return false;
|
62 |
}
|
63 |
-
if (!is_file(
|
64 |
-
if($file = @fopen(
|
65 |
fwrite($file, "Order allow,deny\ndeny from all");
|
66 |
fclose($file);
|
67 |
}
|
68 |
}
|
69 |
-
if (!is_file(
|
70 |
-
if($file = @fopen(
|
71 |
fwrite($file,"\n");
|
72 |
fclose($file);
|
73 |
}
|
@@ -78,13 +80,13 @@ if (!empty($backupfile)) {
|
|
78 |
//Look for and Crate Backup dir and secure
|
79 |
if (!is_dir($jobs[$jobid]['backupdir'])) {
|
80 |
if (!mkdir($jobs[$jobid]['backupdir'],0777,true)) {
|
81 |
-
|
82 |
require_once('after.php');
|
83 |
return false;
|
84 |
}
|
85 |
}
|
86 |
if (!is_writeable($jobs[$jobid]['backupdir'])) {
|
87 |
-
|
88 |
require_once('after.php');
|
89 |
return false;
|
90 |
}
|
@@ -100,7 +102,7 @@ if (!empty($backupfile)) {
|
|
100 |
fclose($file);
|
101 |
}
|
102 |
}
|
103 |
-
|
104 |
}
|
105 |
|
106 |
|
1 |
<?php
|
2 |
global $logtime;
|
3 |
ignore_user_abort(true);
|
4 |
+
// flush any buffers and send the headers
|
5 |
ob_start();
|
6 |
+
while (@ob_end_flush());
|
7 |
+
flush();
|
8 |
|
9 |
+
define( 'PCLZIP_TEMPORARY_DIR', get_temp_dir().'backwpup/' );
|
10 |
$cfg=get_option('backwpup');
|
11 |
$jobs=get_option('backwpup_jobs');
|
12 |
$logtime=time();
|
18 |
if (!empty($jobs[$jobid]['backupdir'])) {
|
19 |
$backupfile=$jobs[$jobid]['backupdir'].'/backwpup_'.$jobid.'_'.date('Y-m-d_H-i-s',$jobs[$jobid]['starttime']).'.zip';
|
20 |
} else {
|
21 |
+
$backupfile=get_temp_dir().'backwpup/backwpup_'.$jobid.'_'.date('Y-m-d_H-i-s',$jobs[$jobid]['starttime']).'.zip';
|
22 |
}
|
23 |
} else {
|
24 |
$backupfile='';
|
33 |
|
34 |
|
35 |
if (!ini_get('safe_mode') or strtolower(ini_get('safe_mode'))=='off' or ini_get('safe_mode')=='0') {
|
36 |
+
if (empty($cfg['maxexecutiontime']))
|
37 |
$cfg['maxexecutiontime']=300;
|
38 |
set_time_limit($cfg['maxexecutiontime']); //300 is most webserver time limit.
|
39 |
} else {
|
40 |
+
backwpup_joblog($logtime,__('WARNING:','backwpup').' '.sprintf(__('PHP Safe Mode is on!!! Max exec time is %1$s sec.','backwpup'),ini_get('max_execution_time')));
|
41 |
}
|
42 |
|
43 |
if (!function_exists('memory_get_usage')) {
|
44 |
+
if (empty($cfg['memorylimit']))
|
45 |
$cfg['memorylimit']='128M';
|
46 |
ini_set('memory_limit', $cfg['memorylimit']);
|
47 |
+
backwpup_joblog($logtime,__('WARNING:','backwpup').' '.sprintf(__('Memory limit set to %1$s ,beause can not use PHP: memory_get_usage() function.','backwpup'),ini_get('memory_limit')));
|
48 |
}
|
49 |
|
50 |
//Look for and Crate Temp dir and secure
|
51 |
+
backwpup_joblog($logtime,sprintf(__('Temp dir is %1$s.','backwpup'),get_temp_dir().'backwpup'));
|
52 |
|
53 |
+
if (!is_dir(get_temp_dir().'backwpup')) {
|
54 |
+
if (!mkdir(get_temp_dir().'backwpup',0777,true)) {
|
55 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Can not create Temp dir','backwpup'));
|
56 |
require_once('after.php');
|
57 |
return false;
|
58 |
}
|
59 |
}
|
60 |
+
if (!is_writeable(get_temp_dir().'backwpup')) {
|
61 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Can not write to Temp dir','backwpup'));
|
62 |
require_once('after.php');
|
63 |
return false;
|
64 |
}
|
65 |
+
if (!is_file(get_temp_dir().'backwpup/.htaccess')) {
|
66 |
+
if($file = @fopen(get_temp_dir().'backwpup/.htaccess', 'w')) {
|
67 |
fwrite($file, "Order allow,deny\ndeny from all");
|
68 |
fclose($file);
|
69 |
}
|
70 |
}
|
71 |
+
if (!is_file(get_temp_dir().'backwpup/index.html')) {
|
72 |
+
if($file = @fopen(get_temp_dir().'backwpup/index.html', 'w')) {
|
73 |
fwrite($file,"\n");
|
74 |
fclose($file);
|
75 |
}
|
80 |
//Look for and Crate Backup dir and secure
|
81 |
if (!is_dir($jobs[$jobid]['backupdir'])) {
|
82 |
if (!mkdir($jobs[$jobid]['backupdir'],0777,true)) {
|
83 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Can not create Backup dir','backwpup'));
|
84 |
require_once('after.php');
|
85 |
return false;
|
86 |
}
|
87 |
}
|
88 |
if (!is_writeable($jobs[$jobid]['backupdir'])) {
|
89 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Can not write to Backup dir','backwpup'));
|
90 |
require_once('after.php');
|
91 |
return false;
|
92 |
}
|
102 |
fclose($file);
|
103 |
}
|
104 |
}
|
105 |
+
backwpup_joblog($logtime,__('Backup zip file save to:','backwpup').' '.$backupfile);
|
106 |
}
|
107 |
|
108 |
|
app/dojob/check.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?PHP
|
2 |
//Optimize SQL Table
|
3 |
-
|
4 |
$tables=$wpdb->get_col('SHOW TABLES FROM `'.DB_NAME.'`');
|
5 |
|
6 |
if (is_array($jobs[$jobid]['dbexclude'])) {
|
@@ -14,20 +14,20 @@ if (sizeof($tables)>0) {
|
|
14 |
foreach ($tables as $table) {
|
15 |
if (!in_array($table,(array)$jobs[$jobid]['dbexclude'])) {
|
16 |
$check=$wpdb->get_row('CHECK TABLE `'.$table.'` MEDIUM', ARRAY_A);
|
17 |
-
|
18 |
if ($sqlerr=mysql_error($wpdb->dbh))
|
19 |
-
|
20 |
if ($check['Msg_type']=='error') {
|
21 |
$repair=$wpdb->get_row('REPAIR TABLE `'.$table.'`', ARRAY_A);
|
22 |
-
|
23 |
if ($sqlerr=mysql_error($wpdb->dbh))
|
24 |
-
|
25 |
}
|
26 |
}
|
27 |
}
|
28 |
$wpdb->flush();
|
29 |
-
|
30 |
} else {
|
31 |
-
|
32 |
}
|
33 |
?>
|
1 |
<?PHP
|
2 |
//Optimize SQL Table
|
3 |
+
backwpup_joblog($logtime,__('Run Database check...','backwpup'));
|
4 |
$tables=$wpdb->get_col('SHOW TABLES FROM `'.DB_NAME.'`');
|
5 |
|
6 |
if (is_array($jobs[$jobid]['dbexclude'])) {
|
14 |
foreach ($tables as $table) {
|
15 |
if (!in_array($table,(array)$jobs[$jobid]['dbexclude'])) {
|
16 |
$check=$wpdb->get_row('CHECK TABLE `'.$table.'` MEDIUM', ARRAY_A);
|
17 |
+
backwpup_joblog($logtime,__(strtoupper($check['Msg_type']).':','backwpup').' '.sprintf(__('Result of table check for %1$s is: %2$s','backwpup'), $table, $check['Msg_text']));
|
18 |
if ($sqlerr=mysql_error($wpdb->dbh))
|
19 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.sprintf(__('BackWPup database error %1$s for query %2$s','backwpup'), $sqlerr, $sqlerr->last_query));
|
20 |
if ($check['Msg_type']=='error') {
|
21 |
$repair=$wpdb->get_row('REPAIR TABLE `'.$table.'`', ARRAY_A);
|
22 |
+
backwpup_joblog($logtime,__(strtoupper($repair['Msg_type']).':','backwpup').' '.sprintf(__('Result of table repair for %1$s is: %2$s ','backwpup'), $table, $repair['Msg_text']));
|
23 |
if ($sqlerr=mysql_error($wpdb->dbh))
|
24 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.sprintf(__('BackWPup database error %1$s for query %2$s','backwpup'), $sqlerr, $sqlerr->last_query));
|
25 |
}
|
26 |
}
|
27 |
}
|
28 |
$wpdb->flush();
|
29 |
+
backwpup_joblog($logtime,__('Database check done!','backwpup'));
|
30 |
} else {
|
31 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('No Tables to check','backwpup'));
|
32 |
}
|
33 |
?>
|
app/dojob/db.php
CHANGED
@@ -1,7 +1,8 @@
|
|
1 |
<?PHP
|
2 |
-
|
3 |
|
4 |
-
|
|
|
5 |
global $wpdb,$logtime;
|
6 |
$table = str_replace("�", "��", $table); //esc table name
|
7 |
|
@@ -16,7 +17,7 @@ function dump_table($table,$status,$file) {
|
|
16 |
//Dump the table structure
|
17 |
$result=mysql_query("SHOW CREATE TABLE `".$table."`");
|
18 |
if ($sqlerr=mysql_error($wpdb->dbh)) {
|
19 |
-
|
20 |
return false;
|
21 |
}
|
22 |
$tablestruc=mysql_fetch_assoc($result);
|
@@ -26,7 +27,7 @@ function dump_table($table,$status,$file) {
|
|
26 |
//take data of table
|
27 |
$result=mysql_query("SELECT * FROM `".$table."`");
|
28 |
if ($sqlerr=mysql_error($wpdb->dbh)) {
|
29 |
-
|
30 |
return false;
|
31 |
}
|
32 |
|
@@ -60,7 +61,6 @@ function dump_table($table,$status,$file) {
|
|
60 |
}
|
61 |
|
62 |
|
63 |
-
|
64 |
//Tables to backup
|
65 |
$tables=$wpdb->get_col('SHOW TABLES FROM `'.DB_NAME.'`');
|
66 |
$jobs[$jobid]['dbexclude'][]=$wpdb->backwpup_logs; //Exclude log table
|
@@ -74,12 +74,12 @@ if (is_array($jobs[$jobid]['dbexclude'])) {
|
|
74 |
if (sizeof($tables)>0) {
|
75 |
$result=$wpdb->get_results("SHOW TABLE STATUS FROM `".DB_NAME."`;", ARRAY_A); //get table status
|
76 |
if ($sqlerr=mysql_error($wpdb->dbh))
|
77 |
-
|
78 |
foreach($result as $statusdata) {
|
79 |
$status[$statusdata['Name']]=$statusdata;
|
80 |
}
|
81 |
|
82 |
-
if ($file = @fopen(
|
83 |
fwrite($file, "-- ---------------------------------------------------------\n");
|
84 |
fwrite($file, "-- Dump with BackWPup ver.: ".BACKWPUP_VERSION."\n");
|
85 |
fwrite($file, "-- Plugin for WordPress by Daniel Huesken\n");
|
@@ -106,9 +106,9 @@ if (sizeof($tables)>0) {
|
|
106 |
fwrite($file, "/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n");
|
107 |
//make table dumps
|
108 |
foreach($tables as $table) {
|
109 |
-
|
110 |
-
|
111 |
-
fwrite($file,
|
112 |
}
|
113 |
//for better import with mysql client
|
114 |
fwrite($file, "\n");
|
@@ -122,25 +122,25 @@ if (sizeof($tables)>0) {
|
|
122 |
fwrite($file, "/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n");
|
123 |
fclose($file);
|
124 |
} else {
|
125 |
-
|
126 |
}
|
127 |
} else {
|
128 |
-
|
129 |
}
|
130 |
|
131 |
|
132 |
-
|
133 |
|
134 |
-
if ($jobs[$jobid]['type']=='DB' and is_file(
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
$zipbackupfile = new PclZip($backupfile);
|
139 |
-
if (0==$zipbackupfile -> create(
|
140 |
-
|
141 |
$joberror=true;
|
142 |
}
|
143 |
-
|
144 |
}
|
145 |
//clean vars
|
146 |
unset($tables);
|
1 |
<?PHP
|
2 |
+
backwpup_joblog($logtime,__('Run Database Backup...','backwpup'));
|
3 |
|
4 |
+
|
5 |
+
function backwpup_dump_table($table,$status,$file) {
|
6 |
global $wpdb,$logtime;
|
7 |
$table = str_replace("�", "��", $table); //esc table name
|
8 |
|
17 |
//Dump the table structure
|
18 |
$result=mysql_query("SHOW CREATE TABLE `".$table."`");
|
19 |
if ($sqlerr=mysql_error($wpdb->dbh)) {
|
20 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.sprintf(__('BackWPup database error %1$s for query %2$s','backwpup'), $sqlerr, $sqlerr->last_query));
|
21 |
return false;
|
22 |
}
|
23 |
$tablestruc=mysql_fetch_assoc($result);
|
27 |
//take data of table
|
28 |
$result=mysql_query("SELECT * FROM `".$table."`");
|
29 |
if ($sqlerr=mysql_error($wpdb->dbh)) {
|
30 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.sprintf(__('BackWPup database error %1$s for query %2$s','backwpup'), $sqlerr, $sqlerr->last_query));
|
31 |
return false;
|
32 |
}
|
33 |
|
61 |
}
|
62 |
|
63 |
|
|
|
64 |
//Tables to backup
|
65 |
$tables=$wpdb->get_col('SHOW TABLES FROM `'.DB_NAME.'`');
|
66 |
$jobs[$jobid]['dbexclude'][]=$wpdb->backwpup_logs; //Exclude log table
|
74 |
if (sizeof($tables)>0) {
|
75 |
$result=$wpdb->get_results("SHOW TABLE STATUS FROM `".DB_NAME."`;", ARRAY_A); //get table status
|
76 |
if ($sqlerr=mysql_error($wpdb->dbh))
|
77 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.sprintf(__('BackWPup database error %1$s for query %2$s','backwpup'), $sqlerr, $sqlerr->last_query));
|
78 |
foreach($result as $statusdata) {
|
79 |
$status[$statusdata['Name']]=$statusdata;
|
80 |
}
|
81 |
|
82 |
+
if ($file = @fopen(get_temp_dir().'backwpup/'.DB_NAME.'.sql', 'w')) {
|
83 |
fwrite($file, "-- ---------------------------------------------------------\n");
|
84 |
fwrite($file, "-- Dump with BackWPup ver.: ".BACKWPUP_VERSION."\n");
|
85 |
fwrite($file, "-- Plugin for WordPress by Daniel Huesken\n");
|
106 |
fwrite($file, "/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n");
|
107 |
//make table dumps
|
108 |
foreach($tables as $table) {
|
109 |
+
backwpup_joblog($logtime,__('Database table to Backup: ','backwpup').' '.$table);
|
110 |
+
backwpup_needfreememory(($status[$table]['Data_length']+$status[$table]['Index_length'])*1.3); //get mor memory if needed
|
111 |
+
fwrite($file, backwpup_dump_table($table,$status[$table],$file));
|
112 |
}
|
113 |
//for better import with mysql client
|
114 |
fwrite($file, "\n");
|
122 |
fwrite($file, "/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n");
|
123 |
fclose($file);
|
124 |
} else {
|
125 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Can not create Database Backup file','backwpup'));
|
126 |
}
|
127 |
} else {
|
128 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('No Tables to Backup','backwpup'));
|
129 |
}
|
130 |
|
131 |
|
132 |
+
backwpup_joblog($logtime,__('Database backup done!','backwpup'));
|
133 |
|
134 |
+
if ($jobs[$jobid]['type']=='DB' and is_file(get_temp_dir().'backwpup/'.DB_NAME.'.sql')) {
|
135 |
+
backwpup_needfreememory(8388608); //8MB free memory for zip
|
136 |
+
backwpup_joblog($logtime,__('Database file size:','backwpup').' '.backwpup_formatBytes(filesize(get_temp_dir().'backwpup/'.DB_NAME.'.sql')));
|
137 |
+
backwpup_joblog($logtime,__('Create Zip file from dump...','backwpup'));
|
138 |
$zipbackupfile = new PclZip($backupfile);
|
139 |
+
if (0==$zipbackupfile -> create(get_temp_dir().'backwpup/'.DB_NAME.'.sql',PCLZIP_OPT_REMOVE_ALL_PATH,PCLZIP_OPT_ADD_TEMP_FILE_ON)) {
|
140 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Database Zip file create:','backwpup').' '.$zipbackupfile->errorInfo(true));
|
141 |
$joberror=true;
|
142 |
}
|
143 |
+
backwpup_joblog($logtime,__('Zip file created...','backwpup'));
|
144 |
}
|
145 |
//clean vars
|
146 |
unset($tables);
|
app/dojob/destination-ftp.php
CHANGED
@@ -1,5 +1,35 @@
|
|
1 |
<?php
|
2 |
if (!empty($jobs[$jobid]['ftphost']) and !empty($jobs[$jobid]['ftpuser']) and !empty($jobs[$jobid]['ftppass'])) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
$ftpport=21;
|
4 |
$ftphost=$jobs[$jobid]['ftphost'];
|
5 |
if (false !== strpos($jobs[$jobid]['ftphost'],':')) //look for port
|
@@ -8,37 +38,40 @@ if (!empty($jobs[$jobid]['ftphost']) and !empty($jobs[$jobid]['ftpuser']) and !e
|
|
8 |
if (function_exists('ftp_ssl_connect')) { //make SSL FTP connection
|
9 |
$ftp_conn_id = ftp_ssl_connect($ftphost,$ftpport);
|
10 |
if ($ftp_conn_id) {
|
11 |
-
|
12 |
$type = ftp_systype($ftp_conn_id);
|
13 |
}
|
14 |
}
|
15 |
if (!$type) { //make normal FTP conection if SSL not work
|
16 |
$ftp_conn_id = ftp_connect($ftphost,$ftpport);
|
17 |
if ($ftp_conn_id) {
|
18 |
-
|
19 |
$type = ftp_systype($ftp_conn_id);
|
20 |
}
|
21 |
}
|
22 |
|
23 |
if ($type) {
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
37 |
|
38 |
if (ftp_put($ftp_conn_id, trailingslashit($jobs[$jobid]['ftpdir']).basename($backupfile), $backupfile, FTP_BINARY)) //transvere file
|
39 |
-
|
40 |
else
|
41 |
-
|
42 |
|
43 |
if ($jobs[$jobid]['ftpmaxbackups']>0) { //Delete old backups
|
44 |
if ($filelist=ftp_nlist($ftp_conn_id, trailingslashit($jobs[$jobid]['ftpdir']))) {
|
@@ -46,24 +79,24 @@ if (!empty($jobs[$jobid]['ftphost']) and !empty($jobs[$jobid]['ftpuser']) and !e
|
|
46 |
if (!in_array(basename($files),array('.','..')) and false !== strpos(basename($files),'backwpup_'.$jobid.'_'))
|
47 |
$backupfilelist[]=basename($files);
|
48 |
}
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
|
|
53 |
$numdeltefiles++;
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
56 |
}
|
57 |
-
if ($numdeltefiles>0)
|
58 |
-
BackWPupFunctions::joblog($logtime,$numdeltefiles.' '.__('files deleted on FTP Server:','backwpup'));
|
59 |
}
|
60 |
}
|
61 |
-
}
|
62 |
-
BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not login to FTP server with user:','backwpup').' '.$jobs[$jobid]['ftpuser']);
|
63 |
-
}
|
64 |
ftp_close($ftp_conn_id);
|
65 |
} else {
|
66 |
-
|
67 |
}
|
68 |
}
|
69 |
?>
|
1 |
<?php
|
2 |
if (!empty($jobs[$jobid]['ftphost']) and !empty($jobs[$jobid]['ftpuser']) and !empty($jobs[$jobid]['ftppass'])) {
|
3 |
+
|
4 |
+
function ftp_raw_helper($ftp_conn_id,$command) { //FTP Comands helper function
|
5 |
+
$return=ftp_raw($ftp_conn_id,$command);
|
6 |
+
if (strtoupper(substr(trim($command),0,4))=="PASS") {
|
7 |
+
backwpup_joblog($logtime,__('FTP Client command:','backwpup').' PASS *******');
|
8 |
+
} else {
|
9 |
+
backwpup_joblog($logtime,__('FTP Client command:','backwpup').' '.$command);
|
10 |
+
}
|
11 |
+
foreach ($return as $returnline) {
|
12 |
+
$code=substr(trim($returnline),0,3);
|
13 |
+
if ($code>=100 and $code<200) {
|
14 |
+
backwpup_joblog($logtime,__('FTP Server Preliminary reply:','backwpup').' '.$returnline);
|
15 |
+
return true;
|
16 |
+
} elseif ($code>=200 and $code<300) {
|
17 |
+
backwpup_joblog($logtime,__('FTP Server Completion reply:','backwpup').' '.$returnline);
|
18 |
+
return true;
|
19 |
+
} elseif ($code>=300 and $code<400) {
|
20 |
+
backwpup_joblog($logtime,__('FTP Server Intermediate reply:','backwpup').' '.$returnline);
|
21 |
+
return true;
|
22 |
+
} elseif ($code>=400) {
|
23 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('FTP Server reply:','backwpup').' '.$returnline);
|
24 |
+
return false;
|
25 |
+
} else {
|
26 |
+
backwpup_joblog($logtime,__('FTP Server answer:','backwpup').' '.$returnline);
|
27 |
+
return $return;
|
28 |
+
}
|
29 |
+
}
|
30 |
+
}
|
31 |
+
|
32 |
+
|
33 |
$ftpport=21;
|
34 |
$ftphost=$jobs[$jobid]['ftphost'];
|
35 |
if (false !== strpos($jobs[$jobid]['ftphost'],':')) //look for port
|
38 |
if (function_exists('ftp_ssl_connect')) { //make SSL FTP connection
|
39 |
$ftp_conn_id = ftp_ssl_connect($ftphost,$ftpport);
|
40 |
if ($ftp_conn_id) {
|
41 |
+
backwpup_joblog($logtime,__('Connected by SSL to FTP server:','backwpup').' '.$jobs[$jobid]['ftphost']);
|
42 |
$type = ftp_systype($ftp_conn_id);
|
43 |
}
|
44 |
}
|
45 |
if (!$type) { //make normal FTP conection if SSL not work
|
46 |
$ftp_conn_id = ftp_connect($ftphost,$ftpport);
|
47 |
if ($ftp_conn_id) {
|
48 |
+
backwpup_joblog($logtime,__('Connected insecure to FTP server:','backwpup').' '.$jobs[$jobid]['ftphost']);
|
49 |
$type = ftp_systype($ftp_conn_id);
|
50 |
}
|
51 |
}
|
52 |
|
53 |
if ($type) {
|
54 |
+
backwpup_joblog($logtime,__('FTP server System is:','backwpup').' '.$type);
|
55 |
+
|
56 |
+
//FTP Login
|
57 |
+
$loginok=false;
|
58 |
+
if (ftp_raw_helper($ftp_conn_id,'USER '.$jobs[$jobid]['ftpuser'])) {
|
59 |
+
if (ftp_raw_helper($ftp_conn_id,'PASS '.base64_decode($jobs[$jobid]['ftppass']))) {
|
60 |
+
$loginok=true;
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
//if (ftp_login($ftp_conn_id, $jobs[$jobid]['ftpuser'], $jobs[$jobid]['ftppass'])) {
|
65 |
+
if ($loginok) {
|
66 |
+
//PASV
|
67 |
+
ftp_raw_helper($ftp_conn_id,'PASV');
|
68 |
+
//ALLO
|
69 |
+
ftp_raw_helper($ftp_conn_id,'ALLO '.filesize($backupfile));
|
70 |
|
71 |
if (ftp_put($ftp_conn_id, trailingslashit($jobs[$jobid]['ftpdir']).basename($backupfile), $backupfile, FTP_BINARY)) //transvere file
|
72 |
+
backwpup_joblog($logtime,__('Backup File transfered to FTP Server:','backwpup').' '.trailingslashit($jobs[$jobid]['ftpdir']).basename($backupfile));
|
73 |
else
|
74 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Can not tranfer backup to FTP server.','backwpup'));
|
75 |
|
76 |
if ($jobs[$jobid]['ftpmaxbackups']>0) { //Delete old backups
|
77 |
if ($filelist=ftp_nlist($ftp_conn_id, trailingslashit($jobs[$jobid]['ftpdir']))) {
|
79 |
if (!in_array(basename($files),array('.','..')) and false !== strpos(basename($files),'backwpup_'.$jobid.'_'))
|
80 |
$backupfilelist[]=basename($files);
|
81 |
}
|
82 |
+
if (sizeof($backupfilelist)>0) {
|
83 |
+
rsort($backupfilelist);
|
84 |
+
$numdeltefiles=0;
|
85 |
+
for ($i=$jobs[$jobid]['ftpmaxbackups'];$i<sizeof($backupfilelist);$i++) {
|
86 |
+
if (ftp_delete($ftp_conn_id, trailingslashit($jobs[$jobid]['ftpdir']).$backupfilelist[$i])) //delte files on ftp
|
87 |
$numdeltefiles++;
|
88 |
+
else
|
89 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Can not delete file on FTP Server:','backwpup').' '.trailingslashit($jobs[$jobid]['ftpdir']).$backupfilelist[$i]);
|
90 |
+
}
|
91 |
+
if ($numdeltefiles>0)
|
92 |
+
backwpup_joblog($logtime,$numdeltefiles.' '.__('files deleted on FTP Server:','backwpup'));
|
93 |
}
|
|
|
|
|
94 |
}
|
95 |
}
|
96 |
+
}
|
|
|
|
|
97 |
ftp_close($ftp_conn_id);
|
98 |
} else {
|
99 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Can not connect to FTP server:','backwpup').' '.$jobs[$jobid]['ftphost']);
|
100 |
}
|
101 |
}
|
102 |
?>
|
app/dojob/destination-mail.php
CHANGED
@@ -1,31 +1,37 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
//maillig method
|
4 |
-
add_action('phpmailer_init',
|
5 |
global $phpmailer;
|
6 |
-
|
7 |
-
BackWPupFunctions::joblog($logtime,__('Sendig mail...','backwpup'));
|
8 |
if (is_file($backupfile) and !empty($jobs[$jobid]['mailefilesize'])) {
|
9 |
$maxfilezise=abs($jobs[$jobid]['mailefilesize']*1024*1024);
|
10 |
if (filesize($backupfile)<$maxfilezise) {
|
11 |
$mailfiles[0]=$backupfile;
|
12 |
-
if (!
|
13 |
-
|
14 |
unset($mailfiles);
|
15 |
}
|
16 |
} else {
|
17 |
if (!empty($jobs[$jobid]['backupdir'])) {
|
18 |
-
|
19 |
} else {
|
20 |
-
|
21 |
}
|
22 |
unset($mailfiles);
|
23 |
}
|
24 |
}
|
25 |
-
if (wp_mail($jobs[$jobid]['mailaddress'],__('BackWPup Job:','backwpup').' '
|
26 |
-
|
27 |
} else {
|
28 |
-
|
29 |
}
|
30 |
}
|
31 |
//clean vars
|
1 |
<?php
|
2 |
+
$sendmail=false;
|
3 |
+
$errorcount=$wpdb->get_var("SELECT error FROM ".$wpdb->backwpup_logs." WHERE logtime=".$logtime);
|
4 |
+
if ($errorcount>0 and $jobs[$jobid]['mailerroronly'])
|
5 |
+
$sendmail=true;
|
6 |
+
if (!$jobs[$jobid]['mailerroronly'])
|
7 |
+
$sendmail=true;
|
8 |
+
|
9 |
+
if (!empty($jobs[$jobid]['mailaddress']) and $sendmail) {
|
10 |
//maillig method
|
11 |
+
add_action('phpmailer_init', 'backwpup_use_mail_method');
|
12 |
global $phpmailer;
|
13 |
+
backwpup_joblog($logtime,__('Sendig mail...','backwpup'));
|
|
|
14 |
if (is_file($backupfile) and !empty($jobs[$jobid]['mailefilesize'])) {
|
15 |
$maxfilezise=abs($jobs[$jobid]['mailefilesize']*1024*1024);
|
16 |
if (filesize($backupfile)<$maxfilezise) {
|
17 |
$mailfiles[0]=$backupfile;
|
18 |
+
if (!backwpup_needfreememory(filesize($backupfile)*4)) {
|
19 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Can not increase Memory for sending Backup Archive by Mail','backwpup'));
|
20 |
unset($mailfiles);
|
21 |
}
|
22 |
} else {
|
23 |
if (!empty($jobs[$jobid]['backupdir'])) {
|
24 |
+
backwpup_joblog($logtime,__('WARNING:','backwpup').' '.__('Backup Archive too big for sendig by mail','backwpup'));
|
25 |
} else {
|
26 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Backup Archive too big for sendig by mail','backwpup'));
|
27 |
}
|
28 |
unset($mailfiles);
|
29 |
}
|
30 |
}
|
31 |
+
if (wp_mail($jobs[$jobid]['mailaddress'],__('BackWPup Job:','backwpup').' '.date('Y-m-d H:i',$logtime).': '.$jobs[$jobid]['name'] ,$wpdb->get_var("SELECT log FROM ".$wpdb->backwpup_logs." WHERE logtime=".$logtime),'',$mailfiles)) {
|
32 |
+
backwpup_joblog($logtime,__('Mail send!!!','backwpup'));
|
33 |
} else {
|
34 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Can not send mail:','backwpup').' '.$phpmailer->ErrorInfo);
|
35 |
}
|
36 |
}
|
37 |
//clean vars
|
app/dojob/file.php
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
<?PHP
|
2 |
global $backwupu_exclude ,$backwpup_allfilezise, $backwpup_jobs;
|
3 |
$backwpup_jobs=$jobs[$jobid];
|
4 |
-
|
5 |
-
|
6 |
|
7 |
// helper function to scan dirs recursive
|
8 |
function backwpup_list_files( $folder = '', $levels = 100 ) {
|
9 |
-
global $backwupu_exclude ,$backwpup_allfilezise, $backwpup_jobs;
|
10 |
if( empty($folder) )
|
11 |
return false;
|
12 |
if( ! $levels )
|
@@ -30,12 +30,12 @@
|
|
30 |
$files.=",". $folder . '/' . $file;
|
31 |
$filezise=filesize($folder . '/' . $file);
|
32 |
$backwpup_allfilezise=$backwpup_allfilezise+$filezise;
|
33 |
-
|
34 |
} else {
|
35 |
-
|
36 |
}
|
37 |
} else {
|
38 |
-
|
39 |
}
|
40 |
}
|
41 |
}
|
@@ -50,7 +50,7 @@
|
|
50 |
if (!empty($jobs[$jobid]['fileexclude']))
|
51 |
$backwupu_exclude=split(',',$jobs[$jobid]['fileexclude']);
|
52 |
//Exclude Temp dir
|
53 |
-
$backwupu_exclude[]=
|
54 |
//Exclude Backup dirs
|
55 |
foreach($jobs as $jobsvale) {
|
56 |
$backwupu_exclude[]=$jobsvale['backupdir'];
|
@@ -77,30 +77,30 @@
|
|
77 |
}
|
78 |
|
79 |
if (empty($filelist)) {
|
80 |
-
|
81 |
unset($filelist); //clean vars
|
82 |
} else {
|
83 |
-
|
84 |
}
|
85 |
|
86 |
//Create Zip File
|
87 |
if (!empty($filelist)) {
|
88 |
-
|
89 |
-
|
90 |
$zipbackupfile = new PclZip($backupfile);
|
91 |
if (0==$zipbackupfile -> create($filelist,PCLZIP_OPT_REMOVE_PATH,str_replace('\\','/',ABSPATH),PCLZIP_OPT_ADD_TEMP_FILE_ON)) {
|
92 |
-
|
93 |
}
|
94 |
unset($filelist);
|
95 |
if ($jobs[$jobid]['type']=='DB+FILE') {
|
96 |
-
|
97 |
-
|
98 |
-
if (0==$zipbackupfile -> add(
|
99 |
-
|
100 |
}
|
101 |
}
|
102 |
unset($zipbackupfile);
|
103 |
-
|
104 |
}
|
105 |
|
106 |
?>
|
1 |
<?PHP
|
2 |
global $backwupu_exclude ,$backwpup_allfilezise, $backwpup_jobs;
|
3 |
$backwpup_jobs=$jobs[$jobid];
|
4 |
+
backwpup_joblog($logtime,__('Run file backup...','backwpup'));
|
5 |
+
backwpup_joblog($logtime,__('Get files to backup...','backwpup'));
|
6 |
|
7 |
// helper function to scan dirs recursive
|
8 |
function backwpup_list_files( $folder = '', $levels = 100 ) {
|
9 |
+
global $backwupu_exclude ,$backwpup_allfilezise, $backwpup_jobs, $logtime;
|
10 |
if( empty($folder) )
|
11 |
return false;
|
12 |
if( ! $levels )
|
30 |
$files.=",". $folder . '/' . $file;
|
31 |
$filezise=filesize($folder . '/' . $file);
|
32 |
$backwpup_allfilezise=$backwpup_allfilezise+$filezise;
|
33 |
+
backwpup_joblog($logtime,__('File to Backup:','backwpup').' '.$folder . '/' . $file.' '.backwpup_formatBytes($filezise));
|
34 |
} else {
|
35 |
+
backwpup_joblog($logtime,__('WARNING:','backwpup').' '.__('Can not read file:','backwpup').' '.$folder . '/' . $file);
|
36 |
}
|
37 |
} else {
|
38 |
+
backwpup_joblog($logtime,__('WARNING:','backwpup').' '.__('Is not a file or directory:','backwpup').' '.$folder . '/' . $file);
|
39 |
}
|
40 |
}
|
41 |
}
|
50 |
if (!empty($jobs[$jobid]['fileexclude']))
|
51 |
$backwupu_exclude=split(',',$jobs[$jobid]['fileexclude']);
|
52 |
//Exclude Temp dir
|
53 |
+
$backwupu_exclude[]=get_temp_dir().'backwpup';
|
54 |
//Exclude Backup dirs
|
55 |
foreach($jobs as $jobsvale) {
|
56 |
$backwupu_exclude[]=$jobsvale['backupdir'];
|
77 |
}
|
78 |
|
79 |
if (empty($filelist)) {
|
80 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('No files to Backup','backwpup'));
|
81 |
unset($filelist); //clean vars
|
82 |
} else {
|
83 |
+
backwpup_joblog($logtime,__('Size off all files:','backwpup').' '.backwpup_formatBytes($backwpup_allfilezise));
|
84 |
}
|
85 |
|
86 |
//Create Zip File
|
87 |
if (!empty($filelist)) {
|
88 |
+
backwpup_needfreememory(8388608); //8MB free memory for zip
|
89 |
+
backwpup_joblog($logtime,__('Create Backup Zip file...','backwpup'));
|
90 |
$zipbackupfile = new PclZip($backupfile);
|
91 |
if (0==$zipbackupfile -> create($filelist,PCLZIP_OPT_REMOVE_PATH,str_replace('\\','/',ABSPATH),PCLZIP_OPT_ADD_TEMP_FILE_ON)) {
|
92 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Zip file create:','backwpup').' '.$zipbackupfile->errorInfo(true));
|
93 |
}
|
94 |
unset($filelist);
|
95 |
if ($jobs[$jobid]['type']=='DB+FILE') {
|
96 |
+
backwpup_joblog($logtime,__('Database file size:','backwpup').' '.backwpup_formatBytes(filesize(get_temp_dir().'backwpup/'.DB_NAME.'.sql')));
|
97 |
+
backwpup_joblog($logtime,__('Add Database dump to Backup Zip file...','backwpup'));
|
98 |
+
if (0==$zipbackupfile -> add(get_temp_dir().'backwpup/'.DB_NAME.'.sql',PCLZIP_OPT_REMOVE_ALL_PATH,PCLZIP_OPT_ADD_TEMP_FILE_ON)) {
|
99 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('Zip file create Add Database dump:','backwpup').' '.$zipbackupfile->errorInfo(true));
|
100 |
}
|
101 |
}
|
102 |
unset($zipbackupfile);
|
103 |
+
backwpup_joblog($logtime,__('Backup Zip file create done!','backwpup'));
|
104 |
}
|
105 |
|
106 |
?>
|
app/dojob/optimize.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?PHP
|
2 |
//Optimize SQL Table
|
3 |
-
|
4 |
$tables=$wpdb->get_col('SHOW TABLES FROM `'.DB_NAME.'`');
|
5 |
|
6 |
if (is_array($jobs[$jobid]['dbexclude'])) {
|
@@ -14,14 +14,14 @@ if (sizeof($tables)>0) {
|
|
14 |
foreach ($tables as $table) {
|
15 |
if (!in_array($table,(array)$jobs[$jobid]['dbexclude'])) {
|
16 |
$optimize=$wpdb->get_row('OPTIMIZE TABLE `'.$table.'`', ARRAY_A);
|
17 |
-
|
18 |
if ($sqlerr=mysql_error($wpdb->dbh))
|
19 |
-
|
20 |
}
|
21 |
}
|
22 |
$wpdb->flush();
|
23 |
-
|
24 |
} else {
|
25 |
-
|
26 |
}
|
27 |
?>
|
1 |
<?PHP
|
2 |
//Optimize SQL Table
|
3 |
+
backwpup_joblog($logtime,__('Run Database optimize...','backwpup'));
|
4 |
$tables=$wpdb->get_col('SHOW TABLES FROM `'.DB_NAME.'`');
|
5 |
|
6 |
if (is_array($jobs[$jobid]['dbexclude'])) {
|
14 |
foreach ($tables as $table) {
|
15 |
if (!in_array($table,(array)$jobs[$jobid]['dbexclude'])) {
|
16 |
$optimize=$wpdb->get_row('OPTIMIZE TABLE `'.$table.'`', ARRAY_A);
|
17 |
+
backwpup_joblog($logtime,__(strtoupper($optimize['Msg_type']).':','backwpup').' '.sprintf(__('Result of table optimize for %1$s is: %2$s','backwpup'), $table, $optimize['Msg_text']));
|
18 |
if ($sqlerr=mysql_error($wpdb->dbh))
|
19 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.sprintf(__('BackWPup database error %1$s for query %2$s','backwpup'), $sqlerr, $sqlerr->last_query));
|
20 |
}
|
21 |
}
|
22 |
$wpdb->flush();
|
23 |
+
backwpup_joblog($logtime,__('Database optimize done!','backwpup'));
|
24 |
} else {
|
25 |
+
backwpup_joblog($logtime,__('ERROR:','backwpup').' '.__('No Tables to optimize','backwpup'));
|
26 |
}
|
27 |
?>
|
app/functions.php
CHANGED
@@ -1,28 +1,14 @@
|
|
1 |
<?PHP
|
2 |
-
|
3 |
-
class BackWPupFunctions {
|
4 |
-
|
5 |
-
//Same as WP function but needet for cron
|
6 |
-
function get_temp_dir() {
|
7 |
-
if ( defined('WP_TEMP_DIR') )
|
8 |
-
return trailingslashit(WP_TEMP_DIR);
|
9 |
-
$temp = WP_CONTENT_DIR . '/';
|
10 |
-
if ( is_dir($temp) && is_writable($temp) )
|
11 |
-
return $temp;
|
12 |
-
if ( function_exists('sys_get_temp_dir') )
|
13 |
-
return trailingslashit(sys_get_temp_dir());
|
14 |
-
return '/tmp/';
|
15 |
-
}
|
16 |
|
17 |
//Thems Option menu entry
|
18 |
-
function
|
19 |
-
$hook = add_management_page(__('BackWPup','backwpup'), __('BackWPup','backwpup'), '10', 'BackWPup',
|
20 |
-
add_action('load-'.$hook,
|
21 |
-
add_contextual_help($hook,
|
22 |
}
|
23 |
|
24 |
// Help too display
|
25 |
-
function
|
26 |
$help .= '<div class="metabox-prefs">';
|
27 |
$help .= '<a href="http://wordpress.org/tags/backwpup" target="_blank">'.__('Support').'</a>';
|
28 |
$help .= ' | <a href="http://wordpress.org/extend/plugins/backwpup/faq/" target="_blank">' . __('FAQ') . '</a>';
|
@@ -38,7 +24,7 @@ class BackWPupFunctions {
|
|
38 |
}
|
39 |
|
40 |
//Options Page
|
41 |
-
function
|
42 |
global $wpdb;
|
43 |
if (!current_user_can(10))
|
44 |
wp_die('No rights');
|
@@ -78,7 +64,7 @@ class BackWPupFunctions {
|
|
78 |
}
|
79 |
|
80 |
//Options Page
|
81 |
-
function
|
82 |
global $wpdb;
|
83 |
if (!current_user_can(10))
|
84 |
wp_die('No rights');
|
@@ -87,70 +73,18 @@ class BackWPupFunctions {
|
|
87 |
//wp_enqueue_script('BackWpupOptions',plugins_url('/'.BACKWPUP_PLUGIN_DIR.'/app/js/options.js'),array('jquery','utils','jquery-ui-core'),BACKWPUP_VERSION,true);
|
88 |
//For save Options
|
89 |
require_once(WP_PLUGIN_DIR.'/'.BACKWPUP_PLUGIN_DIR.'/app/options-save.php');
|
90 |
-
if ($_REQUEST['action2']!='-1' and !empty($_REQUEST['doaction2']))
|
91 |
-
$_REQUEST['action']=$_REQUEST['action2'];
|
92 |
-
switch($_REQUEST['action']) {
|
93 |
-
case 'delete':
|
94 |
-
if (is_Array($_POST['jobs'])) {
|
95 |
-
check_admin_referer('actions-jobs');
|
96 |
-
foreach ($_POST['jobs'] as $jobid) {
|
97 |
-
BackWPupOptions::delete_job($jobid);
|
98 |
-
}
|
99 |
-
} else {
|
100 |
-
$jobid = (int) $_GET['jobid'];
|
101 |
-
check_admin_referer('delete-job_' . $jobid);
|
102 |
-
BackWPupOptions::delete_job($jobid);
|
103 |
-
}
|
104 |
-
$_REQUEST['action']='';
|
105 |
-
break;
|
106 |
-
case 'delete-logs':
|
107 |
-
if (is_Array($_POST['logs'])) {
|
108 |
-
check_admin_referer('actions-logs');
|
109 |
-
foreach ($_POST['logs'] as $timestamp) {
|
110 |
-
BackWPupOptions::delete_log($timestamp);
|
111 |
-
}
|
112 |
-
} else {
|
113 |
-
$timestamp = (int) $_GET['log'];
|
114 |
-
check_admin_referer('delete-log_' . $timestamp);
|
115 |
-
BackWPupOptions::delete_log($timestamp);
|
116 |
-
}
|
117 |
-
$_REQUEST['action']='logs';
|
118 |
-
break;
|
119 |
-
case 'saveeditjob':
|
120 |
-
check_admin_referer('edit-job');
|
121 |
-
BackWPupOptions::edit_job((int) $_POST['jobid']);
|
122 |
-
break;
|
123 |
-
case 'savecfg':
|
124 |
-
check_admin_referer('backwpup-cfg');
|
125 |
-
BackWPupOptions::config();
|
126 |
-
$_REQUEST['action']='settings';
|
127 |
-
break;
|
128 |
-
case 'copy':
|
129 |
-
$jobid = (int) $_GET['jobid'];
|
130 |
-
check_admin_referer('copy-job_'.$jobid);
|
131 |
-
BackWPupOptions::copy_job($jobid);
|
132 |
-
$_REQUEST['action']='';
|
133 |
-
break;
|
134 |
-
case 'download':
|
135 |
-
$log = (int) $_GET['log'];
|
136 |
-
check_admin_referer('download-backup_'.$log);
|
137 |
-
BackWPupOptions::download_backup($log);
|
138 |
-
$_REQUEST['action']='logs';
|
139 |
-
break;
|
140 |
-
}
|
141 |
}
|
142 |
|
143 |
//delete Otions
|
144 |
-
function
|
145 |
global $wpdb;
|
146 |
delete_option('backwpup');
|
147 |
delete_option('backwpup_jobs');
|
148 |
-
delete_option('backwpup_log');
|
149 |
$wpdb->query("DROP TABLE IF EXISTS ".$wpdb->backwpup_logs);
|
150 |
}
|
151 |
|
152 |
//On Plugin activate
|
153 |
-
function
|
154 |
global $wpdb;
|
155 |
|
156 |
//Create log table
|
@@ -164,8 +98,6 @@ class BackWPupFunctions {
|
|
164 |
$charset_collate .= " COLLATE $wpdb->collate";
|
165 |
}
|
166 |
}
|
167 |
-
|
168 |
-
|
169 |
$statements = array(
|
170 |
"CREATE TABLE ".$wpdb->backwpup_logs." (
|
171 |
logtime BIGINT NOT NULL,
|
@@ -175,14 +107,13 @@ class BackWPupFunctions {
|
|
175 |
error TINYINT NOT NULL default '0',
|
176 |
warning TINYINT NOT NULL default '0',
|
177 |
worktime TINYINT NOT NULL default '0',
|
178 |
-
log
|
179 |
backupfile VARCHAR(255),
|
180 |
PRIMARY KEY (logtime)
|
181 |
)".$charset_collate,
|
182 |
);
|
183 |
$sql = implode(';', $statements);
|
184 |
dbDelta($sql);
|
185 |
-
|
186 |
//add cron jobs
|
187 |
$jobs=get_option('backwpup_jobs');
|
188 |
if (is_array($jobs)) {
|
@@ -196,7 +127,7 @@ class BackWPupFunctions {
|
|
196 |
}
|
197 |
|
198 |
//on Plugin deaktivate
|
199 |
-
function
|
200 |
//remove cron jobs
|
201 |
$jobs=get_option('backwpup_jobs');
|
202 |
if (is_array($jobs)) {
|
@@ -209,14 +140,14 @@ class BackWPupFunctions {
|
|
209 |
}
|
210 |
|
211 |
//add edit setting to plugins page
|
212 |
-
function
|
213 |
$settings_link='<a href="admin.php?page=BackWPup" title="' . __('Go to Settings Page','backwpup') . '" class="edit">' . __('Settings') . '</a>';
|
214 |
array_unshift( $links, $settings_link );
|
215 |
return $links;
|
216 |
}
|
217 |
|
218 |
//add links on plugins page
|
219 |
-
function
|
220 |
if ($file == BACKWPUP_PLUGIN_DIR.'/backwpup.php') {
|
221 |
$links[] = '<a href="http://wordpress.org/extend/plugins/backwpup/faq/" target="_blank">' . __('FAQ') . '</a>';
|
222 |
$links[] = '<a href="http://wordpress.org/tags/backwpup/" target="_blank">' . __('Support') . '</a>';
|
@@ -226,7 +157,7 @@ class BackWPupFunctions {
|
|
226 |
}
|
227 |
|
228 |
//Add cron interval
|
229 |
-
function
|
230 |
$jobs=get_option('backwpup_jobs'); //Load Settings
|
231 |
if (is_array($jobs)) {
|
232 |
foreach ($jobs as $jobkey => $jobvalue) {
|
@@ -238,16 +169,19 @@ class BackWPupFunctions {
|
|
238 |
}
|
239 |
return $schedules;
|
240 |
}
|
|
|
241 |
|
242 |
//DoJob
|
243 |
-
function
|
244 |
global $wpdb;
|
|
|
245 |
if (is_array($args)) { //cron gifes no complete arry back!!!
|
246 |
extract($args, EXTR_SKIP );
|
247 |
} else {
|
248 |
$jobid=$args;
|
249 |
}
|
250 |
if (empty($jobid)) return false;
|
|
|
251 |
require_once('dojob/bevore.php');
|
252 |
switch($jobs[$jobid]['type']) {
|
253 |
case 'DB+FILE':
|
@@ -280,7 +214,7 @@ class BackWPupFunctions {
|
|
280 |
}
|
281 |
|
282 |
//increase Memory need free memory in bytes
|
283 |
-
function
|
284 |
global $logtime;
|
285 |
if (!function_exists('memory_get_usage'))
|
286 |
return true;
|
@@ -297,21 +231,21 @@ class BackWPupFunctions {
|
|
297 |
|
298 |
if (memory_get_usage()+$memneed>$memory) { // increase Memory
|
299 |
if (ini_get('safe_mode') or strtolower(ini_get('safe_mode'))=='on' or ini_get('safe_mode')=='1') {
|
300 |
-
|
301 |
return false;
|
302 |
}
|
303 |
$newmemory=round((memory_get_usage()+$memneed)/1024/1024)+1;
|
304 |
if ($oldmem=ini_set('memory_limit', $newmemory.'M'))
|
305 |
-
|
306 |
else
|
307 |
-
|
308 |
}
|
309 |
return true;
|
310 |
}
|
311 |
|
312 |
|
313 |
//Make Log File for Jobs.
|
314 |
-
function
|
315 |
global $wpdb;
|
316 |
$errors=0;$warnings=0;
|
317 |
if (substr($entry,0,strlen(__('ERROR:','backwpup')))==__('ERROR:','backwpup'))
|
@@ -319,13 +253,13 @@ class BackWPupFunctions {
|
|
319 |
if (substr($entry,0,strlen(__('WARNING:','backwpup')))==__('WARNING:','backwpup'))
|
320 |
$warnings=1;
|
321 |
mysql_query("UPDATE ".$wpdb->backwpup_logs." SET error=error+".$errors.", warning=warning+".$warnings.", log=concat(log,'".mysql_real_escape_string(date('Y-m-d H:i:s').": ".$entry."\n")."') WHERE logtime=".$logtime);
|
322 |
-
|
|
|
323 |
flush();
|
324 |
-
ob_flush();
|
325 |
}
|
326 |
|
327 |
//file size
|
328 |
-
function
|
329 |
$units = array('B', 'KB', 'MB', 'GB', 'TB');
|
330 |
$bytes = max($bytes, 0);
|
331 |
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
|
@@ -335,7 +269,7 @@ class BackWPupFunctions {
|
|
335 |
}
|
336 |
|
337 |
//echo long backup type name
|
338 |
-
function
|
339 |
switch($type) {
|
340 |
case 'DB+FILE':
|
341 |
$typename=__('Database & File Backup','backwpup');
|
@@ -363,7 +297,7 @@ class BackWPupFunctions {
|
|
363 |
}
|
364 |
|
365 |
//Dashboard widget
|
366 |
-
function
|
367 |
global $wpdb;
|
368 |
echo '<strong>'.__('Logs:','backwpup').'</strong><ul>';
|
369 |
$logs=$wpdb->get_results("SELECT * FROM ".$wpdb->backwpup_logs." ORDER BY logtime DESC LIMIT 5", ARRAY_A);
|
@@ -372,7 +306,7 @@ class BackWPupFunctions {
|
|
372 |
foreach ($logs as $logvalue) {
|
373 |
echo '<li><a href="'.wp_nonce_url('admin.php?page=BackWPup&action=view_log&logtime='.$logvalue['logtime'], 'view-log').'" title="'.__('View Log','backwpup').'"><strong>'.date(get_option('date_format'),$logvalue['logtime']).' '.date(get_option('time_format'),$logvalue['logtime']).'</strong>: <i>';
|
374 |
if (empty($logvalue['jobname']))
|
375 |
-
|
376 |
else
|
377 |
echo $logvalue['jobname'];
|
378 |
echo '</i>';
|
@@ -412,12 +346,12 @@ class BackWPupFunctions {
|
|
412 |
}
|
413 |
|
414 |
//add dashboard widget
|
415 |
-
function
|
416 |
-
wp_add_dashboard_widget( 'backwpup_dashboard_widget', 'BackWPup',
|
417 |
}
|
418 |
|
419 |
//Sed mail send Method
|
420 |
-
function
|
421 |
global $phpmailer;
|
422 |
$cfg=get_option('backwpup'); //Load Settings
|
423 |
if ($cfg['mailmethod']=="SMTP") {
|
@@ -429,7 +363,7 @@ class BackWPupFunctions {
|
|
429 |
$phpmailer->Port=$smtpport;
|
430 |
$phpmailer->SMTPSecure=$cfg['mailsecure'];
|
431 |
$phpmailer->Username=$cfg['mailuser'];
|
432 |
-
$phpmailer->Password
|
433 |
if (!empty($cfg['mailuser']) and !empty($cfg['mailpass']))
|
434 |
$phpmailer->SMTPAuth=true;
|
435 |
$phpmailer->IsSMTP();
|
@@ -442,22 +376,25 @@ class BackWPupFunctions {
|
|
442 |
}
|
443 |
|
444 |
// add all action and so on only if plugin loaded.
|
445 |
-
function
|
|
|
|
|
|
|
|
|
446 |
//add Menu
|
447 |
-
add_action('admin_menu',
|
448 |
//Additional links on the plugin page
|
449 |
if (current_user_can(10))
|
450 |
-
add_filter('plugin_action_links_'.BACKWPUP_PLUGIN_DIR.'/backwpup.php',
|
451 |
if (current_user_can('install_plugins'))
|
452 |
-
add_filter('plugin_row_meta',
|
453 |
//add cron intervals
|
454 |
-
add_filter('cron_schedules',
|
455 |
//Actions for Cron job
|
456 |
-
add_action('backwpup_cron',
|
457 |
//add Dashboard widget
|
458 |
if (current_user_can(10))
|
459 |
-
add_action('wp_dashboard_setup',
|
460 |
}
|
461 |
-
}
|
462 |
|
463 |
?>
|
1 |
<?PHP
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
//Thems Option menu entry
|
4 |
+
function backwpup_menu_entry() {
|
5 |
+
$hook = add_management_page(__('BackWPup','backwpup'), __('BackWPup','backwpup'), '10', 'BackWPup','backwpup_options_page') ;
|
6 |
+
add_action('load-'.$hook, 'backwpup_options_load');
|
7 |
+
add_contextual_help($hook,backwpup_show_help());
|
8 |
}
|
9 |
|
10 |
// Help too display
|
11 |
+
function backwpup_show_help() {
|
12 |
$help .= '<div class="metabox-prefs">';
|
13 |
$help .= '<a href="http://wordpress.org/tags/backwpup" target="_blank">'.__('Support').'</a>';
|
14 |
$help .= ' | <a href="http://wordpress.org/extend/plugins/backwpup/faq/" target="_blank">' . __('FAQ') . '</a>';
|
24 |
}
|
25 |
|
26 |
//Options Page
|
27 |
+
function backwpup_options_page() {
|
28 |
global $wpdb;
|
29 |
if (!current_user_can(10))
|
30 |
wp_die('No rights');
|
64 |
}
|
65 |
|
66 |
//Options Page
|
67 |
+
function backwpup_options_load() {
|
68 |
global $wpdb;
|
69 |
if (!current_user_can(10))
|
70 |
wp_die('No rights');
|
73 |
//wp_enqueue_script('BackWpupOptions',plugins_url('/'.BACKWPUP_PLUGIN_DIR.'/app/js/options.js'),array('jquery','utils','jquery-ui-core'),BACKWPUP_VERSION,true);
|
74 |
//For save Options
|
75 |
require_once(WP_PLUGIN_DIR.'/'.BACKWPUP_PLUGIN_DIR.'/app/options-save.php');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
}
|
77 |
|
78 |
//delete Otions
|
79 |
+
function backwpup_plugin_uninstall() {
|
80 |
global $wpdb;
|
81 |
delete_option('backwpup');
|
82 |
delete_option('backwpup_jobs');
|
|
|
83 |
$wpdb->query("DROP TABLE IF EXISTS ".$wpdb->backwpup_logs);
|
84 |
}
|
85 |
|
86 |
//On Plugin activate
|
87 |
+
function backwpup_plugin_activate() {
|
88 |
global $wpdb;
|
89 |
|
90 |
//Create log table
|
98 |
$charset_collate .= " COLLATE $wpdb->collate";
|
99 |
}
|
100 |
}
|
|
|
|
|
101 |
$statements = array(
|
102 |
"CREATE TABLE ".$wpdb->backwpup_logs." (
|
103 |
logtime BIGINT NOT NULL,
|
107 |
error TINYINT NOT NULL default '0',
|
108 |
warning TINYINT NOT NULL default '0',
|
109 |
worktime TINYINT NOT NULL default '0',
|
110 |
+
log LONGTEXT NOT NULL default '',
|
111 |
backupfile VARCHAR(255),
|
112 |
PRIMARY KEY (logtime)
|
113 |
)".$charset_collate,
|
114 |
);
|
115 |
$sql = implode(';', $statements);
|
116 |
dbDelta($sql);
|
|
|
117 |
//add cron jobs
|
118 |
$jobs=get_option('backwpup_jobs');
|
119 |
if (is_array($jobs)) {
|
127 |
}
|
128 |
|
129 |
//on Plugin deaktivate
|
130 |
+
function backwpup_plugin_deactivate() {
|
131 |
//remove cron jobs
|
132 |
$jobs=get_option('backwpup_jobs');
|
133 |
if (is_array($jobs)) {
|
140 |
}
|
141 |
|
142 |
//add edit setting to plugins page
|
143 |
+
function backwpup_plugin_options_link($links) {
|
144 |
$settings_link='<a href="admin.php?page=BackWPup" title="' . __('Go to Settings Page','backwpup') . '" class="edit">' . __('Settings') . '</a>';
|
145 |
array_unshift( $links, $settings_link );
|
146 |
return $links;
|
147 |
}
|
148 |
|
149 |
//add links on plugins page
|
150 |
+
function backwpup_plugin_links($links, $file) {
|
151 |
if ($file == BACKWPUP_PLUGIN_DIR.'/backwpup.php') {
|
152 |
$links[] = '<a href="http://wordpress.org/extend/plugins/backwpup/faq/" target="_blank">' . __('FAQ') . '</a>';
|
153 |
$links[] = '<a href="http://wordpress.org/tags/backwpup/" target="_blank">' . __('Support') . '</a>';
|
157 |
}
|
158 |
|
159 |
//Add cron interval
|
160 |
+
function backwpup_intervals($schedules) {
|
161 |
$jobs=get_option('backwpup_jobs'); //Load Settings
|
162 |
if (is_array($jobs)) {
|
163 |
foreach ($jobs as $jobkey => $jobvalue) {
|
169 |
}
|
170 |
return $schedules;
|
171 |
}
|
172 |
+
|
173 |
|
174 |
//DoJob
|
175 |
+
function backwpup_dojob($args) {
|
176 |
global $wpdb;
|
177 |
+
|
178 |
if (is_array($args)) { //cron gifes no complete arry back!!!
|
179 |
extract($args, EXTR_SKIP );
|
180 |
} else {
|
181 |
$jobid=$args;
|
182 |
}
|
183 |
if (empty($jobid)) return false;
|
184 |
+
require_once(ABSPATH . 'wp-admin/includes/file.php'); //for get_tempdir();
|
185 |
require_once('dojob/bevore.php');
|
186 |
switch($jobs[$jobid]['type']) {
|
187 |
case 'DB+FILE':
|
214 |
}
|
215 |
|
216 |
//increase Memory need free memory in bytes
|
217 |
+
function backwpup_needfreememory($memneed) {
|
218 |
global $logtime;
|
219 |
if (!function_exists('memory_get_usage'))
|
220 |
return true;
|
231 |
|
232 |
if (memory_get_usage()+$memneed>$memory) { // increase Memory
|
233 |
if (ini_get('safe_mode') or strtolower(ini_get('safe_mode'))=='on' or ini_get('safe_mode')=='1') {
|
234 |
+
backwpup_joblog($logtime,__('WARNING:','backwpup').' '.sprintf(__('PHP Safe Mode is on!!! Can not increse Memory Limit is %1$s','backwpup'),ini_get('memory_limit')));
|
235 |
return false;
|
236 |
}
|
237 |
$newmemory=round((memory_get_usage()+$memneed)/1024/1024)+1;
|
238 |
if ($oldmem=ini_set('memory_limit', $newmemory.'M'))
|
239 |
+
backwpup_joblog($logtime,sprintf(__('Memory incresed from %1$s to %2$s','backwpup'),$oldmem,ini_get('memory_limit')));
|
240 |
else
|
241 |
+
backwpup_joblog($logtime,sprintf(__('ERROR:','backwpup').' '.__('Can not increse Memory Limit is %1$s','backwpup'),ini_get('memory_limit')));
|
242 |
}
|
243 |
return true;
|
244 |
}
|
245 |
|
246 |
|
247 |
//Make Log File for Jobs.
|
248 |
+
function backwpup_joblog($logtime,$entry) {
|
249 |
global $wpdb;
|
250 |
$errors=0;$warnings=0;
|
251 |
if (substr($entry,0,strlen(__('ERROR:','backwpup')))==__('ERROR:','backwpup'))
|
253 |
if (substr($entry,0,strlen(__('WARNING:','backwpup')))==__('WARNING:','backwpup'))
|
254 |
$warnings=1;
|
255 |
mysql_query("UPDATE ".$wpdb->backwpup_logs." SET error=error+".$errors.", warning=warning+".$warnings.", log=concat(log,'".mysql_real_escape_string(date('Y-m-d H:i:s').": ".$entry."\n")."') WHERE logtime=".$logtime);
|
256 |
+
if (!defined('DOING_CRON'))
|
257 |
+
echo date('Y-m-d H:i:s').": ".$entry."\n";
|
258 |
flush();
|
|
|
259 |
}
|
260 |
|
261 |
//file size
|
262 |
+
function backwpup_formatBytes($bytes, $precision = 2) {
|
263 |
$units = array('B', 'KB', 'MB', 'GB', 'TB');
|
264 |
$bytes = max($bytes, 0);
|
265 |
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
|
269 |
}
|
270 |
|
271 |
//echo long backup type name
|
272 |
+
function backwpup_backup_types($type='',$echo=false) {
|
273 |
switch($type) {
|
274 |
case 'DB+FILE':
|
275 |
$typename=__('Database & File Backup','backwpup');
|
297 |
}
|
298 |
|
299 |
//Dashboard widget
|
300 |
+
function backwpup_dashboard_output() {
|
301 |
global $wpdb;
|
302 |
echo '<strong>'.__('Logs:','backwpup').'</strong><ul>';
|
303 |
$logs=$wpdb->get_results("SELECT * FROM ".$wpdb->backwpup_logs." ORDER BY logtime DESC LIMIT 5", ARRAY_A);
|
306 |
foreach ($logs as $logvalue) {
|
307 |
echo '<li><a href="'.wp_nonce_url('admin.php?page=BackWPup&action=view_log&logtime='.$logvalue['logtime'], 'view-log').'" title="'.__('View Log','backwpup').'"><strong>'.date(get_option('date_format'),$logvalue['logtime']).' '.date(get_option('time_format'),$logvalue['logtime']).'</strong>: <i>';
|
308 |
if (empty($logvalue['jobname']))
|
309 |
+
backwpup_backup_types($logvalue['type'],true);
|
310 |
else
|
311 |
echo $logvalue['jobname'];
|
312 |
echo '</i>';
|
346 |
}
|
347 |
|
348 |
//add dashboard widget
|
349 |
+
function backwpup_add_dashboard() {
|
350 |
+
wp_add_dashboard_widget( 'backwpup_dashboard_widget', 'BackWPup', 'backwpup_dashboard_output' );
|
351 |
}
|
352 |
|
353 |
//Sed mail send Method
|
354 |
+
function backwpup_use_mail_method() {
|
355 |
global $phpmailer;
|
356 |
$cfg=get_option('backwpup'); //Load Settings
|
357 |
if ($cfg['mailmethod']=="SMTP") {
|
363 |
$phpmailer->Port=$smtpport;
|
364 |
$phpmailer->SMTPSecure=$cfg['mailsecure'];
|
365 |
$phpmailer->Username=$cfg['mailuser'];
|
366 |
+
$phpmailer->Password=base64_decode($cfg['mailpass']);
|
367 |
if (!empty($cfg['mailuser']) and !empty($cfg['mailpass']))
|
368 |
$phpmailer->SMTPAuth=true;
|
369 |
$phpmailer->IsSMTP();
|
376 |
}
|
377 |
|
378 |
// add all action and so on only if plugin loaded.
|
379 |
+
function backwpup_init() {
|
380 |
+
//Disabele WP_Corn
|
381 |
+
$cfg=get_option('backwpup');
|
382 |
+
if ($cfg['disablewpcron'])
|
383 |
+
define('DISABLE_WP_CRON',true);
|
384 |
//add Menu
|
385 |
+
add_action('admin_menu', 'backwpup_menu_entry');
|
386 |
//Additional links on the plugin page
|
387 |
if (current_user_can(10))
|
388 |
+
add_filter('plugin_action_links_'.BACKWPUP_PLUGIN_DIR.'/backwpup.php', 'backwpup_plugin_options_link');
|
389 |
if (current_user_can('install_plugins'))
|
390 |
+
add_filter('plugin_row_meta', 'backwpup_plugin_links',10,2);
|
391 |
//add cron intervals
|
392 |
+
add_filter('cron_schedules', 'backwpup_intervals');
|
393 |
//Actions for Cron job
|
394 |
+
add_action('backwpup_cron', 'backwpup_dojob');
|
395 |
//add Dashboard widget
|
396 |
if (current_user_can(10))
|
397 |
+
add_action('wp_dashboard_setup', 'backwpup_add_dashboard');
|
398 |
}
|
|
|
399 |
|
400 |
?>
|
app/options-edit.php
CHANGED
@@ -28,6 +28,7 @@ if ($jobs[$jobid]['type']=='FILE') {
|
|
28 |
|
29 |
|
30 |
?>
|
|
|
31 |
<table class="form-table">
|
32 |
|
33 |
<tr valign="top">
|
@@ -35,8 +36,8 @@ if ($jobs[$jobid]['type']=='FILE') {
|
|
35 |
<td>
|
36 |
<select name="type" id="job_type">
|
37 |
<?php
|
38 |
-
foreach (
|
39 |
-
echo '<option value="'.$type.'"'.selected($type,$jobs[$jobid]['type'],false).'>'.
|
40 |
}
|
41 |
?>
|
42 |
</select>
|
@@ -62,7 +63,7 @@ if (!isset($jobs[$jobid]['dbexclude'])) { //def.
|
|
62 |
}
|
63 |
foreach ($tables as $table) {
|
64 |
if ($wpdb->backwpup_logs<>$table)
|
65 |
-
echo ' <input class="checkbox" type="checkbox"'.checked(in_array($table,(array)$jobs[$jobid]['dbexclude']),true,false).' name="dbexclude[]" value="'.$table.'"/>'.$table;
|
66 |
}
|
67 |
|
68 |
?>
|
@@ -71,19 +72,19 @@ foreach ($tables as $table) {
|
|
71 |
<?PHP if ($jobs[$jobid]['type']=='FILE' or $jobs[$jobid]['type']=='DB+FILE') {?>
|
72 |
<?PHP if (!isset($jobs[$jobid]['backuproot'])) $jobs[$jobid]['backuproot']=true; if (!isset($jobs[$jobid]['backupcontent'])) $jobs[$jobid]['backupcontent']=true; if (!isset($jobs[$jobid]['backupplugins'])) $jobs[$jobid]['backupplugins']=true;?>
|
73 |
<tr valign="top">
|
74 |
-
<th scope="row"><label for="fileinclude"><?PHP _e('Backup Blog
|
75 |
<input class="checkbox" type="checkbox"<?php checked($jobs[$jobid]['backuproot'],true,true);?> name="backuproot" value="1"/> <?php _e('Blog root and WP Files','backwpup');?><br />
|
76 |
<input class="checkbox" type="checkbox"<?php checked($jobs[$jobid]['backupcontent'],true,true);?> name="backupcontent" value="1"/> <?php _e('Blog Content','backwpup');?><br />
|
77 |
<input class="checkbox" type="checkbox"<?php checked($jobs[$jobid]['backupplugins'],true,true);?> name="backupplugins" value="1"/> <?php _e('Blog Plugins','backwpup');?>
|
78 |
</td></tr>
|
79 |
|
80 |
<tr valign="top">
|
81 |
-
<th scope="row"><label for="dirinclude"><?PHP _e('Include
|
82 |
<input name="dirinclude" type="text" value="<?PHP echo $jobs[$jobid]['dirinclude'];?>" class="regular-text" /><span class="description"><?PHP echo __('Separate with ,. Full Path like:','backwpup').' '.str_replace('\\','/',ABSPATH); ?></span>
|
83 |
</td></tr>
|
84 |
|
85 |
<tr valign="top">
|
86 |
-
<th scope="row"><label for="fileexclude"><?PHP _e('Exclude files/
|
87 |
<input name="fileexclude" type="text" value="<?PHP echo $jobs[$jobid]['fileexclude'];?>" class="regular-text" /><span class="description"><?PHP _e('Separate with ,','backwpup') ?></span>
|
88 |
</td></tr>
|
89 |
<?PHP } ?>
|
@@ -137,16 +138,15 @@ for ($i=date('Y')-1;$i<=date('Y')+3;$i++) {
|
|
137 |
echo '<option value="'.$i.'"'.selected($i,date('Y',$jobs[$jobid]['scheduletime']),false).'>'.$i.'</option>';
|
138 |
}
|
139 |
echo '</select><br />';
|
140 |
-
|
141 |
-
_e('Activate
|
142 |
-
<input class="checkbox" value="1" type="checkbox" <?php checked($jobs[$jobid]['activated'],true); ?> name="activated" />
|
143 |
</td>
|
144 |
</tr>
|
145 |
|
146 |
<?PHP if ($jobs[$jobid]['type']=='FILE' or $jobs[$jobid]['type']=='DB' or $jobs[$jobid]['type']=='DB+FILE') {?>
|
147 |
<tr valign="top">
|
148 |
<?PHP if (empty($jobs[$jobid]['backupdir'])) $jobs[$jobid]['backupdir']=str_replace('\\','/',WP_CONTENT_DIR).'/backwpup/';?>
|
149 |
-
<th scope="row"><label for="backupdir"><?PHP _e('
|
150 |
<td><input name="backupdir" type="text" value="<?PHP echo $jobs[$jobid]['backupdir'];?>" class="regular-text" /><span class="description"><?PHP _e('Full Phath of Directory for Backup fiels','backwpup'); ?></span></td>
|
151 |
</tr>
|
152 |
<tr valign="top">
|
@@ -158,13 +158,13 @@ _e('Activate:', 'backwpup'); ?>
|
|
158 |
|
159 |
|
160 |
<tr valign="top">
|
161 |
-
<th scope="row"><label for="ftptransfer"><?PHP _e('
|
162 |
<td>
|
163 |
<?PHP _e('Ftp Hostname:','backwpup'); ?><input name="ftphost" type="text" value="<?PHP echo $jobs[$jobid]['ftphost'];?>" class="regular-text" /><br />
|
164 |
<?PHP _e('Ftp Username:','backwpup'); ?><input name="ftpuser" type="text" value="<?PHP echo $jobs[$jobid]['ftpuser'];?>" class="user" /><br />
|
165 |
-
<?PHP _e('Ftp Password:','backwpup'); ?><input name="ftppass" type="password" value="<?PHP echo $jobs[$jobid]['ftppass'];?>" class="password" /><br />
|
166 |
<?PHP _e('Ftp directory:','backwpup'); ?><input name="ftpdir" type="text" value="<?PHP echo $jobs[$jobid]['ftpdir'];?>" class="regular-text" /><br />
|
167 |
-
<?PHP _e('Max Backup fieles on ftp:','backwpup'); ?><input name="ftpmaxbackups" type="text" value="<?PHP echo $jobs[$jobid]['ftpmaxbackups'];?>" class="small-text"
|
168 |
</td>
|
169 |
</tr>
|
170 |
|
@@ -176,9 +176,10 @@ _e('Activate:', 'backwpup'); ?>
|
|
176 |
<td><input name="mailaddress" type="text" value="<?PHP echo $jobs[$jobid]['mailaddress'];?>" class="regular-text" /><br />
|
177 |
<?PHP
|
178 |
if ($jobs[$jobid]['type']=='FILE' or $jobs[$jobid]['type']=='DB' or $jobs[$jobid]['type']=='DB+FILE') {
|
179 |
-
echo __('Max Filesize for Backups via mail:','backwpup').'<input name="mailefilesize" type="text" value="'.$jobs[$jobid]['mailefilesize'].'" class="small-text" />MB <span class="description">'.__('0=send log only.','backwpup').'</span
|
180 |
}
|
181 |
?>
|
|
|
182 |
</td>
|
183 |
</tr>
|
184 |
|
28 |
|
29 |
|
30 |
?>
|
31 |
+
|
32 |
<table class="form-table">
|
33 |
|
34 |
<tr valign="top">
|
36 |
<td>
|
37 |
<select name="type" id="job_type">
|
38 |
<?php
|
39 |
+
foreach (backwpup_backup_types() as $type) {
|
40 |
+
echo '<option value="'.$type.'"'.selected($type,$jobs[$jobid]['type'],false).'>'.backwpup_backup_types($type).'</option>';
|
41 |
}
|
42 |
?>
|
43 |
</select>
|
63 |
}
|
64 |
foreach ($tables as $table) {
|
65 |
if ($wpdb->backwpup_logs<>$table)
|
66 |
+
echo ' <input class="checkbox" type="checkbox"'.checked(in_array($table,(array)$jobs[$jobid]['dbexclude']),true,false).' name="dbexclude[]" value="'.$table.'"/> '.$table.'<br />';
|
67 |
}
|
68 |
|
69 |
?>
|
72 |
<?PHP if ($jobs[$jobid]['type']=='FILE' or $jobs[$jobid]['type']=='DB+FILE') {?>
|
73 |
<?PHP if (!isset($jobs[$jobid]['backuproot'])) $jobs[$jobid]['backuproot']=true; if (!isset($jobs[$jobid]['backupcontent'])) $jobs[$jobid]['backupcontent']=true; if (!isset($jobs[$jobid]['backupplugins'])) $jobs[$jobid]['backupplugins']=true;?>
|
74 |
<tr valign="top">
|
75 |
+
<th scope="row"><label for="fileinclude"><?PHP _e('Backup Blog directorys','backwpup'); ?></label></th><td>
|
76 |
<input class="checkbox" type="checkbox"<?php checked($jobs[$jobid]['backuproot'],true,true);?> name="backuproot" value="1"/> <?php _e('Blog root and WP Files','backwpup');?><br />
|
77 |
<input class="checkbox" type="checkbox"<?php checked($jobs[$jobid]['backupcontent'],true,true);?> name="backupcontent" value="1"/> <?php _e('Blog Content','backwpup');?><br />
|
78 |
<input class="checkbox" type="checkbox"<?php checked($jobs[$jobid]['backupplugins'],true,true);?> name="backupplugins" value="1"/> <?php _e('Blog Plugins','backwpup');?>
|
79 |
</td></tr>
|
80 |
|
81 |
<tr valign="top">
|
82 |
+
<th scope="row"><label for="dirinclude"><?PHP _e('Include directorys','backwpup'); ?></label></th><td>
|
83 |
<input name="dirinclude" type="text" value="<?PHP echo $jobs[$jobid]['dirinclude'];?>" class="regular-text" /><span class="description"><?PHP echo __('Separate with ,. Full Path like:','backwpup').' '.str_replace('\\','/',ABSPATH); ?></span>
|
84 |
</td></tr>
|
85 |
|
86 |
<tr valign="top">
|
87 |
+
<th scope="row"><label for="fileexclude"><?PHP _e('Exclude files/directorys','backwpup'); ?></label></th><td>
|
88 |
<input name="fileexclude" type="text" value="<?PHP echo $jobs[$jobid]['fileexclude'];?>" class="regular-text" /><span class="description"><?PHP _e('Separate with ,','backwpup') ?></span>
|
89 |
</td></tr>
|
90 |
<?PHP } ?>
|
138 |
echo '<option value="'.$i.'"'.selected($i,date('Y',$jobs[$jobid]['scheduletime']),false).'>'.$i.'</option>';
|
139 |
}
|
140 |
echo '</select><br />';
|
141 |
+
?>
|
142 |
+
<input class="checkbox" value="1" type="checkbox" <?php checked($jobs[$jobid]['activated'],true); ?> name="activated" /> <?PHP _e('Activate scheduleing', 'backwpup'); ?>
|
|
|
143 |
</td>
|
144 |
</tr>
|
145 |
|
146 |
<?PHP if ($jobs[$jobid]['type']=='FILE' or $jobs[$jobid]['type']=='DB' or $jobs[$jobid]['type']=='DB+FILE') {?>
|
147 |
<tr valign="top">
|
148 |
<?PHP if (empty($jobs[$jobid]['backupdir'])) $jobs[$jobid]['backupdir']=str_replace('\\','/',WP_CONTENT_DIR).'/backwpup/';?>
|
149 |
+
<th scope="row"><label for="backupdir"><?PHP _e('Save Backups to directory','backwpup'); ?></label></th>
|
150 |
<td><input name="backupdir" type="text" value="<?PHP echo $jobs[$jobid]['backupdir'];?>" class="regular-text" /><span class="description"><?PHP _e('Full Phath of Directory for Backup fiels','backwpup'); ?></span></td>
|
151 |
</tr>
|
152 |
<tr valign="top">
|
158 |
|
159 |
|
160 |
<tr valign="top">
|
161 |
+
<th scope="row"><label for="ftptransfer"><?PHP _e('Copy Backup to FTP Server','backwpup'); ?></label></th>
|
162 |
<td>
|
163 |
<?PHP _e('Ftp Hostname:','backwpup'); ?><input name="ftphost" type="text" value="<?PHP echo $jobs[$jobid]['ftphost'];?>" class="regular-text" /><br />
|
164 |
<?PHP _e('Ftp Username:','backwpup'); ?><input name="ftpuser" type="text" value="<?PHP echo $jobs[$jobid]['ftpuser'];?>" class="user" /><br />
|
165 |
+
<?PHP _e('Ftp Password:','backwpup'); ?><input name="ftppass" type="password" value="<?PHP echo base64_decode($jobs[$jobid]['ftppass']);?>" class="password" /><br />
|
166 |
<?PHP _e('Ftp directory:','backwpup'); ?><input name="ftpdir" type="text" value="<?PHP echo $jobs[$jobid]['ftpdir'];?>" class="regular-text" /><br />
|
167 |
+
<?PHP _e('Max Backup fieles on ftp:','backwpup'); ?><input name="ftpmaxbackups" type="text" value="<?PHP echo $jobs[$jobid]['ftpmaxbackups'];?>" class="small-text" /><span class="description"><?PHP _e('0=off','backwpup');?></span><br />
|
168 |
</td>
|
169 |
</tr>
|
170 |
|
176 |
<td><input name="mailaddress" type="text" value="<?PHP echo $jobs[$jobid]['mailaddress'];?>" class="regular-text" /><br />
|
177 |
<?PHP
|
178 |
if ($jobs[$jobid]['type']=='FILE' or $jobs[$jobid]['type']=='DB' or $jobs[$jobid]['type']=='DB+FILE') {
|
179 |
+
echo __('Max Filesize for Backups via mail:','backwpup').'<input name="mailefilesize" type="text" value="'.$jobs[$jobid]['mailefilesize'].'" class="small-text" />MB <span class="description">'.__('0=send log only.','backwpup').'</span><br />';
|
180 |
}
|
181 |
?>
|
182 |
+
<input class="checkbox" value="1" type="checkbox" <?php checked($jobs[$jobid]['mailerroronly'],true); ?> name="mailerroronly" /> <?PHP _e('Send only mail on errors.','backwpup'); ?>
|
183 |
</td>
|
184 |
</tr>
|
185 |
|
app/options-logs.php
CHANGED
@@ -64,7 +64,7 @@
|
|
64 |
<td class="column-id"><?PHP echo $logvalue['jobid'];?></td>
|
65 |
<td class="column-type">
|
66 |
<?PHP
|
67 |
-
|
68 |
?>
|
69 |
</td>
|
70 |
<td class="name column-log">
|
@@ -99,7 +99,7 @@
|
|
99 |
<td class="column-size">
|
100 |
<?PHP
|
101 |
if (!empty($logvalue['backupfile']) and is_file($logvalue['backupfile'])) {
|
102 |
-
echo
|
103 |
} else {
|
104 |
_e('only Log','backwpup');
|
105 |
}
|
64 |
<td class="column-id"><?PHP echo $logvalue['jobid'];?></td>
|
65 |
<td class="column-type">
|
66 |
<?PHP
|
67 |
+
backwpup_backup_types($logvalue['type'],true);
|
68 |
?>
|
69 |
</td>
|
70 |
<td class="name column-log">
|
99 |
<td class="column-size">
|
100 |
<?PHP
|
101 |
if (!empty($logvalue['backupfile']) and is_file($logvalue['backupfile'])) {
|
102 |
+
echo backwpup_formatBytes(filesize($logvalue['backupfile']));
|
103 |
} else {
|
104 |
_e('only Log','backwpup');
|
105 |
}
|
app/options-runnow.php
CHANGED
@@ -9,5 +9,5 @@
|
|
9 |
</ul>
|
10 |
<br class="clear" />
|
11 |
<pre>
|
12 |
-
<?PHP
|
13 |
</pre>
|
9 |
</ul>
|
10 |
<br class="clear" />
|
11 |
<pre>
|
12 |
+
<?PHP backwpup_dojob($jobid); ?>
|
13 |
</pre>
|
app/options-save.php
CHANGED
@@ -1,123 +1,152 @@
|
|
1 |
<?php
|
|
|
|
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
unset($jobs[$jobid]);
|
8 |
-
update_option('backwpup_jobs',$jobs); //Save Settings
|
9 |
if ($time=wp_next_scheduled('backwpup_cron',array('jobid'=>$jobid))) {
|
10 |
wp_unschedule_event($time,'backwpup_cron',array('jobid'=>$jobid));
|
11 |
}
|
12 |
}
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
if (is_file($backupfile))
|
18 |
unlink($backupfile);
|
19 |
-
$wpdb->query("DELETE FROM ".$wpdb->backwpup_logs." WHERE logtime=".$
|
20 |
-
}
|
21 |
-
|
22 |
-
function copy_job($jobid) {
|
23 |
-
$jobs=get_option('backwpup_jobs'); //Load Settings
|
24 |
-
|
25 |
-
//generate new ID
|
26 |
-
foreach ($jobs as $jobkey => $jobvalue) {
|
27 |
-
if ($jobkey>$heighestid) $heighestid=$jobkey;
|
28 |
-
}
|
29 |
-
$newjobid=$heighestid+1;
|
30 |
-
|
31 |
-
$jobs[$newjobid]=$jobs[$jobid];
|
32 |
-
$jobs[$newjobid]['name']=__('Copy of','backwpup').' '.$jobs[$newjobid]['name'];
|
33 |
-
$jobs[$newjobid]['activated']=false;
|
34 |
-
update_option('backwpup_jobs',$jobs); //Save Settings
|
35 |
}
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
header("Content-Disposition: attachment; filename=".basename($backupfile).";");
|
61 |
-
header("Content-Transfer-Encoding: binary");
|
62 |
-
header("Content-Length: ".filesize($backupfile));
|
63 |
-
@readfile($backupfile);
|
64 |
-
} else {
|
65 |
-
header('HTTP/1.0 404 Not Found');
|
66 |
-
die(__('File does not exist.', 'backwpup'));
|
67 |
-
}
|
68 |
}
|
69 |
-
|
70 |
-
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
}
|
78 |
-
$jobid=$heighestid+1;
|
79 |
-
} else {
|
80 |
-
$jobid=1;
|
81 |
}
|
|
|
|
|
|
|
82 |
}
|
|
|
83 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
|
85 |
-
|
86 |
-
|
87 |
-
$
|
88 |
-
|
89 |
-
|
90 |
-
$jobs[$jobid]['
|
91 |
-
|
92 |
-
|
93 |
-
$
|
94 |
-
$
|
95 |
-
|
96 |
-
$
|
97 |
-
$jobs[$jobid]['fileexclude']=str_replace('\\','/',stripslashes($_POST['fileexclude']));
|
98 |
-
$jobs[$jobid]['dirinclude']=str_replace('\\','/',stripslashes($_POST['dirinclude']));
|
99 |
-
$jobs[$jobid]['backuproot']= $_POST['backuproot']==1 ? true : false;
|
100 |
-
$jobs[$jobid]['backupcontent']= $_POST['backupcontent']==1 ? true : false;
|
101 |
-
$jobs[$jobid]['backupplugins']= $_POST['backupplugins']==1 ? true : false;
|
102 |
-
$jobs[$jobid]['ftphost']=$_POST['ftphost'];
|
103 |
-
$jobs[$jobid]['ftpuser']=$_POST['ftpuser'];
|
104 |
-
$jobs[$jobid]['ftppass']=$_POST['ftppass'];
|
105 |
-
$jobs[$jobid]['ftpdir']=str_replace('\\','/',stripslashes($_POST['ftpdir']));
|
106 |
-
$jobs[$jobid]['ftpmaxbackups']=abs((int)$_POST['ftpmaxbackups']);
|
107 |
-
|
108 |
-
update_option('backwpup_jobs',$jobs); //Save Settings
|
109 |
-
if ($time=wp_next_scheduled('backwpup_cron',array('jobid'=>$jobid))) {
|
110 |
-
wp_unschedule_event($time,'backwpup_cron',array('jobid'=>$jobid));
|
111 |
-
}
|
112 |
-
if ($jobs[$jobid]['activated']) {
|
113 |
-
wp_schedule_event($jobs[$jobid]['scheduletime'], 'backwpup_int_'.$jobid, 'backwpup_cron',array('jobid'=>$jobid));
|
114 |
-
}
|
115 |
-
if (!empty($_POST['change'])) {
|
116 |
-
$_REQUEST['action']='edit';
|
117 |
-
$_REQUEST['jobid']=$jobid;
|
118 |
-
} else {
|
119 |
-
$_REQUEST['action']='';
|
120 |
-
}
|
121 |
}
|
122 |
-
|
|
|
123 |
?>
|
1 |
<?php
|
2 |
+
if ($_REQUEST['action2']!='-1' and !empty($_REQUEST['doaction2']))
|
3 |
+
$_REQUEST['action']=$_REQUEST['action2'];
|
4 |
|
5 |
+
switch($_REQUEST['action']) {
|
6 |
+
case 'delete': //Delete Job
|
7 |
+
$jobs=get_option('backwpup_jobs');
|
8 |
+
if (is_Array($_POST['jobs'])) {
|
9 |
+
check_admin_referer('actions-jobs');
|
10 |
+
foreach ($_POST['jobs'] as $jobid) {
|
11 |
+
unset($jobs[$jobid]);
|
12 |
+
if ($time=wp_next_scheduled('backwpup_cron',array('jobid'=>$jobid))) {
|
13 |
+
wp_unschedule_event($time,'backwpup_cron',array('jobid'=>$jobid));
|
14 |
+
}
|
15 |
+
}
|
16 |
+
} else {
|
17 |
+
$jobid = (int) $_GET['jobid'];
|
18 |
+
check_admin_referer('delete-job_' . $jobid);
|
19 |
unset($jobs[$jobid]);
|
|
|
20 |
if ($time=wp_next_scheduled('backwpup_cron',array('jobid'=>$jobid))) {
|
21 |
wp_unschedule_event($time,'backwpup_cron',array('jobid'=>$jobid));
|
22 |
}
|
23 |
}
|
24 |
+
update_option('backwpup_jobs',$jobs);
|
25 |
+
$_REQUEST['action']='';
|
26 |
+
break;
|
27 |
+
case 'delete-logs': //Delete Log
|
28 |
+
if (is_Array($_POST['logs'])) {
|
29 |
+
check_admin_referer('actions-logs');
|
30 |
+
foreach ($_POST['logs'] as $timestamp) {
|
31 |
+
$backupfile=$wpdb->get_var("SELECT backupfile FROM ".$wpdb->backwpup_logs." WHERE logtime=".$timestamp);
|
32 |
+
if (is_file($backupfile))
|
33 |
+
unlink($backupfile);
|
34 |
+
$wpdb->query("DELETE FROM ".$wpdb->backwpup_logs." WHERE logtime=".$timestamp);
|
35 |
+
}
|
36 |
+
} else {
|
37 |
+
$timestamp = (int) $_GET['log'];
|
38 |
+
check_admin_referer('delete-log_' . $timestamp);
|
39 |
+
$backupfile=$wpdb->get_var("SELECT backupfile FROM ".$wpdb->backwpup_logs." WHERE logtime=".$timestamp);
|
40 |
if (is_file($backupfile))
|
41 |
unlink($backupfile);
|
42 |
+
$wpdb->query("DELETE FROM ".$wpdb->backwpup_logs." WHERE logtime=".$timestamp);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
}
|
44 |
+
$_REQUEST['action']='logs';
|
45 |
+
break;
|
46 |
+
case 'savecfg': //Save config form Setings page
|
47 |
+
check_admin_referer('backwpup-cfg');
|
48 |
+
$cfg=get_option('backwpup'); //Load Settings
|
49 |
+
$cfg['mailmethod']=$_POST['mailmethod'];
|
50 |
+
$cfg['mailsendmail']=str_replace('\\','/',stripslashes($_POST['mailsendmail']));
|
51 |
+
$cfg['mailsecure']=$_POST['mailsecure'];
|
52 |
+
$cfg['mailhost']=$_POST['mailhost'];
|
53 |
+
$cfg['mailuser']=$_POST['mailuser'];
|
54 |
+
$cfg['mailpass']=base64_encode($_POST['mailpass']);
|
55 |
+
$cfg['memorylimit']=$_POST['memorylimit'];
|
56 |
+
$cfg['maxexecutiontime']=$_POST['maxexecutiontime'];
|
57 |
+
$cfg['disablewpcron']=$_POST['disablewpcron']==1 ? true : false;
|
58 |
+
update_option('backwpup',$cfg); //Save Settings
|
59 |
+
$_REQUEST['action']='settings';
|
60 |
+
break;
|
61 |
+
case 'copy': //Copy Job
|
62 |
+
$jobid = (int) $_GET['jobid'];
|
63 |
+
check_admin_referer('copy-job_'.$jobid);
|
64 |
+
$jobs=get_option('backwpup_jobs');
|
65 |
+
//generate new ID
|
66 |
+
foreach ($jobs as $jobkey => $jobvalue) {
|
67 |
+
if ($jobkey>$heighestid) $heighestid=$jobkey;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
69 |
+
$newjobid=$heighestid+1;
|
70 |
+
$jobs[$newjobid]=$jobs[$jobid];
|
71 |
+
$jobs[$newjobid]['name']=__('Copy of','backwpup').' '.$jobs[$newjobid]['name'];
|
72 |
+
$jobs[$newjobid]['activated']=false;
|
73 |
+
update_option('backwpup_jobs',$jobs);
|
74 |
+
$_REQUEST['action']='';
|
75 |
+
break;
|
76 |
+
case 'download': //Download Backup
|
77 |
+
$log = (int) $_GET['log'];
|
78 |
+
check_admin_referer('download-backup_'.$log);
|
79 |
+
$backupfile=$wpdb->get_var("SELECT backupfile FROM ".$wpdb->backwpup_logs." WHERE logtime=".$logtime);
|
80 |
+
if (is_file($backupfile)) {
|
81 |
+
header("Pragma: public");
|
82 |
+
header("Expires: 0");
|
83 |
+
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
|
84 |
+
header("Content-Type: application/force-download");
|
85 |
+
header("Content-Type: application/octet-stream");
|
86 |
+
header("Content-Type: application/download");
|
87 |
+
header("Content-Disposition: attachment; filename=".basename($backupfile).";");
|
88 |
+
header("Content-Transfer-Encoding: binary");
|
89 |
+
header("Content-Length: ".filesize($backupfile));
|
90 |
+
@readfile($backupfile);
|
91 |
+
} else {
|
92 |
+
header('HTTP/1.0 404 Not Found');
|
93 |
+
die(__('File does not exist.', 'backwpup'));
|
94 |
+
}
|
95 |
+
$_REQUEST['action']='logs';
|
96 |
+
break;
|
97 |
+
case 'saveeditjob': //Save Job settings
|
98 |
+
$jobid = (int) $_POST['jobid'];
|
99 |
+
check_admin_referer('edit-job');
|
100 |
+
$jobs=get_option('backwpup_jobs'); //Load Settings
|
101 |
|
102 |
+
if (empty($jobid)) { //generate a new id for new job
|
103 |
+
if (is_array($jobs)) {
|
104 |
+
foreach ($jobs as $jobkey => $jobvalue) {
|
105 |
+
if ($jobkey>$heighestid) $heighestid=$jobkey;
|
|
|
|
|
|
|
|
|
106 |
}
|
107 |
+
$jobid=$heighestid+1;
|
108 |
+
} else {
|
109 |
+
$jobid=1;
|
110 |
}
|
111 |
+
}
|
112 |
|
113 |
+
$jobs[$jobid]['type']= $_POST['type'];
|
114 |
+
$jobs[$jobid]['name']= esc_html($_POST['name']);
|
115 |
+
$jobs[$jobid]['activated']= $_POST['activated']==1 ? true : false;
|
116 |
+
$jobs[$jobid]['scheduletime']=mktime($_POST['schedulehour'],$_POST['scheduleminute'],0,$_POST['schedulemonth'],$_POST['scheduleday'],$_POST['scheduleyear']);
|
117 |
+
$jobs[$jobid]['scheduleintervaltype']=$_POST['scheduleintervaltype'];
|
118 |
+
$jobs[$jobid]['scheduleintervalteimes']=$_POST['scheduleintervalteimes'];
|
119 |
+
$jobs[$jobid]['scheduleinterval']=$_POST['scheduleintervaltype']*$_POST['scheduleintervalteimes'];
|
120 |
+
$jobs[$jobid]['backupdir']= untrailingslashit(str_replace('\\','/',stripslashes($_POST['backupdir'])));
|
121 |
+
$jobs[$jobid]['maxbackups']=abs((int)$_POST['maxbackups']);
|
122 |
+
$jobs[$jobid]['mailaddress']=sanitize_email($_POST['mailaddress']);
|
123 |
+
$jobs[$jobid]['mailefilesize']=(float)$_POST['mailefilesize'];
|
124 |
+
$jobs[$jobid]['dbexclude']=array_unique((array)$_POST['dbexclude']);
|
125 |
+
$jobs[$jobid]['fileexclude']=str_replace('\\','/',stripslashes($_POST['fileexclude']));
|
126 |
+
$jobs[$jobid]['dirinclude']=str_replace('\\','/',stripslashes($_POST['dirinclude']));
|
127 |
+
$jobs[$jobid]['backuproot']= $_POST['backuproot']==1 ? true : false;
|
128 |
+
$jobs[$jobid]['backupcontent']= $_POST['backupcontent']==1 ? true : false;
|
129 |
+
$jobs[$jobid]['backupplugins']= $_POST['backupplugins']==1 ? true : false;
|
130 |
+
$jobs[$jobid]['mailerroronly']= $_POST['mailerroronly']==1 ? true : false;
|
131 |
+
$jobs[$jobid]['ftphost']=$_POST['ftphost'];
|
132 |
+
$jobs[$jobid]['ftpuser']=$_POST['ftpuser'];
|
133 |
+
$jobs[$jobid]['ftppass']=base64_encode($_POST['ftppass']);
|
134 |
+
$jobs[$jobid]['ftpdir']=str_replace('\\','/',stripslashes($_POST['ftpdir']));
|
135 |
+
$jobs[$jobid]['ftpmaxbackups']=abs((int)$_POST['ftpmaxbackups']);
|
136 |
|
137 |
+
update_option('backwpup_jobs',$jobs); //Save Settings
|
138 |
+
if ($time=wp_next_scheduled('backwpup_cron',array('jobid'=>$jobid))) {
|
139 |
+
wp_unschedule_event($time,'backwpup_cron',array('jobid'=>$jobid));
|
140 |
+
}
|
141 |
+
if ($jobs[$jobid]['activated']) {
|
142 |
+
wp_schedule_event($jobs[$jobid]['scheduletime'], 'backwpup_int_'.$jobid, 'backwpup_cron',array('jobid'=>$jobid));
|
143 |
+
}
|
144 |
+
if (!empty($_POST['change'])) {
|
145 |
+
$_REQUEST['action']='edit';
|
146 |
+
$_REQUEST['jobid']=$jobid;
|
147 |
+
} else {
|
148 |
+
$_REQUEST['action']='';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
}
|
150 |
+
break;
|
151 |
+
}
|
152 |
?>
|
app/options-settings.php
CHANGED
@@ -76,10 +76,20 @@ if (!empty($cfg['mailsendmail']))
|
|
76 |
$cfg['mailsendmail']='/usr/sbin/sendmail';
|
77 |
?><br />
|
78 |
<?PHP _e('SMTP Username:','backwpup'); ?><input name="mailuser" type="text" value="<?PHP echo $cfg['mailuser'];?>" class="user" /><br />
|
79 |
-
<?PHP _e('SMTP Password:','backwpup'); ?><input name="mailpass" type="password" value="<?PHP echo $cfg['mailpass'];?>" class="password" /><br />
|
80 |
</td>
|
81 |
</tr>
|
82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
|
84 |
</table>
|
85 |
|
76 |
$cfg['mailsendmail']='/usr/sbin/sendmail';
|
77 |
?><br />
|
78 |
<?PHP _e('SMTP Username:','backwpup'); ?><input name="mailuser" type="text" value="<?PHP echo $cfg['mailuser'];?>" class="user" /><br />
|
79 |
+
<?PHP _e('SMTP Password:','backwpup'); ?><input name="mailpass" type="password" value="<?PHP echo base64_decode($cfg['mailpass']);?>" class="password" /><br />
|
80 |
</td>
|
81 |
</tr>
|
82 |
|
83 |
+
<tr valign="top">
|
84 |
+
<th scope="row"><label for="jobname"><?PHP _e('Disable WP-Cron:','backwpup'); ?></label></th>
|
85 |
+
<td>
|
86 |
+
<input class="checkbox" type="checkbox"<?php checked($cfg['disablewpcron'],true,true);?> name="disablewpcron" value="1"/>
|
87 |
+
<?PHP _e('Use Cron job of Hoster and disable WP_Cron','backwpup'); ?><br />
|
88 |
+
<?PHP _e('You must set up a cron job that calls:','backwpup'); ?><br />
|
89 |
+
<i> php -q <?PHP echo ABSPATH.'wp-cron.php'; ?></i><br />
|
90 |
+
<?PHP _e('or URL:','backwpup'); ?> <i><?PHP echo trailingslashit(get_option('siteurl')).'wp-cron.php'; ?></i><br />
|
91 |
+
</td>
|
92 |
+
</tr>
|
93 |
|
94 |
</table>
|
95 |
|
app/options.php
CHANGED
@@ -68,7 +68,7 @@
|
|
68 |
</td>
|
69 |
<td class="column-type">
|
70 |
<?PHP
|
71 |
-
|
72 |
?>
|
73 |
</td>
|
74 |
<td class="column-next">
|
68 |
</td>
|
69 |
<td class="column-type">
|
70 |
<?PHP
|
71 |
+
backwpup_backup_types($jobvalue['type'],true);
|
72 |
?>
|
73 |
</td>
|
74 |
<td class="column-next">
|
backwpup.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: BackWPup
|
|
4 |
Plugin URI: http://danielhuesken.de/portfolio/backwpup/
|
5 |
Description: Backup and more of your WordPress Blog Database and Files.
|
6 |
Author: Daniel Hüsken
|
7 |
-
Version: 0.6.
|
8 |
Author URI: http://danielhuesken.de
|
9 |
Text Domain: backwpup
|
10 |
Domain Path: /lang/
|
@@ -28,11 +28,10 @@ Domain Path: /lang/
|
|
28 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
29 |
*/
|
30 |
|
31 |
-
|
32 |
//Set plugin dirname
|
33 |
define('BACKWPUP_PLUGIN_DIR', dirname(plugin_basename(__FILE__)));
|
34 |
//Set Plugin Version
|
35 |
-
define('BACKWPUP_VERSION', '0.6.
|
36 |
//BackWPup Log Table Name
|
37 |
global $wpdb;
|
38 |
$wpdb->backwpup_logs = $wpdb->prefix.'backwpup_logs';
|
@@ -42,17 +41,17 @@ load_plugin_textdomain('backwpup', false, BACKWPUP_PLUGIN_DIR.'/lang');
|
|
42 |
//Load functions file
|
43 |
require_once(WP_PLUGIN_DIR.'/'.BACKWPUP_PLUGIN_DIR.'/app/functions.php');
|
44 |
//Plugin activate
|
45 |
-
register_activation_hook(__FILE__,
|
46 |
//Plugin deactivate
|
47 |
-
register_deactivation_hook(__FILE__,
|
48 |
//Plugin uninstall
|
49 |
-
register_uninstall_hook(__FILE__,
|
50 |
|
51 |
//Version check
|
52 |
if (version_compare($wp_version, '2.8', '<')) { // Let only Activate on WordPress Version 2.8 or heiger
|
53 |
add_action('admin_notices', create_function('', 'echo \'<div id="message" class="error fade"><p><strong>' . __('Sorry, BackWPup works only under WordPress 2.8 or higher','backwpup') . '</strong></p></div>\';'));
|
54 |
} else {
|
55 |
//Plugin init
|
56 |
-
add_action('plugins_loaded',
|
57 |
}
|
58 |
?>
|
4 |
Plugin URI: http://danielhuesken.de/portfolio/backwpup/
|
5 |
Description: Backup and more of your WordPress Blog Database and Files.
|
6 |
Author: Daniel Hüsken
|
7 |
+
Version: 0.6.3
|
8 |
Author URI: http://danielhuesken.de
|
9 |
Text Domain: backwpup
|
10 |
Domain Path: /lang/
|
28 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
29 |
*/
|
30 |
|
|
|
31 |
//Set plugin dirname
|
32 |
define('BACKWPUP_PLUGIN_DIR', dirname(plugin_basename(__FILE__)));
|
33 |
//Set Plugin Version
|
34 |
+
define('BACKWPUP_VERSION', '0.6.3');
|
35 |
//BackWPup Log Table Name
|
36 |
global $wpdb;
|
37 |
$wpdb->backwpup_logs = $wpdb->prefix.'backwpup_logs';
|
41 |
//Load functions file
|
42 |
require_once(WP_PLUGIN_DIR.'/'.BACKWPUP_PLUGIN_DIR.'/app/functions.php');
|
43 |
//Plugin activate
|
44 |
+
register_activation_hook(__FILE__, 'backwpup_plugin_activate');
|
45 |
//Plugin deactivate
|
46 |
+
register_deactivation_hook(__FILE__, 'backwpup_plugin_deactivate');
|
47 |
//Plugin uninstall
|
48 |
+
register_uninstall_hook(__FILE__, 'backwpup_plugin_uninstall');
|
49 |
|
50 |
//Version check
|
51 |
if (version_compare($wp_version, '2.8', '<')) { // Let only Activate on WordPress Version 2.8 or heiger
|
52 |
add_action('admin_notices', create_function('', 'echo \'<div id="message" class="error fade"><p><strong>' . __('Sorry, BackWPup works only under WordPress 2.8 or higher','backwpup') . '</strong></p></div>\';'));
|
53 |
} else {
|
54 |
//Plugin init
|
55 |
+
add_action('plugins_loaded', 'backwpup_init');
|
56 |
}
|
57 |
?>
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: danielhuesken
|
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=daniel%40huesken-net%2ede&item_name=Daniel%20Huesken%20Plugin%20Donation&item_number=BackWPup&no_shipping=0&no_note=1&tax=0¤cy_code=EUR&lc=DE&bn=PP%2dDonationsBF&charset=UTF%2d8
|
4 |
Tags: backup, admin, file, Database, mysql, cron
|
5 |
Requires at least: 2.8
|
6 |
-
Tested up to: 2.8.
|
7 |
-
Stable tag: 0.6.
|
8 |
|
9 |
Backup and more of your WordPress Blog Database and Files
|
10 |
|
@@ -48,6 +48,13 @@ You must import the Database Dump with Charaktercoding:latin1
|
|
48 |
1. Job Page
|
49 |
|
50 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
= 0.6.2 =
|
52 |
* Added setting for memory_limit if needed
|
53 |
* Added setting for max. script execution time
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=daniel%40huesken-net%2ede&item_name=Daniel%20Huesken%20Plugin%20Donation&item_number=BackWPup&no_shipping=0&no_note=1&tax=0¤cy_code=EUR&lc=DE&bn=PP%2dDonationsBF&charset=UTF%2d8
|
4 |
Tags: backup, admin, file, Database, mysql, cron
|
5 |
Requires at least: 2.8
|
6 |
+
Tested up to: 2.8.2
|
7 |
+
Stable tag: 0.6.3
|
8 |
|
9 |
Backup and more of your WordPress Blog Database and Files
|
10 |
|
48 |
1. Job Page
|
49 |
|
50 |
== Changelog ==
|
51 |
+
= 0.6.3 =
|
52 |
+
* use ftp_row for login and other commands
|
53 |
+
* Add option to send only email on erros
|
54 |
+
* Internal struckture changes
|
55 |
+
* Add option to diesable WP-Cron and use Hoster cron
|
56 |
+
* bug fixes
|
57 |
+
|
58 |
= 0.6.2 =
|
59 |
* Added setting for memory_limit if needed
|
60 |
* Added setting for max. script execution time
|