BackWPup – WordPress Backup Plugin - Version 0.6.3

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 Icon 128x128 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 CHANGED
@@ -1,7 +1,7 @@
1
  <?PHP
2
  //Delete old Logs/Backupfiles
3
  if (!empty($jobs[$jobid]['maxbackups'])) {
4
- BackWPupFunctions::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,20 +17,20 @@ if (!empty($jobs[$jobid]['maxbackups'])) {
17
  }
18
  }
19
  if ($countdelbackups>0)
20
- BackWPupFunctions::joblog($logtime,$countdelbackups.' '.__('old backup files deleted!!!','backwpup'));
21
  if ($countdellogs>0)
22
- BackWPupFunctions::joblog($logtime,$countdellogs.' '.__('old logs deleted!!!','backwpup'));
23
  }
24
 
25
  if (is_file($backupfile)) {
26
- BackWPupFunctions::joblog($logtime,sprintf(__('Backup zip filesize is %1s','backwpup'),BackWPupFunctions::formatBytes(filesize($backupfile))));
27
  }
28
 
29
- if (is_file(BackWPupFunctions::get_temp_dir().'backwpup/'.DB_NAME.'.sql') ) { //delete sql temp file
30
- unlink(BackWPupFunctions::get_temp_dir().'backwpup/'.DB_NAME.'.sql');
31
  }
32
 
33
- if (empty($jobs[$jobid]['backupdir']) and (dirname($backupfile)!=BackWPupFunctions::get_temp_dir().'backwpup') and is_file($backupfile) ) { //delete backup file in temp dir
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
- BackWPupFunctions::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
- 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
- ob_end_clean();
 
6
 
7
- define( 'PCLZIP_TEMPORARY_DIR', BackWPupFunctions::get_temp_dir().'backwpup/' );
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=BackWPupFunctions::get_temp_dir().'backwpup/backwpup_'.$jobid.'_'.date('Y-m-d_H-i-s',$jobs[$jobid]['starttime']).'.zip';
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
- BackWPupFunctions::joblog($logtime,__('WARNING:','backwpup').' '.sprintf(__('PHP Safe Mode is on!!! Max exec time is %1$s sec.','backwpup'),ini_get('max_execution_time')));
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
- BackWPupFunctions::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')));
46
  }
47
 
48
  //Look for and Crate Temp dir and secure
49
- BackWPupFunctions::joblog($logtime,sprintf(__('Temp dir is %1$s.','backwpup'),BackWPupFunctions::get_temp_dir().'backwpup'));
50
 
51
- if (!is_dir(BackWPupFunctions::get_temp_dir().'backwpup')) {
52
- if (!mkdir(BackWPupFunctions::get_temp_dir().'backwpup',0777,true)) {
53
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not create Temp dir','backwpup'));
54
  require_once('after.php');
55
  return false;
56
  }
57
  }
58
- if (!is_writeable(BackWPupFunctions::get_temp_dir().'backwpup')) {
59
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not write to Temp dir','backwpup'));
60
  require_once('after.php');
61
  return false;
62
  }
63
- if (!is_file(BackWPupFunctions::get_temp_dir().'backwpup/.htaccess')) {
64
- if($file = @fopen(BackWPupFunctions::get_temp_dir().'backwpup/.htaccess', 'w')) {
65
  fwrite($file, "Order allow,deny\ndeny from all");
66
  fclose($file);
67
  }
68
  }
69
- if (!is_file(BackWPupFunctions::get_temp_dir().'backwpup/index.html')) {
70
- if($file = @fopen(BackWPupFunctions::get_temp_dir().'backwpup/index.html', 'w')) {
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
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not create Backup dir','backwpup'));
82
  require_once('after.php');
83
  return false;
84
  }
85
  }
86
  if (!is_writeable($jobs[$jobid]['backupdir'])) {
87
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not write to Backup dir','backwpup'));
88
  require_once('after.php');
89
  return false;
90
  }
