BackWPup – WordPress Backup Plugin - Version 1.0.9

Version Description

  • change s3 class to hide warnigs
  • add option to make MySQL INSERTs shorter (smaler dump file size.)
  • add requerments checks
  • ajaxed S3 bucket selection in job settings
  • add S3 Buckt can made in job settings
Download this release

Release Info

Developer danielhuesken
Plugin Icon 128x128 BackWPup – WordPress Backup Plugin
Version 1.0.9
Comparing to
See all releases

Code changes from version 1.0.8 to 1.0.9

app/backwpup_dojob.php CHANGED
@@ -133,18 +133,19 @@ class backwpup_dojob {
133
  $this->backupfileformat=$this->job['fileformart'];
134
  //set Temp Dir
135
  $this->tempdir=trailingslashit($this->cfg['dirtemp']);
136
- if (empty($this->tempdir) or $this->tempdir=='/') {
137
- $rand = substr( md5( md5( SECURE_AUTH_KEY ) ), -5 );
138
- $this->tempdir=str_replace('\\','/',get_temp_dir().'backwpup-'.$rand.'/');
139
- }
140
  //set Backup Dir
141
  $this->backupdir=trailingslashit($this->job['backupdir']);
142
- if (empty($this->backupdir) or $this->backupdir=='/')
143
  $this->backupdir=$this->tempdir;
 
144
  //set Logs Dir
145
  $this->logdir=trailingslashit($this->cfg['dirlogs']);
146
- if (empty($this->logdir) or $this->logdir=='/')
147
- $this->logdir=$this->tempdir.'logs/';
 
 
148
  //set Backup file name only for jos that makes backups
149
  if (in_array('FILE',$this->todo) or in_array('DB',$this->todo) or in_array('WPEXP',$this->todo))
150
  $this->backupfile='backwpup_'.$this->jobid.'_'.date_i18n('Y-m-d_H-i-s').$this->backupfileformat;
@@ -171,10 +172,10 @@ class backwpup_dojob {
171
  //PHP Error handling
172
  set_error_handler("backwpup_joberrorhandler"); //set function for PHP error handling
173
  //check dirs
174
- if (!$this->_check_folders($this->tempdir))
175
- return false;
176
- if (!$this->_check_folders($this->backupdir))
177
- return false;
178
  //check max script execution tme
179
  if (!ini_get('safe_mode') or strtolower(ini_get('safe_mode'))=='off' or ini_get('safe_mode')=='0') {
180
  set_time_limit(0); //300 is most webserver time limit. 0= max time
@@ -417,7 +418,8 @@ class backwpup_dojob {
417
  $keys = array();
418
  $values = array();
419
  foreach($data as $key => $value) {
420
- $keys[] = "`".str_replace("�", "��", $key)."`"; // Add key to key list
 
421
  if($value === NULL) // Make Value NULL to string NULL
422
  $value = "NULL";
423
  elseif($value === "" or $value === false) // if empty or false Value make "" as Value
@@ -427,7 +429,11 @@ class backwpup_dojob {
427
  $values[] = $value;
428
  }
429
  // make data dump
430
- fwrite($file, "INSERT INTO `".$table."` ( ".implode(", ",$keys)." )\n\tVALUES ( ".implode(", ",$values)." );\n");
 
 
 
 
431
  }
432
  if ($status['Engine']=='MyISAM')
433
  fwrite($file, "/*!40000 ALTER TABLE ".$table." ENABLE KEYS */;\n");
@@ -612,8 +618,9 @@ class backwpup_dojob {
612
 
613
  if (!empty($this->job['fileexclude']))
614
  $backwpup_exclude=explode(',',trim($this->job['fileexclude']));
615
- //Exclude Temp dir
616
- $backwpup_exclude[]=$this->tempdir;
 
617
  //Exclude Backup dirs
618
  $jobs=get_option('backwpup_jobs');
619
  foreach($jobs as $jobsvale) {
@@ -1002,10 +1009,11 @@ class backwpup_dojob {
1002
  return false;
1003
  }
1004
 
1005
- if (!class_exists('S3')) require_once 'libs/S3.php';
 
1006
 
1007
  $s3 = new S3($this->job['awsAccessKey'], $this->job['awsSecretKey'], $this->job['awsSSL']);
1008
-
1009
  if (in_array($this->job['awsBucket'],$s3->listBuckets())) {
1010
  trigger_error(__('Connected to S3 Bucket:','backwpup').' '.$this->job['awsBucket'],E_USER_NOTICE);
1011
  //Transfer Backup to S3
133
  $this->backupfileformat=$this->job['fileformart'];
134
  //set Temp Dir
135
  $this->tempdir=trailingslashit($this->cfg['dirtemp']);
136
+ if (empty($this->tempdir) or $this->tempdir=='/')
137
+ $this->tempdir=str_replace('\\','/',trailingslashit(WP_CONTENT_DIR)).'uploads/';
 
 
138
  //set Backup Dir
139
  $this->backupdir=trailingslashit($this->job['backupdir']);
140
+ if (empty($this->backupdir) or $this->backupdir=='/') {
141
  $this->backupdir=$this->tempdir;
142
+ }
143
  //set Logs Dir
144
  $this->logdir=trailingslashit($this->cfg['dirlogs']);
145
+ if (empty($this->logdir) or $this->logdir=='/') {
146
+ $rand = substr( md5( md5( SECURE_AUTH_KEY ) ), -5 );
147
+ $this->logdir=str_replace('\\','/',trailingslashit(WP_CONTENT_DIR)).'backwpup-'.$rand.'-logs/';
148
+ }
149
  //set Backup file name only for jos that makes backups
150
  if (in_array('FILE',$this->todo) or in_array('DB',$this->todo) or in_array('WPEXP',$this->todo))
151
  $this->backupfile='backwpup_'.$this->jobid.'_'.date_i18n('Y-m-d_H-i-s').$this->backupfileformat;
172
  //PHP Error handling
173
  set_error_handler("backwpup_joberrorhandler"); //set function for PHP error handling
174
  //check dirs
175
+ if ($this->backupdir!=str_replace('\\','/',trailingslashit(WP_CONTENT_DIR)).'uploads/') {
176
+ if (!$this->_check_folders($this->backupdir))
177
+ return false;
178
+ }
179
  //check max script execution tme
180
  if (!ini_get('safe_mode') or strtolower(ini_get('safe_mode'))=='off' or ini_get('safe_mode')=='0') {
181
  set_time_limit(0); //300 is most webserver time limit. 0= max time
418
  $keys = array();
419
  $values = array();
420
  foreach($data as $key => $value) {
421
+ if (!$this->job['dbshortinsert'])
422
+ $keys[] = "`".str_replace("�", "��", $key)."`"; // Add key to key list
423
  if($value === NULL) // Make Value NULL to string NULL
424
  $value = "NULL";
425
  elseif($value === "" or $value === false) // if empty or false Value make "" as Value
429
  $values[] = $value;
430
  }
431
  // make data dump
432
+ if ($this->job['dbshortinsert'])
433
+ fwrite($file, "INSERT INTO `".$table."` VALUES ( ".implode(", ",$values)." );\n");
434
+ else
435
+ fwrite($file, "INSERT INTO `".$table."` ( ".implode(", ",$keys)." )\n\tVALUES ( ".implode(", ",$values)." );\n");
436
+
437
  }
438
  if ($status['Engine']=='MyISAM')
439
  fwrite($file, "/*!40000 ALTER TABLE ".$table." ENABLE KEYS */;\n");
618
 
619
  if (!empty($this->job['fileexclude']))
620
  $backwpup_exclude=explode(',',trim($this->job['fileexclude']));
621
+ //Exclude Temp Files
622
+ $backwpup_exclude[]=$this->tempdir.DB_NAME.'.sql';
623
+ $backwpup_exclude[]=$this->tempdir.'wordpress.' . date( 'Y-m-d' ) . '.xml';
624
  //Exclude Backup dirs
625
  $jobs=get_option('backwpup_jobs');
626
  foreach($jobs as $jobsvale) {
1009
  return false;
1010
  }
1011
 
1012
+ if (!class_exists('S3'))
1013
+ require_once('libs/S3.php');
1014
 
1015
  $s3 = new S3($this->job['awsAccessKey'], $this->job['awsSecretKey'], $this->job['awsSSL']);
1016
+
1017
  if (in_array($this->job['awsBucket'],$s3->listBuckets())) {
1018
  trigger_error(__('Connected to S3 Bucket:','backwpup').' '.$this->job['awsBucket'],E_USER_NOTICE);
1019
  //Transfer Backup to S3
app/functions.php CHANGED
@@ -135,11 +135,11 @@ if ( !defined('ABSPATH') )
135
  if (empty($cfg['maxlogs'])) $cfg['maxlogs']=0;
136
  if (empty($cfg['dirtemp'])) {
137
  $rand = substr( md5( md5( SECURE_AUTH_KEY ) ), -5 );
138
- $cfg['dirtemp']=str_replace('\\','/',get_temp_dir().'backwpup-'.$rand.'/');
139
  }
140
  if (empty($cfg['dirlogs'])) {
141
  $rand = substr( md5( md5( SECURE_AUTH_KEY ) ), -5 );
142
- $cfg['dirlogs']=str_replace('\\','/',WP_CONTENT_DIR).'/backwpup-'.$rand.'/logs/';
143
  }
144
  update_option('backwpup',$cfg);
145
  }
@@ -191,13 +191,12 @@ if ( !defined('ABSPATH') )
191
  //DoJob
192
  function backwpup_dojob($args) {
193
  global $backwpup_logfile;
194
- if (is_array($args)) { //cron gifes no complete array back!!!
195
  extract($args, EXTR_SKIP );
196
- } else {
197
  $jobid=$args;
198
- }
199
- if (empty($jobid)) return false;
200
- require_once(ABSPATH . 'wp-admin/includes/file.php'); //for get_tempdir();
201
  require_once('backwpup_dojob.php');
202
  $dojob= new backwpup_dojob($jobid);
203
  unset($dojob);
@@ -355,7 +354,31 @@ if ( !defined('ABSPATH') )
355
  header("Pragma: no-cache");
356
  header("Cache-Control: post-check=0, pre-check=0");
357
  }
358
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
359
 
360
  // add all action and so on only if plugin loaded.
361
  function backwpup_init() {
@@ -377,6 +400,8 @@ if ( !defined('ABSPATH') )
377
  //add Dashboard widget
378
  if (current_user_can(10))
379
  add_action('wp_dashboard_setup', 'backwpup_add_dashboard');
 
 
380
  }
381
 
382
  ?>
135
  if (empty($cfg['maxlogs'])) $cfg['maxlogs']=0;
136
  if (empty($cfg['dirtemp'])) {
137
  $rand = substr( md5( md5( SECURE_AUTH_KEY ) ), -5 );
138
+ $cfg['dirtemp']=str_replace('\\','/',trailingslashit(WP_CONTENT_DIR)).'uploads/';
139
  }
140
  if (empty($cfg['dirlogs'])) {
141
  $rand = substr( md5( md5( SECURE_AUTH_KEY ) ), -5 );
142
+ $cfg['dirlogs']=str_replace('\\','/',trailingslashit(WP_CONTENT_DIR)).'/backwpup-'.$rand.'-logs/';
143
  }
144
  update_option('backwpup',$cfg);
145
  }
191
  //DoJob
192
  function backwpup_dojob($args) {
193
  global $backwpup_logfile;
194
+ if (is_array($args)) //cron gifes no complete array back!!!
195
  extract($args, EXTR_SKIP );
196
+ else
197
  $jobid=$args;
198
+ if (empty($jobid))
199
+ return false;
 
200
  require_once('backwpup_dojob.php');
201
  $dojob= new backwpup_dojob($jobid);
202
  unset($dojob);
354
  header("Pragma: no-cache");
355
  header("Cache-Control: post-check=0, pre-check=0");
356
  }
357
+
358
+
359
+ function backwpup_get_aws_buckets() {
360
+ require_once('libs/s3.php');
361
+ if (empty($_POST['awsAccessKey'])) {
362
+ echo '<span id="awsBucket" style="color:red;">'.__('Missing Access Key ID!','backwpup').'</span>';
363
+ die();
364
+ }
365
+ if (empty($_POST['awsSecretKey'])) {
366
+ echo '<span id="awsBucket" style="color:red;">'.__('Missing Secret Access Key!','backwpup').'</span>';
367
+ die();
368
+ }
369
+ $s3 = new S3($_POST['awsAccessKey'], $_POST['awsSecretKey'], false);
370
+ $buckets=@$s3->listBuckets();
371
+ if (!is_array($buckets)) {
372
+ echo '<span id="awsBucket" style="color:red;">'.__('No Buckets found! Or wrong Keys!','backwpup').'</span>';
373
+ die();
374
+ }
375
+ echo '<select name="awsBucket" id="awsBucket">';
376
+ foreach ($buckets as $bucket) {
377
+ echo "<option ".selected(strtolower($_POST['selected']),strtolower($bucket),false).">".$bucket."</option>";
378
+ }
379
+ echo '</select>';
380
+ die();
381
+ }
382
 
383
  // add all action and so on only if plugin loaded.
384
  function backwpup_init() {
400
  //add Dashboard widget
401
  if (current_user_can(10))
402
  add_action('wp_dashboard_setup', 'backwpup_add_dashboard');
403
+ // add ajax function
404
+ add_action('wp_ajax_backwpup_get_aws_buckets', 'backwpup_get_aws_buckets');
405
  }
406
 
407
  ?>
app/js/options.js CHANGED
@@ -15,10 +15,16 @@ jQuery(document).ready( function($) {
15
  $('#tomail').hide();
16
  }
17
  if ( true == $('#jobtype-select-DB').attr('checked') || true == $('#jobtype-select-CHECK').attr('checked') || true == $('#jobtype-select-OPTIMIZE').attr('checked')) {
18
- $('#databasejos').show();
19
  } else {
20
- $('#databasejos').hide();
21
  }
 
 
 
 
 
 
22
  if ( true == $('#jobtype-select-FILE').attr('checked')) {
23
  $('#filebackup').show();
24
  } else {
@@ -39,6 +45,28 @@ jQuery(document).ready( function($) {
39
  }
40
  });
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  if ( $('#title').val() == '' )
43
  $('#title').siblings('#title-prompt-text').css('visibility', '');
44
  $('#title-prompt-text').click(function(){
15
  $('#tomail').hide();
16
  }
17
  if ( true == $('#jobtype-select-DB').attr('checked') || true == $('#jobtype-select-CHECK').attr('checked') || true == $('#jobtype-select-OPTIMIZE').attr('checked')) {
18
+ $('#databasejobs').show();
19
  } else {
20
+ $('#databasejobs').hide();
21
  }
22
+ if ( true == $('#jobtype-select-DB').attr('checked')) {
23
+ $('#dbshortinsert').show();
24
+ } else {
25
+ $('#dbshortinsert').hide();
26
+ }
27
+
28
  if ( true == $('#jobtype-select-FILE').attr('checked')) {
29
  $('#filebackup').show();
30
  } else {
45
  }
46
  });
47
 
48
+ function awsgetbucket() {
49
+ var awsAccessKey = $('#awsAccessKey').val();
50
+ var awsSecretKey = $('#awsSecretKey').val();
51
+ var awsBucket = $('#awsBucketselected').val();
52
+ var data = {
53
+ action: 'backwpup_get_aws_buckets',
54
+ awsAccessKey: awsAccessKey,
55
+ awsSecretKey: awsSecretKey,
56
+ selected: awsBucket
57
+ };
58
+ $.post(ajaxurl, data, function(response) {
59
+ $('#awsBucket').remove();
60
+ $('#awsBucketselected').after(response);
61
+ });
62
+ }
63
+
64
+ awsgetbucket();
65
+ $('#awsAccessKey').change(function() {awsgetbucket();});
66
+ $('#awsSecretKey').change(function() {awsgetbucket();});
67
+
68
+ $('#reloadbuckets').onClick(awsgetbucket());
69
+
70
  if ( $('#title').val() == '' )
71
  $('#title').siblings('#title-prompt-text').css('visibility', '');
72
  $('#title-prompt-text').click(function(){
app/libs/S3.php CHANGED
@@ -1253,7 +1253,7 @@ final class S3Request {
1253
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
1254
  curl_setopt($curl, CURLOPT_WRITEFUNCTION, array(&$this, '__responseWriteCallback'));
1255
  curl_setopt($curl, CURLOPT_HEADERFUNCTION, array(&$this, '__responseHeaderCallback'));
1256
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
1257
 
1258
  // Request types
1259
  switch ($this->verb) {
1253
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
1254
  curl_setopt($curl, CURLOPT_WRITEFUNCTION, array(&$this, '__responseWriteCallback'));
1255
  curl_setopt($curl, CURLOPT_HEADERFUNCTION, array(&$this, '__responseHeaderCallback'));
1256
+ //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
1257
 
1258
  // Request types
1259
  switch ($this->verb) {
app/options-jobs.php CHANGED
@@ -110,11 +110,17 @@ $todo=explode('+',$jobs[$jobid]['type']);
110
  $jobs[$jobid]['fileformart']='.zip';
111
  if (function_exists('gzopen') or class_exists('ZipArchive'))
112
  echo '<input class="radio" type="radio"'.checked('.zip',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".zip" />'.__('ZIP (.zip)','backwpup').'<br />';
 
 
113
  echo '<input class="radio" type="radio"'.checked('.tar',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".tar" />'.__('TAR (.tar)','backwpup').'<br />';
114
  if (function_exists('gzopen'))
115
- echo '<input class="radio" type="radio"'.checked('.tar.gz',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".tar.gz"/>'.__('TAR GZIP (.tar.gz)','backwpup').'<br />';
 
 
116
  if (function_exists('bzopen'))
117
- echo '<input class="radio" type="radio"'.checked('.tar.bz2',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".tar.bz2"/>'.__('TAR BZIP2 (.tar.bz2)','backwpup').'<br />';
 
 
118
  ?>
119
  </div>
120
  </div>
@@ -146,7 +152,7 @@ $todo=explode('+',$jobs[$jobid]['type']);
146
  </div>
147
  </div>
148
 
149
- <div id="databasejos" class="postbox" <?PHP if (!in_array("CHECK",$todo) and !in_array("DB",$todo) and !in_array("OPTIMIZE",$todo)) echo 'style="display:none;"';?>>
150
  <h3 class="hndle"><span><?PHP _e('Database Jobs','backwpup'); ?></span></h3>
151
  <div class="inside">
152
 
@@ -167,7 +173,7 @@ $todo=explode('+',$jobs[$jobid]['type']);
167
  }
168
  ?>
169
  </div><br />
170
-
171
  <input class="checkbox" type="checkbox"<?php checked($jobs[$jobid]['maintenance'],true,true);?> name="maintenance" value="1"/> <?php _e('Set Blog Maintenance Mode on Database Operations','backwpup');?><br />
172
  </div>
173
  </div>
@@ -205,7 +211,7 @@ $todo=explode('+',$jobs[$jobid]['type']);
205
  <?PHP
206
  if (empty($jobs[$jobid]['backupdir'])) {
207
  $rand = substr( md5( md5( SECURE_AUTH_KEY ) ), -5 );
208
- $jobs[$jobid]['backupdir']=str_replace('\\','/',WP_CONTENT_DIR).'/backwpup-'.$rand;
209
  }
210
  if (!is_numeric($jobs[$jobid]['maxbackups']))
211
  $jobs[$jobid]['maxbackups']=0;
@@ -235,17 +241,23 @@ $todo=explode('+',$jobs[$jobid]['type']);
235
  <div id="toamazon" class="postbox" <?PHP if (!in_array("FILE",$todo) and !in_array("DB",$todo) and !in_array("WPEXP",$todo)) echo 'style="display:none;"';?>>
236
  <h3 class="hndle"><span><?PHP _e('Backup to Amazon S3','backwpup'); ?></span></h3>
237
  <div class="inside">
238
- <b><?PHP _e('Access Key ID:','backwpup'); ?></b><br />
239
- <input name="awsAccessKey" type="text" value="<?PHP echo $jobs[$jobid]['awsAccessKey'];?>" class="large-text" /><br />
240
- <b><?PHP _e('Secret Access Key:','backwpup'); ?></b><br />
241
- <input name="awsSecretKey" type="text" value="<?PHP echo $jobs[$jobid]['awsSecretKey'];?>" class="large-text" /><br />
242
- <b><?PHP _e('Bucket:','backwpup'); ?></b><br />
243
- <input name="awsBucket" type="text" value="<?PHP echo $jobs[$jobid]['awsBucket'];?>" class="large-text" /><br />
244
- <b><?PHP _e('Directory in Bucket:','backwpup'); ?></b><br />
245
- <input name="awsdir" type="text" value="<?PHP echo $jobs[$jobid]['awsdir'];?>" class="large-text" /><br />
246
- <?PHP if (!is_numeric($jobs[$jobid]['awsmaxbackups'])) $jobs[$jobid]['awsmaxbackups']=0; ?>
247
- <?PHP _e('Max. Backup Files inn Bucket Folder:','backwpup'); ?><input name="awsmaxbackups" type="text" size="3" value="<?PHP echo $jobs[$jobid]['awsmaxbackups'];?>" class="small-text" /><span class="description"><?PHP _e('(Oldest files will deleted first.)','backwpup');?></span><br />
248
- <input class="checkbox" value="1" type="checkbox" <?php checked($jobs[$jobid]['awsSSL'],true); ?> name="awsSSL" /> <?PHP _e('Use SSL connection.','backwpup'); ?><br />
 
 
 
 
 
 
249
  </div>
250
  </div>
251
 
110
  $jobs[$jobid]['fileformart']='.zip';
111
  if (function_exists('gzopen') or class_exists('ZipArchive'))
112
  echo '<input class="radio" type="radio"'.checked('.zip',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".zip" />'.__('ZIP (.zip)','backwpup').'<br />';
113
+ else
114
+ echo '<input class="radio" type="radio"'.checked('.zip',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".zip" disabled="disabled" />'.__('ZIP (.zip)','backwpup').'<br />';
115
  echo '<input class="radio" type="radio"'.checked('.tar',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".tar" />'.__('TAR (.tar)','backwpup').'<br />';
116
  if (function_exists('gzopen'))
117
+ echo '<input class="radio" type="radio"'.checked('.tar.gz',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".tar.gz" />'.__('TAR GZIP (.tar.gz)','backwpup').'<br />';
118
+ else
119
+ echo '<input class="radio" type="radio"'.checked('.tar.gz',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".tar.gz" disabled="disabled" />'.__('TAR GZIP (.tar.gz)','backwpup').'<br />';
120
  if (function_exists('bzopen'))
121
+ echo '<input class="radio" type="radio"'.checked('.tar.bz2',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".tar.bz2" />'.__('TAR BZIP2 (.tar.bz2)','backwpup').'<br />';
122
+ else
123
+ echo '<input class="radio" type="radio"'.checked('.tar.bz2',$jobs[$jobid]['fileformart'],false).' name="fileformart" value=".tar.bz2" disabled="disabled" />'.__('TAR BZIP2 (.tar.bz2)','backwpup').'<br />';
124
  ?>
125
  </div>
126
  </div>
152
  </div>
153
  </div>
154
 
155
+ <div id="databasejobs" class="postbox" <?PHP if (!in_array("CHECK",$todo) and !in_array("DB",$todo) and !in_array("OPTIMIZE",$todo)) echo 'style="display:none;"';?>>
156
  <h3 class="hndle"><span><?PHP _e('Database Jobs','backwpup'); ?></span></h3>
157
  <div class="inside">
158
 
173
  }
174
  ?>
175
  </div><br />
176
+ <span id="dbshortinsert" <?PHP if (!in_array("DB",$todo)) echo 'style="display:none;"';?>><input class="checkbox" type="checkbox"<?php checked($jobs[$jobid]['dbshortinsert'],true,true);?> name="dbshortinsert" value="1"/> <?php _e('Use short INSERTs instat of full (with keys)','backwpup');?><br /></span>
177
  <input class="checkbox" type="checkbox"<?php checked($jobs[$jobid]['maintenance'],true,true);?> name="maintenance" value="1"/> <?php _e('Set Blog Maintenance Mode on Database Operations','backwpup');?><br />
178
  </div>
179
  </div>
211
  <?PHP
212
  if (empty($jobs[$jobid]['backupdir'])) {
213
  $rand = substr( md5( md5( SECURE_AUTH_KEY ) ), -5 );
214
+ $jobs[$jobid]['backupdir']=str_replace('\\','/',trailingslashit(WP_CONTENT_DIR)).'/backwpup-'.$rand;
215
  }
216
  if (!is_numeric($jobs[$jobid]['maxbackups']))
217
  $jobs[$jobid]['maxbackups']=0;
241
  <div id="toamazon" class="postbox" <?PHP if (!in_array("FILE",$todo) and !in_array("DB",$todo) and !in_array("WPEXP",$todo)) echo 'style="display:none;"';?>>
242
  <h3 class="hndle"><span><?PHP _e('Backup to Amazon S3','backwpup'); ?></span></h3>
243
  <div class="inside">
244
+ <?PHP if (!(extension_loaded('curl') or @dl(PHP_SHLIB_SUFFIX == 'so' ? 'curl.so' : 'php_curl.dll'))) {
245
+ echo "<b>".__('curl Support required','backwpup')."</b>";
246
+ } else { ?>
247
+ <b><?PHP _e('Access Key ID:','backwpup'); ?></b><br />
248
+ <input id="awsAccessKey" name="awsAccessKey" type="text" value="<?PHP echo $jobs[$jobid]['awsAccessKey'];?>" class="large-text" /><br />
249
+ <b><?PHP _e('Secret Access Key:','backwpup'); ?></b><br />
250
+ <input id="awsSecretKey" name="awsSecretKey" type="text" value="<?PHP echo $jobs[$jobid]['awsSecretKey'];?>" class="large-text" /><br />
251
+ <b><?PHP _e('Bucket:','backwpup'); ?></b><br />
252
+ <input id="awsBucketselected" name="awsBucketselected" type="hidden" value="<?PHP echo $jobs[$jobid]['awsBucket'];?>" />
253
+ <span id="awsBucket" style="color:red;"><?PHP _e('Get Buckets:','backwpup'); ?></span>
254
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?PHP _e('Create Bucket:','backwpup'); ?><input name="newawsBucket" type="text" value="" class="text" /> <select name="awsRegion" title="<?php _e('Bucket Region', 'backwpup'); ?>"><option value=""><?php _e('US', 'backwpup'); ?></option><option value="EU"><?php _e('EU', 'backwpup'); ?></option></select><br />
255
+ <b><?PHP _e('Directory in Bucket:','backwpup'); ?></b><br />
256
+ <input name="awsdir" type="text" value="<?PHP echo $jobs[$jobid]['awsdir'];?>" class="large-text" /><br />
257
+ <?PHP if (!is_numeric($jobs[$jobid]['awsmaxbackups'])) $jobs[$jobid]['awsmaxbackups']=0; ?>
258
+ <?PHP _e('Max. Backup Files inn Bucket Folder:','backwpup'); ?><input name="awsmaxbackups" type="text" size="3" value="<?PHP echo $jobs[$jobid]['awsmaxbackups'];?>" class="small-text" /><span class="description"><?PHP _e('(Oldest files will deleted first.)','backwpup');?></span><br />
259
+ <input class="checkbox" value="1" type="checkbox" <?php checked($jobs[$jobid]['awsSSL'],true); ?> name="awsSSL" /> <?PHP _e('Use SSL connection.','backwpup'); ?><br />
260
+ <?PHP } ?>
261
  </div>
262
  </div>
263
 
app/options-save.php CHANGED
@@ -65,6 +65,14 @@ case 'savecfg': //Save config form Setings page
65
  $cfg['maxlogs']=abs((int)$_POST['maxlogs']);
66
  $cfg['dirlogs']=trailingslashit(str_replace('//','/',str_replace('\\','/',stripslashes(trim($_POST['dirlogs'])))));
67
  $cfg['dirtemp']=trailingslashit(str_replace('//','/',str_replace('\\','/',stripslashes(trim($_POST['dirtemp'])))));
 
 
 
 
 
 
 
 
68
  if (update_option('backwpup',$cfg))
69
  $backwpup_message=__('Settings saved', 'backwpup');
70
  $_REQUEST['action']='settings';
@@ -136,6 +144,7 @@ case 'saveeditjob': //Save Job settings
136
  $jobs[$jobid]['mailaddresslog']=sanitize_email($_POST['mailaddresslog']);
137
  $jobs[$jobid]['mailerroronly']= $_POST['mailerroronly']==1 ? true : false;
138
  $jobs[$jobid]['dbexclude']=$_POST['dbexclude'];
 
139
  $jobs[$jobid]['maintenance']= $_POST['maintenance']==1 ? true : false;
140
  $jobs[$jobid]['fileexclude']=str_replace('//','/',str_replace('\\','/',stripslashes(trim($_POST['fileexclude']))));
141
  $jobs[$jobid]['dirinclude']=str_replace('//','/',str_replace('\\','/',stripslashes(trim($_POST['dirinclude']))));
@@ -161,6 +170,14 @@ case 'saveeditjob': //Save Job settings
161
  $jobs[$jobid]['mailaddress']=sanitize_email($_POST['mailaddress']);
162
  $jobs[$jobid]['awsmaxbackups']=abs((int)$_POST['awsmaxbackups']);
163
 
 
 
 
 
 
 
 
 
164
  //save chages
165
  update_option('backwpup_jobs',$jobs);
166
 
65
  $cfg['maxlogs']=abs((int)$_POST['maxlogs']);
66
  $cfg['dirlogs']=trailingslashit(str_replace('//','/',str_replace('\\','/',stripslashes(trim($_POST['dirlogs'])))));
67
  $cfg['dirtemp']=trailingslashit(str_replace('//','/',str_replace('\\','/',stripslashes(trim($_POST['dirtemp'])))));
68
+ //set def. folders
69
+ if (empty($cfg['dirtemp']) or $cfg['dirtemp']=='/')
70
+ $cfg['dirtemp']=str_replace('\\','/',trailingslashit(WP_CONTENT_DIR)).'uploads/';
71
+ if (empty($cfg['dirlogs']) or $cfg['dirlogs']=='/') {
72
+ $rand = substr( md5( md5( SECURE_AUTH_KEY ) ), -5 );
73
+ $cfg['dirlogs']=str_replace('\\','/',trailingslashit(WP_CONTENT_DIR)).'backwpup-'.$rand.'-logs/';
74
+ }
75
+
76
  if (update_option('backwpup',$cfg))
77
  $backwpup_message=__('Settings saved', 'backwpup');
78
  $_REQUEST['action']='settings';
144
  $jobs[$jobid]['mailaddresslog']=sanitize_email($_POST['mailaddresslog']);
145
  $jobs[$jobid]['mailerroronly']= $_POST['mailerroronly']==1 ? true : false;
146
  $jobs[$jobid]['dbexclude']=$_POST['dbexclude'];
147
+ $jobs[$jobid]['dbshortinsert']=$_POST['dbshortinsert']==1 ? true : false;
148
  $jobs[$jobid]['maintenance']= $_POST['maintenance']==1 ? true : false;
149
  $jobs[$jobid]['fileexclude']=str_replace('//','/',str_replace('\\','/',stripslashes(trim($_POST['fileexclude']))));
150
  $jobs[$jobid]['dirinclude']=str_replace('//','/',str_replace('\\','/',stripslashes(trim($_POST['dirinclude']))));
170
  $jobs[$jobid]['mailaddress']=sanitize_email($_POST['mailaddress']);
171
  $jobs[$jobid]['awsmaxbackups']=abs((int)$_POST['awsmaxbackups']);
172
 
173
+ if (!empty($_POST['newawsBucket']) and !empty($_POST['awsAccessKey']) and !empty($_POST['awsSecretKey'])) { //create new s3 bucket if needed
174
+ if (!class_exists('S3'))
175
+ require_once('libs/S3.php');
176
+ $s3 = new S3($_POST['awsAccessKey'], $_POST['awsSecretKey'], false);
177
+ @$s3->putBucket($_POST['newawsBucket'], S3::ACL_PRIVATE, $_POST['awsRegion']);
178
+ $jobs[$jobid]['awsBucket']=$_POST['newawsBucket'];
179
+ }
180
+
181
  //save chages
182
  update_option('backwpup_jobs',$jobs);
183
 
app/options-tools.php CHANGED
@@ -61,28 +61,7 @@ if ( !defined('ABSPATH') )
61
  ?>
62
  </div>
63
  </div>
64
-
65
- <div id="createbucket" class="postbox">
66
- <h3 class="hndle"><span><?PHP _e('Create Amazon S3 Bucket','backwpup'); ?></span></h3>
67
- <div class="inside">
68
- <?PHP
69
- if ($_POST['awsbucketcreate']==__('Create', 'backwpup') and !empty($_POST['awsAccessKey']) and !empty($_POST['awsSecretKey']) and !empty($_POST['awsBucket'])) {
70
- if (!class_exists('S3')) require_once 'libs/S3.php';
71
- $s3 = new S3($_POST['awsAccessKey'], $_POST['awsSecretKey'], false);
72
- if ($s3->putBucket($_POST['awsBucket'], S3::ACL_PRIVATE, $_POST['awsRegion']))
73
- echo __('Amazone S3 Bucket created.', 'backwpup')."<br />";
74
- else
75
- echo __('Can not create Amazon S3 Bucket.', 'backwpup')."<br />";
76
-
77
- }
78
- ?>
79
- <b><?php _e('Access Key ID:', 'backwpup'); ?></b><br /><input type="text" name="awsAccessKey" id="awsAccessKey" value="<?PHP echo $_POST['awsAccessKey'];?>" class="large-text" /><br />
80
- <b><?php _e('Secret Access Key:', 'backwpup'); ?></b><br /><input type="text" name="awsSecretKey" id="awsSecretKey" value="<?PHP echo $_POST['awsSecretKey'];?>" class="large-text" /><br />
81
- <b><?php _e('Bucket Name:', 'backwpup'); ?></b><br /><input type="text" name="awsBucket" id="awsBucket" value="<?PHP echo $_POST['awsBucket'];?>" class="large-text" /><br />
82
- <b><?php _e('Bucket Region:', 'backwpup'); ?></b><br /><select name="awsRegion"><option value=""><?php _e('US', 'backwpup'); ?></option><option value="EU"><?php _e('Europe', 'backwpup'); ?></option></select><br />
83
- <input type="submit" name="awsbucketcreate" class="button-primary" value="<?php _e('Create', 'backwpup'); ?>" />
84
- </div>
85
- </div>
86
  </div>
87
  </div>
88
  </div>
61
  ?>
62
  </div>
63
  </div>
64
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  </div>
66
  </div>
67
  </div>
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: 1.0.8
8
  Author URI: http://danielhuesken.de
9
  Text Domain: backwpup
10
  Domain Path: /lang/
@@ -35,7 +35,7 @@ if ( !defined('ABSPATH') )
35
  //Set plugin dirname
36
  define('BACKWPUP_PLUGIN_BASEDIR', dirname(plugin_basename(__FILE__)));
37
  //Set Plugin Version
38
- define('BACKWPUP_VERSION', '1.0.8');
39
  //load Text Domain
40
  load_plugin_textdomain('backwpup', false, BACKWPUP_PLUGIN_BASEDIR.'/lang');
41
  //Load functions file
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: 1.0.9
8
  Author URI: http://danielhuesken.de
9
  Text Domain: backwpup
10
  Domain Path: /lang/
35
  //Set plugin dirname
36
  define('BACKWPUP_PLUGIN_BASEDIR', dirname(plugin_basename(__FILE__)));
37
  //Set Plugin Version
38
+ define('BACKWPUP_VERSION', '1.0.9');
39
  //load Text Domain
40
  load_plugin_textdomain('backwpup', false, BACKWPUP_PLUGIN_BASEDIR.'/lang');
41
  //Load functions file
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=danie
4
  Tags: backup, admin, file, Database, mysql, cron, ftp, S3, export
5
  Requires at least: 2.8
6
  Tested up to: 3.0.0
7
- Stable tag: 1.0.8
8
 
9
  Backup and more of your WordPress Blog Database and Files
10
 
@@ -81,6 +81,13 @@ Pleace mail only littele archives
81
  1. Job Page
82
 
83
  == Changelog ==
 
 
 
 
 
 
 
84
  = 1.0.8 =
85
  * fix temp backup file not deleted if no destination folder
86
  * some folder fixes
4
  Tags: backup, admin, file, Database, mysql, cron, ftp, S3, export
5
  Requires at least: 2.8
6
  Tested up to: 3.0.0
7
+ Stable tag: 1.0.9
8
 
9
  Backup and more of your WordPress Blog Database and Files
10
 
81
  1. Job Page
82
 
83
  == Changelog ==
84
+ = 1.0.9 =
85
+ * change s3 class to hide warnigs
86
+ * add option to make MySQL INSERTs shorter (smaler dump file size.)
87
+ * add requerments checks
88
+ * ajaxed S3 bucket selection in job settings
89
+ * add S3 Buckt can made in job settings
90
+
91
  = 1.0.8 =
92
  * fix temp backup file not deleted if no destination folder
93
  * some folder fixes