@@ -100,7 +102,7 @@ if (!empty($backupfile)) {
100
  fclose($file);
101
  }
102
  }
103
- BackWPupFunctions::joblog($logtime,__('Backup zip file save to:','backwpup').' '.$backupfile);
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
- BackWPupFunctions::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,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
- BackWPupFunctions::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
- BackWPupFunctions::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
- BackWPupFunctions::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
- BackWPupFunctions::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
- BackWPupFunctions::joblog($logtime,__('Database check done!','backwpup'));
30
  } else {
31
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('No Tables to check','backwpup'));
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
- BackWPupFunctions::joblog($logtime,__('Run Database Backup...','backwpup'));
3
 
4
- function dump_table($table,$status,$file) {
 
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
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.sprintf(__('BackWPup database error %1$s for query %2$s','backwpup'), $sqlerr, $sqlerr->last_query));
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
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.sprintf(__('BackWPup database error %1$s for query %2$s','backwpup'), $sqlerr, $sqlerr->last_query));
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
- BackWPupFunctions::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(BackWPupFunctions::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,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
- BackWPupFunctions::joblog($logtime,__('Database table to Backup: ','backwpup').' '.$table);
110
- BackWPupFunctions::needfreememory(($status[$table]['Data_length']+$status[$table]['Index_length'])*1.3); //get mor memory if needed
111
- fwrite($file, dump_table($table,$status[$table],$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
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not create Database Backup file','backwpup'));
126
  }
127
  } else {
128
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('No Tables to Backup','backwpup'));
129
  }
130
 
131
 
132
- BackWPupFunctions::joblog($logtime,__('Database backup done!','backwpup'));
133
 
134
- if ($jobs[$jobid]['type']=='DB' and is_file(BackWPupFunctions::get_temp_dir().'backwpup/'.DB_NAME.'.sql')) {
135
- BackWPupFunctions::needfreememory(8388608); //8MB free memory for zip
136
- BackWPupFunctions::joblog($logtime,__('Database file size:','backwpup').' '.BackWPupFunctions::formatBytes(filesize(BackWPupFunctions::get_temp_dir().'backwpup/'.DB_NAME.'.sql')));
137
- BackWPupFunctions::joblog($logtime,__('Create Zip file from dump...','backwpup'));
138
  $zipbackupfile = new PclZip($backupfile);
139
- if (0==$zipbackupfile -> create(BackWPupFunctions::get_temp_dir().'backwpup/'.DB_NAME.'.sql',PCLZIP_OPT_REMOVE_ALL_PATH,PCLZIP_OPT_ADD_TEMP_FILE_ON)) {
140
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Database Zip file create:','backwpup').' '.$zipbackupfile->errorInfo(true));
141
  $joberror=true;
142
  }
143
- BackWPupFunctions::joblog($logtime,__('Zip file created...','backwpup'));
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
- BackWPupFunctions::joblog($logtime,__('Connected by SSL to FTP server:','backwpup').' '.$jobs[$jobid]['ftphost']);
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
- BackWPupFunctions::joblog($logtime,__('Connected insecure to FTP server:','backwpup').' '.$jobs[$jobid]['ftphost']);
19
  $type = ftp_systype($ftp_conn_id);
20
  }
21
  }
22
 
23
  if ($type) {
24
- BackWPupFunctions::joblog($logtime,__('FTP server System is:','backwpup').' '.$type);
25
- if (ftp_login($ftp_conn_id, $jobs[$jobid]['ftpuser'], $jobs[$jobid]['ftppass'])) {
26
- BackWPupFunctions::joblog($logtime,__('Logt on to FTP server with user:','backwpup').' '.$jobs[$jobid]['ftpuser']);
27
-
28
- if (ftp_pasv($ftp_conn_id, true)) //set passive mode
29
- BackWPupFunctions::joblog($logtime,__('FTP set to passiv.','backwpup'));
30
- else
31
- BackWPupFunctions::joblog($logtime,__('WARNING:','backwpup').' '.__('Can not set FTP Server to passiv!','backwpup'));
32
-
33
- if (ftp_alloc($ftp_conn_id, filesize($backupfile), $result)) //allocate file spase on ftp server
34
- BackWPupFunctions::joblog($logtime,__('Space successfully allocated on FTP server. Sending backup file.','backwpup'));
35
- else
36
- BackWPupFunctions::joblog($logtime,__('WARNING:','backwpup').' '.__('Unable to allocate space on server. FTP Server said:','backwpup').' '.$result);
 
 
 
37
 
38
  if (ftp_put($ftp_conn_id, trailingslashit($jobs[$jobid]['ftpdir']).basename($backupfile), $backupfile, FTP_BINARY)) //transvere file
39
- BackWPupFunctions::joblog($logtime,__('Backup File transfered to FTP Server:','backwpup').' '.trailingslashit($jobs[$jobid]['ftpdir']).basename($backupfile));
40
  else
41
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not tranfer backup to FTP server.','backwpup'));
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
- rsort($backupfilelist);
50
- $numdeltefiles=0;
51
- for ($i=$jobs[$jobid]['ftpmaxbackups'];$i<sizeof($backupfilelist);$i++) {
52
- if (ftp_delete($ftp_conn_id, trailingslashit($jobs[$jobid]['ftpdir']).$backupfilelist[$i])) //delte files on ftp
 
53
  $numdeltefiles++;
54
- else
55
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not delete file on FTP Server:','backwpup').' '.trailingslashit($jobs[$jobid]['ftpdir']).$backupfilelist[$i]);
 
 
 
56
  }
57
- if ($numdeltefiles>0)
58
- BackWPupFunctions::joblog($logtime,$numdeltefiles.' '.__('files deleted on FTP Server:','backwpup'));
59
  }
60
  }
61
- } else {
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
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not connect to FTP server:','backwpup').' '.$jobs[$jobid]['ftphost']);
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
- if (!empty($jobs[$jobid]['mailaddress'])) {
 
 
 
 
 
 
 
3
  //maillig method
4
- add_action('phpmailer_init', array('BackWPupFunctions', 'use_mail_method'));
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 (!BackWPupFunctions::needfreememory(filesize($backupfile)*4)) {
13
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not increase Memory for sending Backup Archive by Mail','backwpup'));
14
  unset($mailfiles);
15
  }
16
  } else {
17
  if (!empty($jobs[$jobid]['backupdir'])) {
18
- BackWPupFunctions::joblog($logtime,__('WARNING:','backwpup').' '.__('Backup Archive too big for sendig by mail','backwpup'));
19
  } else {
20
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Backup Archive too big for sendig by mail','backwpup'));
21
  }
22
  unset($mailfiles);
23
  }
24
  }
25
- if (wp_mail($jobs[$jobid]['mailaddress'],__('BackWPup Job:','backwpup').' '.$jobs[$jobid]['name'].' '.date('Y-m-d H:i',$logtime) ,$wpdb->get_var("SELECT log FROM ".$wpdb->backwpup_logs." WHERE logtime=".$logtime),'',$mailfiles)) {
26
- BackWPupFunctions::joblog($logtime,__('Mail send!!!','backwpup'));
27
  } else {
28
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Can not send mail:','backwpup').' '.$phpmailer->ErrorInfo);
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
- BackWPupFunctions::joblog($logtime,__('Run file backup...','backwpup'));
5
- BackWPupFunctions::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;
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
- BackWPupFunctions::joblog($logtime,__('File to Backup:','backwpup').' '.$folder . '/' . $file.' '.BackWPupFunctions::formatBytes($filezise));
34
  } else {
35
- BackWPupFunctions::joblog($logtime,__('WARNING:','backwpup').' '.__('Can not read file:','backwpup').' '.$folder . '/' . $file);
36
  }
37
  } else {
38
- BackWPupFunctions::joblog($logtime,__('WARNING:','backwpup').' '.__('Is not a file or directory:','backwpup').' '.$folder . '/' . $file);
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[]=BackWPupFunctions::get_temp_dir().'backwpup';
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
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('No files to Backup','backwpup'));
81
  unset($filelist); //clean vars
82
  } else {
83
- BackWPupFunctions::joblog($logtime,__('Size off all files:','backwpup').' '.BackWPupFunctions::formatBytes($backwpup_allfilezise));
84
  }
85
 
86
  //Create Zip File
87
  if (!empty($filelist)) {
88
- BackWPupFunctions::needfreememory(8388608); //8MB free memory for zip
89
- BackWPupFunctions::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
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Zip file create:','backwpup').' '.$zipbackupfile->errorInfo(true));
93
  }
94
  unset($filelist);
95
  if ($jobs[$jobid]['type']=='DB+FILE') {
96
- BackWPupFunctions::joblog($logtime,__('Database file size:','backwpup').' '.BackWPupFunctions::formatBytes(filesize(BackWPupFunctions::get_temp_dir().'backwpup/'.DB_NAME.'.sql')));
97
- BackWPupFunctions::joblog($logtime,__('Add Database dump to Backup Zip file...','backwpup'));
98
- if (0==$zipbackupfile -> add(BackWPupFunctions::get_temp_dir().'backwpup/'.DB_NAME.'.sql',PCLZIP_OPT_REMOVE_ALL_PATH,PCLZIP_OPT_ADD_TEMP_FILE_ON)) {
99
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('Zip file create Add Database dump:','backwpup').' '.$zipbackupfile->errorInfo(true));
100
  }
101
  }
102
  unset($zipbackupfile);
103
- BackWPupFunctions::joblog($logtime,__('Backup Zip file create done!','backwpup'));
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
- BackWPupFunctions::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,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
- BackWPupFunctions::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
- BackWPupFunctions::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
- BackWPupFunctions::joblog($logtime,__('Database optimize done!','backwpup'));
24
  } else {
25
- BackWPupFunctions::joblog($logtime,__('ERROR:','backwpup').' '.__('No Tables to optimize','backwpup'));
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 menu_entry() {
19
- $hook = add_management_page(__('BackWPup','backwpup'), __('BackWPup','backwpup'), '10', 'BackWPup',array('BackWPupFunctions', 'options')) ;
20
- add_action('load-'.$hook, array('BackWPupFunctions', 'options_load'));
21
- add_contextual_help($hook,BackWPupFunctions::show_help());
22
  }
23
 
24
  // Help too display
25
- function show_help() {
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 options() {
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 options_load() {
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 plugin_uninstall() {
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 plugin_activate() {
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 TEXT NOT NULL default '',
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 plugin_deactivate() {
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 plugin_options_link($links) {
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 plugin_links($links, $file) {
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 intervals($schedules) {
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 dojob($args) {
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 needfreememory($memneed) {
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
- BackWPupFunctions::joblog($logtime,__('WARNING:','backwpup').' '.sprintf(__('PHP Safe Mode is on!!! Can not increse Memory Limit is %1$s','backwpup'),ini_get('memory_limit')));
301
  return false;
302
  }
303
  $newmemory=round((memory_get_usage()+$memneed)/1024/1024)+1;
304
  if ($oldmem=ini_set('memory_limit', $newmemory.'M'))
305
- BackWPupFunctions::joblog($logtime,sprintf(__('Memory incresed from %1$s to %2$s','backwpup'),$oldmem,ini_get('memory_limit')));
306
  else
307
- BackWPupFunctions::joblog($logtime,sprintf(__('ERROR:','backwpup').' '.__('Can not increse Memory Limit is %1$s','backwpup'),ini_get('memory_limit')));
308
  }
309
  return true;
310
  }
311
 
312
 
313
  //Make Log File for Jobs.
314
- function joblog($logtime,$entry) {
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
- echo date('Y-m-d H:i:s').": ".$entry." ".BackWPupFunctions::formatBytes(memory_get_peak_usage())."\n";
 
323
  flush();
324
- ob_flush();
325
  }
326
 
327
  //file size
328
- function formatBytes($bytes, $precision = 2) {
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 backup_types($type='',$echo=false) {
339
  switch($type) {
340
  case 'DB+FILE':
341
  $typename=__('Database &amp; File Backup','backwpup');
@@ -363,7 +297,7 @@ class BackWPupFunctions {
363
  }
364
 
365
  //Dashboard widget
366
- function dashboard_output() {
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
- BackWPupFunctions::backup_types($logvalue['type'],true);
376
  else
377
  echo $logvalue['jobname'];
378
  echo '</i>';
@@ -412,12 +346,12 @@ class BackWPupFunctions {
412
  }
413
 
414
  //add dashboard widget
415
- function add_dashboard() {
416
- wp_add_dashboard_widget( 'backwpup_dashboard_widget', 'BackWPup', array ('BackWPupFunctions', 'dashboard_output') );
417
  }
418
 
419
  //Sed mail send Method
420
- function use_mail_method() {
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=$cfg['mailpass'];
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 init() {
 
 
 
 
446
  //add Menu
447
- add_action('admin_menu', array('BackWPupFunctions', 'menu_entry'));
448
  //Additional links on the plugin page
449
  if (current_user_can(10))
450
- add_filter('plugin_action_links_'.BACKWPUP_PLUGIN_DIR.'/backwpup.php', array('BackWPupFunctions', 'plugin_options_link'));
451
  if (current_user_can('install_plugins'))
452
- add_filter('plugin_row_meta', array('BackWPupFunctions', 'plugin_links'),10,2);
453
  //add cron intervals
454
- add_filter('cron_schedules', array('BackWPupFunctions', 'intervals'));
455
  //Actions for Cron job
456
- add_action('backwpup_cron', array('BackWPupFunctions', 'dojob'));
457
  //add Dashboard widget
458
  if (current_user_can(10))
459
- add_action('wp_dashboard_setup', array('BackWPupFunctions', 'add_dashboard'));
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 &amp; 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 (BackWPupFunctions::backup_types() as $type) {
39
- echo '<option value="'.$type.'"'.selected($type,$jobs[$jobid]['type'],false).'>'.BackWPupFunctions::backup_types($type).'</option>';
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 dirs','backwpup'); ?></label></th><td>
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 extra dirs','backwpup'); ?></label></th><td>
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/dirs','backwpup'); ?></label></th><td>
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:', 'backwpup'); ?>
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('Backup 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,13 +158,13 @@ _e('Activate:', 'backwpup'); ?>
158
 
159
 
160
  <tr valign="top">
161
- <th scope="row"><label for="ftptransfer"><?PHP _e('Place 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 $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" /><?PHP _e('0=off','backwpup');?></span><br />
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
- BackWPupFunctions::backup_types($logvalue['type'],true);
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 BackWPupFunctions::formatBytes(filesize($logvalue['backupfile']));
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 BackWPupFunctions::dojob($jobid); ?>
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
- class BackWPupOptions {
4
-
5
- function delete_job($jobid) {
6
- $jobs=get_option('backwpup_jobs'); //Load Settings
 
 
 
 
 
 
 
 
 
 
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
- function delete_log($logtime) {
15
- global $wpdb;
16
- $backupfile=$wpdb->get_var("SELECT backupfile FROM ".$wpdb->backwpup_logs." WHERE logtime=".$logtime);
 
 
 
 
 
 
 
 
 
 
 
 
17
  if (is_file($backupfile))
18
  unlink($backupfile);
19
- $wpdb->query("DELETE FROM ".$wpdb->backwpup_logs." WHERE logtime=".$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
- function config() {
38
- $cfg=get_option('backwpup'); //Load Settings
39
- $cfg['mailmethod']=$_POST['mailmethod'];
40
- $cfg['mailsendmail']=str_replace('\\','/',stripslashes($_POST['mailsendmail']));
41
- $cfg['mailsecure']=$_POST['mailsecure'];
42
- $cfg['mailhost']=$_POST['mailhost'];
43
- $cfg['mailuser']=$_POST['mailuser'];
44
- $cfg['mailpass']=$_POST['mailpass'];
45
- $cfg['memorylimit']=$_POST['memorylimit'];
46
- $cfg['maxexecutiontime']=$_POST['maxexecutiontime'];
47
- update_option('backwpup',$cfg); //Save Settings
48
- }
49
-
50
- function download_backup($logtime) {
51
- global $wpdb;
52
- $backupfile=$wpdb->get_var("SELECT backupfile FROM ".$wpdb->backwpup_logs." WHERE logtime=".$logtime);
53
- if (is_file($backupfile)) {
54
- header("Pragma: public");
55
- header("Expires: 0");
56
- header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
57
- header("Content-Type: application/force-download");
58
- header("Content-Type: application/octet-stream");
59
- header("Content-Type: application/download");
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
- function edit_job($jobid) {
71
- $jobs=get_option('backwpup_jobs'); //Load Settings
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
- if (empty($jobid)) { //generate a new id for new job
74
- if (is_array($jobs)) {
75
- foreach ($jobs as $jobkey => $jobvalue) {
76
- if ($jobkey>$heighestid) $heighestid=$jobkey;
77
- }
78
- $jobid=$heighestid+1;
79
- } else {
80
- $jobid=1;
81
  }
 
 
 
82
  }
 
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
 
85
- $jobs[$jobid]['type']= $_POST['type'];
86
- $jobs[$jobid]['name']= esc_html($_POST['name']);
87
- $jobs[$jobid]['activated']= $_POST['activated']==1 ? true : false;
88
- $jobs[$jobid]['scheduletime']=mktime($_POST['schedulehour'],$_POST['scheduleminute'],0,$_POST['schedulemonth'],$_POST['scheduleday'],$_POST['scheduleyear']);
89
- $jobs[$jobid]['scheduleintervaltype']=$_POST['scheduleintervaltype'];
90
- $jobs[$jobid]['scheduleintervalteimes']=$_POST['scheduleintervalteimes'];
91
- $jobs[$jobid]['scheduleinterval']=$_POST['scheduleintervaltype']*$_POST['scheduleintervalteimes'];
92
- $jobs[$jobid]['backupdir']= untrailingslashit(str_replace('\\','/',stripslashes($_POST['backupdir'])));
93
- $jobs[$jobid]['maxbackups']=abs((int)$_POST['maxbackups']);
94
- $jobs[$jobid]['mailaddress']=sanitize_email($_POST['mailaddress']);
95
- $jobs[$jobid]['mailefilesize']=(float)$_POST['mailefilesize'];
96
- $jobs[$jobid]['dbexclude']=array_unique((array)$_POST['dbexclude']);
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
- BackWPupFunctions::backup_types($jobvalue['type'],true);
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&uuml;sken
7
- Version: 0.6.2
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.2');
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__, array('BackWPupFunctions', 'plugin_activate'));
46
  //Plugin deactivate
47
- register_deactivation_hook(__FILE__, array('BackWPupFunctions', 'plugin_deactivate'));
48
  //Plugin uninstall
49
- register_uninstall_hook(__FILE__, array('BackWPupFunctions', 'plugin_uninstall'));
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', array('BackWPupFunctions', 'init'));
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&uuml;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&currency_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.1
7
- Stable tag: 0.6.2
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&currency_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