Backup & Restore Dropbox - Version 1.4.7.3

Version Description

Please, keep your Dropbox Backup and Restore plugin up-to-date.

Download this release

Release Info

Developer backup-dropbox
Plugin Icon 128x128 Backup & Restore Dropbox
Version 1.4.7.3
Comparing to
See all releases

Code changes from version 1.4.7.1 to 1.4.7.3

dropbox-backup.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: Dropbox Backup & Restore
4
  Description: Dropbox Backup & Restore Plugin to create Dropbox Full Backup (Files + Database) of your Web Page
5
- Version: 1.4.7.1
6
  Text Domain: dropbox-backup
7
  Domain Path: /languages/
8
  */
2
  /*
3
  Plugin Name: Dropbox Backup & Restore
4
  Description: Dropbox Backup & Restore Plugin to create Dropbox Full Backup (Files + Database) of your Web Page
5
+ Version: 1.4.7.3
6
  Text Domain: dropbox-backup
7
  Domain Path: /languages/
8
  */
img/folder-loader.gif ADDED
Binary file
libs/wpadm.server.main.class.php CHANGED
@@ -145,44 +145,88 @@
145
  exit;
146
 
147
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  public static function getDirsIncludes()
149
  {
150
  $path = isset($_POST['path']) ? $_POST['path'] : "";
151
  $path_show = !empty($path) ? ltrim($path, '/') . "/" : "";
152
  $dir_to_open = ABSPATH . $path;
153
- if (is_dir($dir_to_open)) {
154
- $dir_open = opendir($dir_to_open);
155
  $return = array();
156
  $connect_f_d = self::createListFilesForArchive();
157
  $includes = get_option(PREFIX_BACKUP_ . "plus-path");
158
  if ($includes !== false) {
159
  $includes = explode(',', $includes);
160
- $n = count($includes);
161
- $in = array();
162
- for($i = 0; $i < $n; $i++) {
163
- $inc = explode("/", $includes[$i]);
164
- $f = count($inc);
165
- $str = "";
166
- for($j = 0; $j < $f; $j++) {
167
- $str .= '/' . $inc[$j];
168
- $in[$str] = $includes[$i];
169
-
170
- }
171
- }
172
  }
173
-
174
  while( $d = readdir($dir_open) ) {
175
  if ($d != '.' && $d != '..' && !in_array($d, array('tmp', 'cache', 'temp', 'wpadm_backups', 'wpadm_backup', 'Dropbox_Backup', 'logs', 'log'))) {
176
  $check = false;
 
177
  $check_folder = "";
178
- if (isset($in['/' . $path_show . $d])) {
179
  $check = true;
180
- $check_folder = $in['/' . $path_show . $d];
181
  }
182
- $return['dir'][] = array('dir' => $d, 'cache' => md5($path_show . $d), 'folder'=> $path_show . $d, 'perm' => self::perm($dir_to_open . "/" .$d), 'check' => $check, 'check_folder' => $check_folder );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  }
184
  }
185
- echo json_encode($return);
186
  }
187
  wp_die();
188
  }
@@ -193,15 +237,15 @@
193
  $files = array_merge(
194
  $files,
195
  array(
196
- ABSPATH . '.htaccess',
197
  ABSPATH . 'index.php',
198
- ABSPATH . 'license.txt',
199
- ABSPATH . 'readme.html',
200
  ABSPATH . 'wp-activate.php',
201
  ABSPATH . 'wp-blog-header.php',
202
  ABSPATH . 'wp-comments-post.php',
203
  ABSPATH . 'wp-config.php',
204
- ABSPATH . 'wp-config-sample.php',
205
  ABSPATH . 'wp-cron.php',
206
  ABSPATH . 'wp-links-opml.php',
207
  ABSPATH . 'wp-load.php',
@@ -213,6 +257,21 @@
213
  ABSPATH . 'xmlrpc.php',
214
  )
215
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  $folders = array_merge(
217
  $folders,
218
  array(
@@ -252,7 +311,7 @@
252
  } else {
253
  $d2 = strtolower(implode('/', $tmp));
254
  }
255
-
256
  if (strpos($d2, 'cache') !== false && isset($tmp[0])&& !in_array($tmp[0], array('plugins', 'themes')) ) {
257
  return array();
258
  }
@@ -299,14 +358,16 @@
299
  public static function saveDirsIncludes()
300
  {
301
  if (isset($_POST['save']) && isset($_POST['data'])) {
302
- $_POST['data'] = array_map('ltrimslashes', array_unique( $_POST['data'] ) );
303
  $data_save = implode(',', $_POST['data'] );
 
304
  $inludes = get_option(PREFIX_BACKUP_ . "plus-path");
305
  if ($inludes !== false) {
306
  update_option(PREFIX_BACKUP_ . "plus-path", $data_save);
307
  } else {
308
  add_option(PREFIX_BACKUP_ . "plus-path", $data_save);
309
  }
 
310
  }
311
  wp_die();
312
  }
@@ -545,7 +606,7 @@
545
  $res = self::setResponse($data);
546
  }
547
  }
548
-
549
  if (isset($res['url']) && !empty($res['url'])) {
550
  header("Location: " . $res['url']);
551
  } else {
@@ -859,7 +920,7 @@
859
  if (!function_exists('ltrimslashes')) {
860
  function ltrimslashes($var)
861
  {
862
- return ltrim($var, '/');
863
  }
864
  }
865
  if (!function_exists("get_system_data")) {
@@ -884,11 +945,11 @@
884
  }
885
  $upMaxExecutionTime = 0;
886
  $newMaxExecutionTime = intval($maxExecutionTime) + 180;
887
-
888
  @set_time_limit( $newMaxExecutionTime );
889
  if( ini_get('max_execution_time') == $newMaxExecutionTime ){
890
  $upMaxExecutionTime = 1;
891
-
892
  }
893
  $upMemoryLimit = 0;
894
  $newMemoryLimit = intval($maxMemoryLimit) + 60;
145
  exit;
146
 
147
  }
148
+
149
+ private static function getFolders($arr)
150
+ {
151
+ $n = count($arr);
152
+ $in = array();
153
+ for($i = 0; $i < $n; $i++) {
154
+
155
+ if (strpos($arr[$i], ABSPATH ) !== false) {
156
+ $arr[$i] = str_replace(ABSPATH, '', $arr[$i]);
157
+ }
158
+ $inc = explode("/", $arr[$i]);
159
+ $f = count($inc);
160
+ $str = "";
161
+ for($j = 0; $j < $f; $j++) {
162
+ $str .= '/' . $inc[$j];
163
+ $in[$str] = $str;
164
+ }
165
+ }
166
+ return $in;
167
+ }
168
  public static function getDirsIncludes()
169
  {
170
  $path = isset($_POST['path']) ? $_POST['path'] : "";
171
  $path_show = !empty($path) ? ltrim($path, '/') . "/" : "";
172
  $dir_to_open = ABSPATH . $path;
173
+ if (is_dir($dir_to_open)) {
 
174
  $return = array();
175
  $connect_f_d = self::createListFilesForArchive();
176
  $includes = get_option(PREFIX_BACKUP_ . "plus-path");
177
  if ($includes !== false) {
178
  $includes = explode(',', $includes);
179
+ $in = self::getFolders($includes);
180
+ } else {
181
+ $in = self::getFolders($connect_f_d);
 
 
 
 
 
 
 
 
 
182
  }
183
+ $dir_open = opendir($dir_to_open);
184
  while( $d = readdir($dir_open) ) {
185
  if ($d != '.' && $d != '..' && !in_array($d, array('tmp', 'cache', 'temp', 'wpadm_backups', 'wpadm_backup', 'Dropbox_Backup', 'logs', 'log'))) {
186
  $check = false;
187
+ $d_tmp = utf8_encode($d);
188
  $check_folder = "";
189
+ if (isset($in['/' . $path_show . $d_tmp])) {
190
  $check = true;
191
+ $check_folder = urlencode( $in['/' . $path_show . $d_tmp] );
192
  }
193
+ // check path in data include
194
+ if ( isset( $in['/' . trim($path_show, '/') ] ) ) {
195
+ $check = true;
196
+ $check_folder = urlencode( $in['/' . trim($path_show, '/')] );
197
+ }
198
+
199
+ $return['dir'][] = array('is_file' => is_file($dir_to_open . "/$d"), 'dir' => urlencode( $d ) , 'cache' => md5($path_show . $d), 'folder'=> urlencode('/' . $path_show . $d ), 'perm' => self::perm($dir_to_open . "/" .$d), 'check' => $check, 'check_folder' => $check_folder );
200
+ }
201
+ }
202
+ //var_dump( $f_d );
203
+ $res = json_encode($return);
204
+ echo $res;
205
+ if ($res === false) {
206
+ switch (json_last_error()) {
207
+ case JSON_ERROR_NONE:
208
+ echo ' - No errors';
209
+ break;
210
+ case JSON_ERROR_DEPTH:
211
+ echo ' - Maximum stack depth exceeded';
212
+ break;
213
+ case JSON_ERROR_STATE_MISMATCH:
214
+ echo ' - Underflow or the modes mismatch';
215
+ break;
216
+ case JSON_ERROR_CTRL_CHAR:
217
+ echo ' - Unexpected control character found';
218
+ break;
219
+ case JSON_ERROR_SYNTAX:
220
+ echo ' - Syntax error, malformed JSON';
221
+ break;
222
+ case JSON_ERROR_UTF8:
223
+ echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
224
+ break;
225
+ default:
226
+ echo ' - Unknown error';
227
+ break;
228
  }
229
  }
 
230
  }
231
  wp_die();
232
  }
237
  $files = array_merge(
238
  $files,
239
  array(
240
+ //ABSPATH . '.htaccess',
241
  ABSPATH . 'index.php',
242
+ // ABSPATH . 'license.txt',
243
+ // ABSPATH . 'readme.html',
244
  ABSPATH . 'wp-activate.php',
245
  ABSPATH . 'wp-blog-header.php',
246
  ABSPATH . 'wp-comments-post.php',
247
  ABSPATH . 'wp-config.php',
248
+ // ABSPATH . 'wp-config-sample.php',
249
  ABSPATH . 'wp-cron.php',
250
  ABSPATH . 'wp-links-opml.php',
251
  ABSPATH . 'wp-load.php',
257
  ABSPATH . 'xmlrpc.php',
258
  )
259
  );
260
+ if ( file_exists(ABSPATH . '.htaccess') ) {
261
+ $files = array_merge( $files, array( ABSPATH . '.htaccess' ) );
262
+ }
263
+ if ( file_exists( ABSPATH . 'license.txt' ) ) {
264
+ $files = array_merge( $files, array( ABSPATH . 'license.txt' ) );
265
+ }
266
+ if ( file_exists( ABSPATH . 'readme.html' ) ) {
267
+ $files = array_merge( $files, array( ABSPATH . 'readme.html') );
268
+ }
269
+ if ( file_exists(ABSPATH . 'wp-config-sample.php') ) {
270
+ $files = array_merge( $files, array( ABSPATH . 'wp-config-sample.php' ) );
271
+ }
272
+ if ( file_exists(ABSPATH . 'robots.txt') ) {
273
+ $files = array_merge( $files, array( ABSPATH . 'robots.txt' ) );
274
+ }
275
  $folders = array_merge(
276
  $folders,
277
  array(
311
  } else {
312
  $d2 = strtolower(implode('/', $tmp));
313
  }
314
+
315
  if (strpos($d2, 'cache') !== false && isset($tmp[0])&& !in_array($tmp[0], array('plugins', 'themes')) ) {
316
  return array();
317
  }
358
  public static function saveDirsIncludes()
359
  {
360
  if (isset($_POST['save']) && isset($_POST['data'])) {
361
+ $_POST['data'] = array_map('ltrimslashes', array_unique( array_filter( $_POST['data'] ) ) );
362
  $data_save = implode(',', $_POST['data'] );
363
+ // var_dump($data_save);
364
  $inludes = get_option(PREFIX_BACKUP_ . "plus-path");
365
  if ($inludes !== false) {
366
  update_option(PREFIX_BACKUP_ . "plus-path", $data_save);
367
  } else {
368
  add_option(PREFIX_BACKUP_ . "plus-path", $data_save);
369
  }
370
+ echo 1;
371
  }
372
  wp_die();
373
  }
606
  $res = self::setResponse($data);
607
  }
608
  }
609
+
610
  if (isset($res['url']) && !empty($res['url'])) {
611
  header("Location: " . $res['url']);
612
  } else {
920
  if (!function_exists('ltrimslashes')) {
921
  function ltrimslashes($var)
922
  {
923
+ return ltrim( utf8_encode( urldecode( $var ) ) , '/');
924
  }
925
  }
926
  if (!function_exists("get_system_data")) {
945
  }
946
  $upMaxExecutionTime = 0;
947
  $newMaxExecutionTime = intval($maxExecutionTime) + 180;
948
+
949
  @set_time_limit( $newMaxExecutionTime );
950
  if( ini_get('max_execution_time') == $newMaxExecutionTime ){
951
  $upMaxExecutionTime = 1;
952
+
953
  }
954
  $upMemoryLimit = 0;
955
  $newMemoryLimit = intval($maxMemoryLimit) + 60;
methods/class-wpadm-method-full-backup-dropbox.php CHANGED
@@ -364,7 +364,7 @@ if (!class_exists('WPadm_Method_Full_Backup_Dropbox')) {
364
  if ( file_exists( ABSPATH . 'readme.html' ) ) {
365
  $files = array_merge( $files, array( ABSPATH . 'readme.html') );
366
  }
367
- if ( file_exists(ABSPATH . '.htaccess') ) {
368
  $files = array_merge( $files, array( ABSPATH . 'wp-config-sample.php' ) );
369
  }
370
  if ( file_exists(ABSPATH . 'robots.txt') ) {
364
  if ( file_exists( ABSPATH . 'readme.html' ) ) {
365
  $files = array_merge( $files, array( ABSPATH . 'readme.html') );
366
  }
367
+ if ( file_exists(ABSPATH . 'wp-config-sample.php') ) {
368
  $files = array_merge( $files, array( ABSPATH . 'wp-config-sample.php' ) );
369
  }
370
  if ( file_exists(ABSPATH . 'robots.txt') ) {
methods/class-wpadm-method-local-backup.php CHANGED
@@ -391,92 +391,106 @@ if (!class_exists('WPAdm_Method_Local_Backup')) {
391
  }
392
  public function createListFilesForArchive()
393
  {
394
- $folders = array();
395
- $files = array();
396
-
397
- $files = array_merge(
398
- $files,
399
- array(
400
- //ABSPATH . '.htaccess',
401
- ABSPATH . 'index.php',
402
- // ABSPATH . 'license.txt',
403
- // ABSPATH . 'readme.html',
404
- ABSPATH . 'wp-activate.php',
405
- ABSPATH . 'wp-blog-header.php',
406
- ABSPATH . 'wp-comments-post.php',
407
- ABSPATH . 'wp-config.php',
408
- // ABSPATH . 'wp-config-sample.php',
409
- ABSPATH . 'wp-cron.php',
410
- ABSPATH . 'wp-links-opml.php',
411
- ABSPATH . 'wp-load.php',
412
- ABSPATH . 'wp-login.php',
413
- ABSPATH . 'wp-mail.php',
414
- ABSPATH . 'wp-settings.php',
415
- ABSPATH . 'wp-signup.php',
416
- ABSPATH . 'wp-trackback.php',
417
- ABSPATH . 'xmlrpc.php',
418
- )
419
- );
420
- if ( file_exists(ABSPATH . '.htaccess') ) {
421
- $files = array_merge( $files, array( ABSPATH . '.htaccess' ) );
422
- }
423
- if ( file_exists( ABSPATH . 'license.txt' ) ) {
424
- $files = array_merge( $files, array( ABSPATH . 'license.txt' ) );
425
- }
426
- if ( file_exists( ABSPATH . 'readme.html' ) ) {
427
- $files = array_merge( $files, array( ABSPATH . 'readme.html') );
428
- }
429
- if ( file_exists(ABSPATH . 'wp-config-sample.php') ) {
430
- $files = array_merge( $files, array( ABSPATH . 'wp-config-sample.php' ) );
431
- }
432
- if ( file_exists(ABSPATH . 'robots.txt') ) {
433
- $files = array_merge( $files, array( ABSPATH . 'robots.txt' ) );
434
- }
435
-
436
- if (!empty($this->params['minus-path'])) {
437
- $minus_path = explode(",", $this->params['minus-path']);
438
- foreach($files as $k => $v) {
439
- $v = str_replace(ABSPATH , '', $v);
440
- if (in_array($v, $minus_path)) {
441
- unset($files[$k]);
442
- WPAdm_Core::log( __('Skip of File ','dropbox-backup') . $v);
443
  }
444
  }
445
- }
 
 
446
 
447
- $folders = array_merge(
448
- $folders,
449
- array(
450
- ABSPATH . 'wp-admin',
451
- ABSPATH . 'wp-content',
452
- ABSPATH . 'wp-includes',
453
- )
454
- );
455
- if (!empty($this->params['plus-path'])) {
456
- $plus_path = explode(",", $this->params['plus-path']);
457
- foreach($plus_path as $p) {
458
- if (empty($p)) {
459
- continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
460
  }
461
- $p = ABSPATH . $p;
462
- if (file_exists($p)) {
463
- if (is_dir($p)) {
464
- $folders[] = $p;
465
- } else{
466
- $files[] = $p;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
467
  }
468
  }
469
  }
470
- }
471
 
472
- $folders = array_unique($folders);
473
- $files = array_unique($files);
474
 
475
- foreach($folders as $folder) {
476
- if (!is_dir($folder)) {
477
- continue;
 
 
478
  }
479
- $files = array_merge($files, $this->directoryToArray($folder, true));
480
  }
481
  return $files;
482
  }
@@ -510,7 +524,7 @@ if (!class_exists('WPAdm_Method_Local_Backup')) {
510
  } else {
511
  $d2 = strtolower(implode('/', $tmp));
512
  }
513
-
514
  if (stripos($d2, 'cache') !== false ) {
515
  WPAdm_Core::log( __('Skip of Cache-Folder ','dropbox-backup') . $directory);
516
  return array();
391
  }
392
  public function createListFilesForArchive()
393
  {
394
+ $inludes = get_option(PREFIX_BACKUP_ . "plus-path");
395
+ if($inludes !== false) {
396
+ $f = explode(',', $inludes);
397
+ $files = array();
398
+ $n = count($f);
399
+ for($i = 0; $i < $n; $i++) {
400
+ if( is_dir( ABSPATH . $f[$i] ) ) {
401
+ $files = array_merge($files, $this->directoryToArray(ABSPATH . $f[$i], true));
402
+ } elseif (file_exists(ABSPATH . $f[$i])) {
403
+ $files[$i] = ABSPATH . $f[$i];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
404
  }
405
  }
406
+ } else {
407
+ $folders = array();
408
+ $files = array();
409
 
410
+ $files = array_merge(
411
+ $files,
412
+ array(
413
+ //ABSPATH . '.htaccess',
414
+ ABSPATH . 'index.php',
415
+ // ABSPATH . 'license.txt',
416
+ // ABSPATH . 'readme.html',
417
+ ABSPATH . 'wp-activate.php',
418
+ ABSPATH . 'wp-blog-header.php',
419
+ ABSPATH . 'wp-comments-post.php',
420
+ ABSPATH . 'wp-config.php',
421
+ // ABSPATH . 'wp-config-sample.php',
422
+ ABSPATH . 'wp-cron.php',
423
+ ABSPATH . 'wp-links-opml.php',
424
+ ABSPATH . 'wp-load.php',
425
+ ABSPATH . 'wp-login.php',
426
+ ABSPATH . 'wp-mail.php',
427
+ ABSPATH . 'wp-settings.php',
428
+ ABSPATH . 'wp-signup.php',
429
+ ABSPATH . 'wp-trackback.php',
430
+ ABSPATH . 'xmlrpc.php',
431
+ )
432
+ );
433
+ if ( file_exists(ABSPATH . '.htaccess') ) {
434
+ $files = array_merge( $files, array( ABSPATH . '.htaccess' ) );
435
+ }
436
+ if ( file_exists( ABSPATH . 'license.txt' ) ) {
437
+ $files = array_merge( $files, array( ABSPATH . 'license.txt' ) );
438
+ }
439
+ if ( file_exists( ABSPATH . 'readme.html' ) ) {
440
+ $files = array_merge( $files, array( ABSPATH . 'readme.html') );
441
+ }
442
+ if ( file_exists(ABSPATH . 'wp-config-sample.php') ) {
443
+ $files = array_merge( $files, array( ABSPATH . 'wp-config-sample.php' ) );
444
+ }
445
+ if ( file_exists(ABSPATH . 'robots.txt') ) {
446
+ $files = array_merge( $files, array( ABSPATH . 'robots.txt' ) );
447
+ }
448
+
449
+ if (!empty($this->params['minus-path'])) {
450
+ $minus_path = explode(",", $this->params['minus-path']);
451
+ foreach($files as $k => $v) {
452
+ $v = str_replace(ABSPATH , '', $v);
453
+ if (in_array($v, $minus_path)) {
454
+ unset($files[$k]);
455
+ WPAdm_Core::log( __('Skip of File ','dropbox-backup') . $v);
456
+ }
457
  }
458
+ }
459
+
460
+ $folders = array_merge(
461
+ $folders,
462
+ array(
463
+ ABSPATH . 'wp-admin',
464
+ ABSPATH . 'wp-content',
465
+ ABSPATH . 'wp-includes',
466
+ )
467
+ );
468
+ if (!empty($this->params['plus-path'])) {
469
+ $plus_path = explode(",", $this->params['plus-path']);
470
+ foreach($plus_path as $p) {
471
+ if (empty($p)) {
472
+ continue;
473
+ }
474
+ $p = ABSPATH . $p;
475
+ if (file_exists($p)) {
476
+ if (is_dir($p)) {
477
+ $folders[] = $p;
478
+ } else{
479
+ $files[] = $p;
480
+ }
481
  }
482
  }
483
  }
 
484
 
485
+ $folders = array_unique($folders);
486
+ $files = array_unique($files);
487
 
488
+ foreach($folders as $folder) {
489
+ if (!is_dir($folder)) {
490
+ continue;
491
+ }
492
+ $files = array_merge($files, $this->directoryToArray($folder, true));
493
  }
 
494
  }
495
  return $files;
496
  }
524
  } else {
525
  $d2 = strtolower(implode('/', $tmp));
526
  }
527
+
528
  if (stripos($d2, 'cache') !== false ) {
529
  WPAdm_Core::log( __('Skip of Cache-Folder ','dropbox-backup') . $directory);
530
  return array();
modules/class-wpadm-running.php CHANGED
@@ -94,7 +94,7 @@ if (!class_exists('WPAdm_Running')) {
94
  if (!is_bool( $core->getResult() ) && is_object( $core->getResult() ) && ( $result = $core->getResult()->toArray(true) ) ) {
95
  if ($result['result'] == 'success') {
96
  self::delCommand($command['method']);
97
- set_transient('drb_running', 0, 60 * 5);
98
  self::stop();
99
  self::setCommandResultData($command['method'], $result);
100
  self::init();
@@ -139,7 +139,7 @@ if (!class_exists('WPAdm_Running')) {
139
  }
140
  }
141
  }
142
- set_transient('drb_running', 1, 60 * 5);
143
  return true;
144
  }
145
 
94
  if (!is_bool( $core->getResult() ) && is_object( $core->getResult() ) && ( $result = $core->getResult()->toArray(true) ) ) {
95
  if ($result['result'] == 'success') {
96
  self::delCommand($command['method']);
97
+ set_transient('drb_running', 0, 60 * 4);
98
  self::stop();
99
  self::setCommandResultData($command['method'], $result);
100
  self::init();
139
  }
140
  }
141
  }
142
+ set_transient('drb_running', 1, 60 * 4);
143
  return true;
144
  }
145
 
modules/restore-class.php CHANGED
@@ -362,7 +362,15 @@ if ( !class_exists('dbr_api') ) {
362
  if ( !class_exists('dbr_helper') ) {
363
  class dbr_helper {
364
 
365
- private static $cron_is_work = 60;
 
 
 
 
 
 
 
 
366
 
367
  public static function is_writable($file_dir = '')
368
  {
@@ -486,8 +494,10 @@ if ( !class_exists('dbr_helper') ) {
486
  {
487
  if (file_exists(DBP_PATH_TMP . '/' . $command)) {
488
  $tmp = dbr_helper::unpack( @file_get_contents(DBP_PATH_TMP . '/' . $command) );
489
- if (!empty($key) && isset($tmp[$key])) {
490
- return $tmp[$key];
 
 
491
  } else {
492
  return $tmp;
493
  }
@@ -1049,7 +1059,12 @@ if (!class_exists('dbr_route')) {
1049
  $http = 'https://';
1050
  }
1051
  $key = isset($this->setting['restore-key']) && !empty($this->setting['restore-key']) ? $this->setting['restore-key'] : $key_values['key'];
1052
- dbr_api::post($http . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], array('key' => $key, 'method' => 'restore'), array('timelimit' => 5) );
 
 
 
 
 
1053
  }
1054
  } else {
1055
  dbr_helper::is_work(time(), 'start');
362
  if ( !class_exists('dbr_helper') ) {
363
  class dbr_helper {
364
 
365
+ private static $cron_is_work = 90;
366
+
367
+ public static function modSecureInstalled()
368
+ {
369
+ ob_start();
370
+ phpinfo(INFO_MODULES);
371
+ $contents = ob_get_clean();
372
+ return strpos($contents, 'mod_security') !== false;
373
+ }
374
 
375
  public static function is_writable($file_dir = '')
376
  {
494
  {
495
  if (file_exists(DBP_PATH_TMP . '/' . $command)) {
496
  $tmp = dbr_helper::unpack( @file_get_contents(DBP_PATH_TMP . '/' . $command) );
497
+ if (!empty($key) ) {
498
+ if (isset($tmp[$key])) {
499
+ return $tmp[$key];
500
+ }
501
  } else {
502
  return $tmp;
503
  }
1059
  $http = 'https://';
1060
  }
1061
  $key = isset($this->setting['restore-key']) && !empty($this->setting['restore-key']) ? $this->setting['restore-key'] : $key_values['key'];
1062
+ $res_api = dbr_api::post($http . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], array('key' => $key, 'method' => 'restore'), array('timelimit' => 5) );
1063
+
1064
+ if (stripos($res_api['res'], 'mod_security') !== false || dbr_helper::modSecureInstalled() ) {
1065
+ dbr_helper::is_work(time(), 'start');
1066
+ dbr_helper::setError('Apache module \'mod_security\' is active and affected on your website. For successfully restoring of website please switch it temporary off.');
1067
+ }
1068
  }
1069
  } else {
1070
  dbr_helper::is_work(time(), 'start');
readme.txt CHANGED
@@ -1,11 +1,11 @@
1
  === Backup & Restore Dropbox ===
2
  Plugin Name: Backup & Restore Dropbox
3
- Version: 1.4.7.1
4
  Donate link: http://www.wpadm.com/donate
5
  URI: http://www.wpadm.com/dropbox-backup
6
  Tags: dropbox, backup, dropbox backup, database, file, full backup, manage, sicherung, database backup, file backup, page backup, page, web, web backup, web page, synchronize, clone, duplicate, move, web page backup, site, site backup, back up, cloud, Cloud Files, cloud backup, db backup, dump, german, migrate, multisite, German, schedule, storage, time, upload, data bank, zip, archive, backups, restore, db, recover, recovery, restoration, wp backup, wordpress backup, wordpress backup to dropbox, plugin wordpress backup, wpadm, wpadm.com, website, website backup, website back up, wp backup, wordpress backup, scheduled backup, backup scheduler, tool, backup tool
7
  Requires at least: 3.9
8
- Tested up to: 4.6.1
9
  Stable tag: trunk
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -31,8 +31,10 @@ please, make a [support request](http://www.wpadm.com/support/) first!
31
  * Dropbox Backup: create the Full Backup (Files + Database) of Web Page at Local Storage and upload this to Dropbox;
32
  * Local Restore: restoration from Local backup at your website (web hosting);
33
  * Dropbox Restore: restoration from Dropbox backup;
34
- * With "dropbox backup & restore" plugin you can backup and restore WooCommerce shop inkl. Database with products;
35
- * Notification loging on screen and in file;
 
 
36
  * Use your own App key and App secret;
37
  * Supports backup on "Low Memory" Hosting or Server;
38
  * Possibility to make Dropbox backup and restore interface hidden with all listed backups (only Admins can access the backup plugin page);
@@ -94,25 +96,41 @@ After downloading the ZIP file of the Dropbox back up and restoration plugin,
94
  <br />
95
  *If the installation does not succeed, please contact http://www.wpadm.com support staff or refer to your system administrator.*<br />
96
 
97
- To backup website on Dropbox, you need connect a backup plugin to your dropbox account. It's easy to do, but if you need help about "how to connect my backup plugin to dropbox account?", please refer, to FAQ page of backup plugin.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
 
99
- Dropbox Backup Plugin have a settings section on WordPress backup plugin page.
100
- If you need help with the backup plugin or you want to report a bug, so please, also refer to http://www.wpadm.com/support/
101
 
102
  == Other ==
103
 
104
- = Very easy and secure Dropbox Backup and Restoration (website / web page restore from backup) =
105
 
106
- Useful additional functions can be found at www.wpadm.com in the User profile.
107
- DropBox Backup is a new plugin, so we tried to provide a bug-free backup plugin/widget. We are maintain this project.
 
108
 
109
- Information about privacy: AFTER the user has been registered at WPAdm service AND has confirmed their registration,
 
110
  our plugin will get the minimum requirements of php and mysql configuration, version and language of wordpress.
111
- This data will be send to WPAdm service, to get the plugin work correctly, to extend supported configurations of user sites with wpadm-extensions and support.
112
  WE DO NOT COLLECT AND DO NOT STORE THE PERSONAL DATA OF USERS FROM THIS PLUGIN!
113
 
114
-
115
-
116
  = Website Backup on Dropbox =
117
 
118
  For security of your sites, webs hops or online portals is backup a must. With backup from www.webpage-backup.com you can secure backup and restore all your projects independent if it website or woocommerce shop as to make restoring from your backups. From security reasons it is impotent to schedule your backups, thereby your information or comments from your databases no go lost. Of course the more important for the security are (frequently) backups for woocommerce shops or multisite backups and there one click to restores from your backup drive. The woocommerce backups need more storage in cloud due to large files.<br />
@@ -134,6 +152,13 @@ Cloning, duplicate or migrate in principal all the function a same. It gives you
134
 
135
  For restoring your website (or multisite websites) selected files from the dashboard and then select files to restore. In backup list you see the type, date and size. From the list you can remove and select appropriate restoring file. In settings your can add or remove the cloud storage. In case of cloning you must restore your old website backup on other webpage. Cloning is the same how resorting but in more steps. The same bee meant for migrating of multisite and shops and there restore. With our file explorer you can match every file separately for restoration. In case of restoration only this files will be restore. You can restore one file than the next, but it easy to make restoring in bundle or directly to recover whole full backup. The restoration time depend from your hosting and upload rate as well as restoration depend from the file size witch must be restore. Scheduled restoring and recovering isn’t possible, unless somebody have special inquiry on our service to do scheduled recovering. The recover from the Dropbox cloud storage take time, depend from the web site size and right permissions of the folders of your hosting provider.
136
 
 
 
 
 
 
 
 
137
  = What to do if recovering failed? =
138
 
139
  First of all check the data spelling. It is most common mistake. Other common mistakes by recovering are:
@@ -165,6 +190,16 @@ There are some requirements for creating a reliable backup:<br />
165
  A good solution is to have a separate server for remote backups although it is not fail-safe. If the server is unavailable restoration will be impossible. To ensure high accessibility and data safety use cloud storage services.<br />
166
  There are a lot of services providing free but limited cloud storage capacity for backups like Google Drive, Amazon S3 (AWS) or Dropbox. The problem is they do not support FTP protocol which sometimes is the most adequate way of data transfer. In comparison, virtually every host company supports this protocol.
167
 
 
 
 
 
 
 
 
 
 
 
168
 
169
 
170
  == Frequently Asked Questions ==
@@ -197,6 +232,40 @@ You must see all of your backups, that you have made.
197
 
198
  Yes. We recommended to update or upgrade to a newest versions.
199
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  = I just download the dropbox full backup addon for my wordpress site. I've connected the dropbox addon (application) to my dropbox account and pushed the button "create dropbox backup". But after the finish of backup where can I find the backup files, so I be sure, that the backup was done? =
201
 
202
  If you checked in the Setting of Dropbox plugin the checkbox "Leave local copy on my hosting", than you may to have two backups:<br />
@@ -237,6 +306,15 @@ To schedule backup of your webpage (website backup), you may use an account at w
237
  Please, see the previous question "I want schedule backup. How can I schedule backup of my website?".
238
  Generally - YES, you can create a scheduled backup, but you may sign in to account at www.webpage-backup.com to make a scheduled backup.
239
 
 
 
 
 
 
 
 
 
 
240
  = Should I register to make a back up of my site? =
241
 
242
  Our plugin for back up is completely autonomous plugin for back up, so you don't need to register to make a back up of your site.
@@ -283,6 +361,18 @@ The version for mysql backup (DB Backup) is available due control panel at http:
283
 
284
  Ok, if you want to use an SCP Backup, please, wait for some versions of this plugin over their, and we will make an scp backup for you.
285
 
 
 
 
 
 
 
 
 
 
 
 
 
286
  = FTP Backup? =
287
 
288
  The name of this plugin is "Dropbox" Backup and Restore. From control panel at http://www.webpage-backup.com you can do also an FTP Backup. Please, checkout an FTP Backup so.
@@ -369,6 +459,10 @@ Clear the checkbox, to have the PHP extension appear on the customers "phpinfo"
369
  = I want optimize my MySQL database before I do my backup. How can I do that? =
370
  In the Website to Dropbox backup & restoration plugin you can find an appropriate option in the Settings block of the Dropbox plugin. The optimize database setting is per default activated and in use. If you hasn't changed this configuration, then every time, as you doing backup, the database will be optimized automatically.
371
 
 
 
 
 
372
  = How much time it will take to create a backup of my website? =
373
  There are many hardware and software dependences. Approximately the average time for website takes up to 360 seconds for 50 Mb website. There are many hardware and server/web hosting software dependencies to create a back up.
374
 
@@ -392,16 +486,7 @@ Please, keep your Dropbox Backup and Restore plugin up-to-date.
392
 
393
  **Rev.**&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;&nbsp;**Description** <br />
394
 
395
- &nbsp;&nbsp;&nbsp;&nbsp; Plugin "Dropbox backup & restore" - successfully tested up to 4.6.1
396
- @1492054&nbsp;&nbsp;&nbsp;&nbsp; regex of parse db data
397
- @1484886&nbsp;&nbsp;&nbsp;&nbsp; Misspelling + taags are not visible
398
- @1484831&nbsp;&nbsp;&nbsp;&nbsp; Explanation about dropbox connection after plugin installation.
399
- @1476739&nbsp;&nbsp;&nbsp;&nbsp; test up to 4.6
400
- @1474653&nbsp;&nbsp;&nbsp;&nbsp; updated function of restore
401
- @1471067&nbsp;&nbsp;&nbsp;&nbsp; "Dropbox Backup & restore" - parse for db data
402
- @1463460&nbsp;&nbsp;&nbsp;&nbsp; Restore connections to DB with use of mysqli or mysql. Automate DB …
403
- @1459117&nbsp;&nbsp;&nbsp;&nbsp; change notice form
404
- @1455954&nbsp;&nbsp;&nbsp;&nbsp; update Changelog
405
  &nbsp;&nbsp;&nbsp;&nbsp;To restore connect to the database will be also used mysqli or mysql. The database connection type will be selected automatically.<br />
406
  During restoring process: the config file of WordPress wp-config.php will use config of new website configuration to connect to the database.<br />
407
  @1448769&nbsp;&nbsp;&nbsp;&nbsp;"Dropbox backup & restore" - added tmp folder for library pclzip, deleted files tmp for pclzip<br />
1
  === Backup & Restore Dropbox ===
2
  Plugin Name: Backup & Restore Dropbox
3
+ Version: 1.4.7.3
4
  Donate link: http://www.wpadm.com/donate
5
  URI: http://www.wpadm.com/dropbox-backup
6
  Tags: dropbox, backup, dropbox backup, database, file, full backup, manage, sicherung, database backup, file backup, page backup, page, web, web backup, web page, synchronize, clone, duplicate, move, web page backup, site, site backup, back up, cloud, Cloud Files, cloud backup, db backup, dump, german, migrate, multisite, German, schedule, storage, time, upload, data bank, zip, archive, backups, restore, db, recover, recovery, restoration, wp backup, wordpress backup, wordpress backup to dropbox, plugin wordpress backup, wpadm, wpadm.com, website, website backup, website back up, wp backup, wordpress backup, scheduled backup, backup scheduler, tool, backup tool
7
  Requires at least: 3.9
8
+ Tested up to: 4.6
9
  Stable tag: trunk
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
31
  * Dropbox Backup: create the Full Backup (Files + Database) of Web Page at Local Storage and upload this to Dropbox;
32
  * Local Restore: restoration from Local backup at your website (web hosting);
33
  * Dropbox Restore: restoration from Dropbox backup;
34
+ * Full control of included and excluded folders and files (can be found in "Settings");
35
+ * You can create limited backup with database only (without files and/or folders). Just check "Settings" of backup plugin;
36
+ * With "dropbox backup & restore" plugin you can backup and restore WooCommerce shop inkl. database with products;
37
+ * Notification logging on screen and in file;
38
  * Use your own App key and App secret;
39
  * Supports backup on "Low Memory" Hosting or Server;
40
  * Possibility to make Dropbox backup and restore interface hidden with all listed backups (only Admins can access the backup plugin page);
96
  <br />
97
  *If the installation does not succeed, please contact http://www.wpadm.com support staff or refer to your system administrator.*<br />
98
 
99
+ Dropbox Backup Plugin have a settings section on WordPress plugin page.
100
+
101
+ ### DO NOT FORGET to connect your dropbox backup plugin to Dropbox before creating your first Dropbox backup ###
102
+
103
+ 1. Go to Admin dashboard of your website;<br />
104
+ 2. Open "Settings" of website backup plugin;<br />
105
+ 3. Click "Connect to Dropbox" button;<br />
106
+ 3a. Sure, if you want, you can use your own App Key and App Secret. More Information about this you can read on [FAQ](https://wordpress.org/plugins/dropbox-backup/faq/) page or in the Settings block of your installed plugin, near "Connect to Dropbox" button;<br />
107
+
108
+ Watch this video about:
109
+ <ul>
110
+ <li>How to install Dropbox backup and restore plugin on WordPress</li>
111
+ <li>How to connect Dropbox backup and restore plugin to Dropbox</li>
112
+ <li>How to perform a backup using Dropbox backup and restore plugin for Wordpress</li>
113
+ </ul>
114
+
115
+ https://www.youtube.com/watch?v=Hdzoh0BFpmg
116
+
117
+
118
+ If you need help with the plugin or you want to report a bug, so please, also refer to http://www.wpadm.com/support/
119
 
 
 
120
 
121
  == Other ==
122
 
 
123
 
124
+ = Very easy and secure Dropbox Backup and Restoration (website / web page restore from backup) =
125
+ Usefull additional functions can be found at www.wpadm.com in the User profile.
126
+ DropBox Backup is a new plugin, so we tried to provide a bug-free plugin/widget. We are maintain this project.
127
 
128
+ Information about privacy:<br />
129
+ In case the user has been registered at WPAdm service AND has confirmed their registration,
130
  our plugin will get the minimum requirements of php and mysql configuration, version and language of wordpress.
131
+ This data will be send to WPAdm service, to get the plugin work correctly, to extend supported configurations of user sites with wpadm-extensions and support.<br />
132
  WE DO NOT COLLECT AND DO NOT STORE THE PERSONAL DATA OF USERS FROM THIS PLUGIN!
133
 
 
 
134
  = Website Backup on Dropbox =
135
 
136
  For security of your sites, webs hops or online portals is backup a must. With backup from www.webpage-backup.com you can secure backup and restore all your projects independent if it website or woocommerce shop as to make restoring from your backups. From security reasons it is impotent to schedule your backups, thereby your information or comments from your databases no go lost. Of course the more important for the security are (frequently) backups for woocommerce shops or multisite backups and there one click to restores from your backup drive. The woocommerce backups need more storage in cloud due to large files.<br />
152
 
153
  For restoring your website (or multisite websites) selected files from the dashboard and then select files to restore. In backup list you see the type, date and size. From the list you can remove and select appropriate restoring file. In settings your can add or remove the cloud storage. In case of cloning you must restore your old website backup on other webpage. Cloning is the same how resorting but in more steps. The same bee meant for migrating of multisite and shops and there restore. With our file explorer you can match every file separately for restoration. In case of restoration only this files will be restore. You can restore one file than the next, but it easy to make restoring in bundle or directly to recover whole full backup. The restoration time depend from your hosting and upload rate as well as restoration depend from the file size witch must be restore. Scheduled restoring and recovering isn’t possible, unless somebody have special inquiry on our service to do scheduled recovering. The recover from the Dropbox cloud storage take time, depend from the web site size and right permissions of the folders of your hosting provider.
154
 
155
+ = Backing Up and Restoration to Dropbox =
156
+ = Backup:Yes Or No? =
157
+ <p>In the age of trend-setting technologies, information backing up is necessary for many life spheres that are related in any way to creation of something. That refers to programming, site building, engineering, designing, not to mention home data - photos, videos and other stuff. This list can go on and on… One would think, what is so special about this backup thing? Well, the one fact known for sure is that it saves lives of both: different projects and people who fagged away at these very same projects.</p>
158
+ <p>It has been said all the time that everyone should make the reserve copy (or backup), but not many actually do that, and besides, there are even those who have no clue about it and what it is for. Nevertheless, information about backup is really an important and useful habit, so let’s know what’s what about it.</p>
159
+ <p>Firstly, there’s a need to determine the backup process – it is a data redundancy to different storage devices, making copies of the existing data. Now let’s clear its usefulness to each and every. On one hand, modern computers and their hard drives, which are the major and the most popular data storage places, have attained quite dramatic reliability numbers. Multiform redundant coding on different levels of data management provides strong security from the possible sad situations when the information is damaged as a result of accidental error in the act of data saving. But on the second thought, even the most dependable storage mediums sooner or later go down, and for what is more, it usually happens all of the sudden. Now that is the break point, when you finally change your mind upon all the information kept by people on their hard discs. Passwords and contacts, momentous pictures and rare music collections, all possible working data – this whole treasure can disappear without warning from your website, which can turn to serious financial and time losses in addition to emotional stress.</p>
160
+ <p>The easiest variant is to simply copy data to another folder on a hard drive. But unfortunately, that is an unreliable decision, because that would release you from only the small number of possible problems, even if this folder is placed on another hardware. Now you are aware that at the present digital information day creating of backup is neither a whim nor extra precaution, this is a plain safety measure.</p>
161
+
162
  = What to do if recovering failed? =
163
 
164
  First of all check the data spelling. It is most common mistake. Other common mistakes by recovering are:
190
  A good solution is to have a separate server for remote backups although it is not fail-safe. If the server is unavailable restoration will be impossible. To ensure high accessibility and data safety use cloud storage services.<br />
191
  There are a lot of services providing free but limited cloud storage capacity for backups like Google Drive, Amazon S3 (AWS) or Dropbox. The problem is they do not support FTP protocol which sometimes is the most adequate way of data transfer. In comparison, virtually every host company supports this protocol.
192
 
193
+ = Restoration of Backup Files =
194
+ <p>Different factors may be the reason for someone to restore his data from a dropbox backup. This is a truly helpful option that supposes bringing the saved data from dropbox storage place back to its original in case you’ve lost or damaged the existing one.</p>
195
+ = Best Choice to Keep Data =
196
+ <p>Among the available ways to maintain information the first place belongs rightfully to **cloud storages** or **cloud drives**. These are sorts of virtual data storages, that save and manage the data via numerous servers strewn about World Wide Web. Their principle is simple: every ‘cloud’ has definitively stated limit of Gb virtual space, that is given to a new user absolutely for free. But in time, if a person wants to expand it, he’ll have to pay according to price plan. So here we have a simple case of effective advertising – a user gets used to the comfort and mobility of the network repository, and after he concludes that the cloud suits him to the full extend in every meanings, he pays for the “rent” of this sufficiency.</p>
197
+ = Dropbox Backup and WordPress =
198
+ <p>For the present day Dropbox cloud is still an unbeaten leader that is up to multi-million clients number. Most probably that has to do with the fact that it is Dropbox that stood at the origins of virtual space providing to users, and it is the first company, that has realized the idea of cloud data storage. It works by creation of a virtual folder in the cloud, where all the info of your wordpress website is saved, the one which you download to your Dropbox folder on your computer. For the WordPress website management the best choice is to download a plugin to easily administrate your source from wordpress admin dashboard. Backup&Restore Dropbox has many positive reviews and it deals with the performance of backup and restores, both local and dropbox.<br />
199
+ <p>Dropbox Full Backup for WordPress is good for both restore and backups tasks. It allows to use your own App key and App secret in order to keep then private with higher security for yourself. It can be your personal guard that can keep all the files saved and backed up as much as possible, and even in case of your website data lost, you are able to restore all the data just with one click. </p>
200
+ <br />
201
+ <p>To make a conclusion we’d say, that in order to be safe and sound with any of your data of your WordPress site information you should trouble yourself with backing up of an important information. That will restrict possible damages to minimum and save your time and nerves.</p>
202
+
203
 
204
 
205
  == Frequently Asked Questions ==
232
 
233
  Yes. We recommended to update or upgrade to a newest versions.
234
 
235
+
236
+ = How do I do this: Dropbox Backup wasn't created. There is not enough script running time to perform backup operations, please increase the PHP variable max_execution_time. =
237
+
238
+ There are two ways to do it increase the PHP variable max_execution_time:<br />
239
+
240
+ 1. If the above mentioned method does not work, or your web host does not allow you to do it, you can change "Waiting time (minutes)" in the "Settings" area where you initiate the backup.<br />
241
+
242
+ 2. If you have access to your hosting / server dashboard, please, find PHP settings and add the following:<br />
243
+
244
+ max_execution_time = 90 (script running 90 seconds).<br />
245
+
246
+ 3. If you have access to FTP settings, find FTP file, called php.ini and add there max_execution_time = 90 (script running 90 seconds).<br />
247
+
248
+ If 90 is not enough for your script running, write 120 and so forth. <br />
249
+
250
+ If you write down 0, you will have unlimited script running time. <br />
251
+ Some materials take a long time to process before being transmitted.<br />
252
+
253
+ 4. If you can’t find the php.ini file, then just try to create a new one in the root folder of your website. Add the setting described above to the created php.ini file.<br />
254
+
255
+ 5. If the methods above doesn’t work for you - try to set append variable at the end of index.php file in root folder of your website.<br />
256
+
257
+ ini_set('max_execution_time', '90');<br />
258
+
259
+ 6. You can also add the following code in .htaccess file:<br />
260
+
261
+ php_value max_execution_time 90<br />
262
+
263
+ **Check, if you have added this setting to the currently active php.ini file.**<br />
264
+
265
+ You can change it, for example from 3 to 5 minutes. This setting must be set in seconds. <br />
266
+
267
+
268
+
269
  = I just download the dropbox full backup addon for my wordpress site. I've connected the dropbox addon (application) to my dropbox account and pushed the button "create dropbox backup". But after the finish of backup where can I find the backup files, so I be sure, that the backup was done? =
270
 
271
  If you checked in the Setting of Dropbox plugin the checkbox "Leave local copy on my hosting", than you may to have two backups:<br />
306
  Please, see the previous question "I want schedule backup. How can I schedule backup of my website?".
307
  Generally - YES, you can create a scheduled backup, but you may sign in to account at www.webpage-backup.com to make a scheduled backup.
308
 
309
+ = Error message when trying to backup WP website and send to Dropbox. Dropbox Backup wasn't created. PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature. Please advise how to fix this? =
310
+
311
+ This ERROR:<br />
312
+
313
+ **PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature** <br />
314
+
315
+ means that you have not enough free space on your hard drive.<br />
316
+ To solve this problem, you have to go to your ISP panel (Plesk, cPanel, etc.) and check the disk space on your hosting or server.
317
+
318
  = Should I register to make a back up of my site? =
319
 
320
  Our plugin for back up is completely autonomous plugin for back up, so you don't need to register to make a back up of your site.
361
 
362
  Ok, if you want to use an SCP Backup, please, wait for some versions of this plugin over their, and we will make an scp backup for you.
363
 
364
+ = What do I need to do? Local Backup wasn't created: There is not enough memory to perform archiving of big files and continue backup operations, please increase the PHP variable memory_limit. =
365
+
366
+ There are two ways to solve your problem:<br />
367
+
368
+ 1. If you have access to your hosting/server operating panel, please, find PHP settings and add the following:<br />
369
+
370
+ memory_limit = 256M (use 256 MB)<br />
371
+
372
+ 2. If you have access to FTP settings, find FTP file, called php.ini and add there memory_limit = 256M (use 256 MB)<br />
373
+
374
+ Full description of php.ini and memory_limit you can find here http://php.net/manual/en/ini.core.php#ini.memory-limit <br />
375
+
376
  = FTP Backup? =
377
 
378
  The name of this plugin is "Dropbox" Backup and Restore. From control panel at http://www.webpage-backup.com you can do also an FTP Backup. Please, checkout an FTP Backup so.
459
  = I want optimize my MySQL database before I do my backup. How can I do that? =
460
  In the Website to Dropbox backup & restoration plugin you can find an appropriate option in the Settings block of the Dropbox plugin. The optimize database setting is per default activated and in use. If you hasn't changed this configuration, then every time, as you doing backup, the database will be optimized automatically.
461
 
462
+ = Once I tried to conduct a Dropbox backup I received this error - Dropbox Backup wasn't created. Dropbox returned an error during file sending: "Invalid OAuth1 token." =
463
+ Please, reconnect to Dropbox, by clicking "Connect to Dropbox" button, in the "Settings" on plugin page of your website. <br />
464
+
465
+
466
  = How much time it will take to create a backup of my website? =
467
  There are many hardware and software dependences. Approximately the average time for website takes up to 360 seconds for 50 Mb website. There are many hardware and server/web hosting software dependencies to create a back up.
468
 
486
 
487
  **Rev.**&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;&nbsp;**Description** <br />
488
 
489
+ &nbsp;&nbsp;&nbsp;&nbsp;WordPress backup plugin Dropbox backup & restore, added "exclude/include" files and folder window. Bug fixes.<br />
 
 
 
 
 
 
 
 
 
490
  &nbsp;&nbsp;&nbsp;&nbsp;To restore connect to the database will be also used mysqli or mysql. The database connection type will be selected automatically.<br />
491
  During restoring process: the config file of WordPress wp-config.php will use config of new website configuration to connect to the database.<br />
492
  @1448769&nbsp;&nbsp;&nbsp;&nbsp;"Dropbox backup & restore" - added tmp folder for library pclzip, deleted files tmp for pclzip<br />
template/css/admin-style-wpadm.css CHANGED
@@ -559,6 +559,8 @@ body .ui-tooltip {
559
  margin-right:20px;
560
  background: #fff;
561
  padding: 20px;
 
 
562
  }
563
  #sent-error-report {
564
  background: #fff;
@@ -586,9 +588,11 @@ body .ui-tooltip {
586
  padding-bottom: 30px;
587
  width: 100%;
588
  }
589
-
 
 
590
  .show-includes input.input-folder[type="checkbox"] + label {
591
- font: 18px bold;
592
  color: #444;
593
  cursor: pointer;
594
  }
@@ -600,6 +604,14 @@ width: 18px;
600
  margin: 0 5px 0 0;
601
  background-image: url(folder.png);
602
  }
 
 
 
 
 
 
 
 
603
  .loading-img {
604
  text-align: center;
605
  height: 23px;
@@ -608,6 +620,12 @@ margin: 0 auto;
608
  .show-includes input.checkbox-send[type="checkbox"] {
609
  margin-top:0px;
610
  }
 
 
 
 
 
 
611
  .show-includes input.input-folder[type="checkbox"]:checked + label::before {
612
  background-image: url(icon-folder-open.gif);
613
  }
@@ -1023,4 +1041,4 @@ vertical tablet computer
1023
  margin-top:5px;
1024
  margin-bottom:8px;
1025
  }
1026
- }
559
  margin-right:20px;
560
  background: #fff;
561
  padding: 20px;
562
+ height: 200px;
563
+ overflow: auto;
564
  }
565
  #sent-error-report {
566
  background: #fff;
588
  padding-bottom: 30px;
589
  width: 100%;
590
  }
591
+ .show-includes input.input-folder[type="checkbox"] + label span {
592
+ color: #804000;
593
+ }
594
  .show-includes input.input-folder[type="checkbox"] + label {
595
+ font: 18px;
596
  color: #444;
597
  cursor: pointer;
598
  }
604
  margin: 0 5px 0 0;
605
  background-image: url(folder.png);
606
  }
607
+ .show-includes input.input-folder[type="checkbox"] + label.is-file::before {
608
+ background-image: url(file2.png);
609
+ width:15px;
610
+ height:15px;
611
+ }
612
+ .field-value-folder-or-file {
613
+ line-height: 18px;
614
+ }
615
  .loading-img {
616
  text-align: center;
617
  height: 23px;
620
  .show-includes input.checkbox-send[type="checkbox"] {
621
  margin-top:0px;
622
  }
623
+ .show-includes input.input-folder[type="checkbox"]:checked + label.is-file::before {
624
+ background-image: url(file2.png);
625
+ }
626
+ .show-includes input.input-folder[type="checkbox"]:checked:disabled + label.is-file::before {
627
+ background-image: url(file2.png);
628
+ }
629
  .show-includes input.input-folder[type="checkbox"]:checked + label::before {
630
  background-image: url(icon-folder-open.gif);
631
  }
1041
  margin-top:5px;
1042
  margin-bottom:8px;
1043
  }
1044
+ }
template/css/file.png ADDED
Binary file
template/css/file2.png ADDED
Binary file
template/js/admin-wpadm.js CHANGED
@@ -66,3 +66,133 @@ function blick(id, border_)
66
  setTimeout('blick("' + id + '", ' + border_ + ')', 800);
67
  }
68
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  setTimeout('blick("' + id + '", ' + border_ + ')', 800);
67
  }
68
  }
69
+
70
+ var send_checked = [];
71
+ function connectFolder(t)
72
+ {
73
+ folder = jQuery(t).val();
74
+ send_checked = unique(send_checked);
75
+ k = jQuery.inArray( folder, send_checked );
76
+ if ( k >= 0) {
77
+ if (!t.checked) {
78
+ send_checked.splice(k,1);
79
+ }
80
+ } else {
81
+ if (t.checked) {
82
+ send_checked[send_checked.length] = folder;
83
+ }
84
+ }
85
+ divs = jQuery(t).parents('div[id^="inc_"]');
86
+ set = true;
87
+ if (divs.length > 0) {
88
+ for(i = 0; i < divs.length; i ++) {
89
+ if(i == 1) {
90
+ check = jQuery(divs[i]).find('.checkbox-send:checked');
91
+ if(check.length > 1) {
92
+ set = false;
93
+ }
94
+ }
95
+ id = jQuery(divs[i]).attr('data-value');
96
+ if (set) {
97
+ if (t.checked) {
98
+ jQuery("#send-to-" + id).attr('checked', true);
99
+ } else {
100
+ jQuery("#send-to-" + id).attr('checked', false);
101
+ }
102
+ }
103
+ }
104
+ }
105
+ t_id = jQuery(t).attr('data-value-cache');
106
+ if (jQuery("#include_" + t_id).length > 0) {
107
+ checkboxes = jQuery("#include_" + t_id).find('.checkbox-send');
108
+ for(i = 0; i < checkboxes.length; i++) {
109
+ if (t.checked) {
110
+ jQuery(checkboxes[i]).attr('checked', true);
111
+ } else {
112
+ jQuery(checkboxes[i]).attr('checked', false);
113
+ }
114
+ }
115
+ }
116
+
117
+ }
118
+ function showLoadingImg(show)
119
+ {
120
+ img = jQuery('.loading-img').find('img');
121
+ dips = jQuery(img).css('display');
122
+ if (dips == 'none') {
123
+ if (show) {
124
+ jQuery(img).css('display', 'block');
125
+ }
126
+ } else {
127
+ if (!show) {
128
+ jQuery(img).css('display', 'none');
129
+ }
130
+ }
131
+ }
132
+
133
+ function unique(arr)
134
+ {
135
+ arr = arr.filter(function (e, i, arr) {
136
+ return arr.lastIndexOf(e) === i;
137
+ });
138
+ return arr;
139
+ }
140
+
141
+ var rt = {};
142
+
143
+ rt['%E0']='%D0%B0';rt['%E1']='%D0%B1';rt['%E2']='%D0%B2';rt['%E3']='%D0%B3';rt['%E4']='%D0%B4';
144
+ rt['%E5']='%D0%B5';rt['%B8']='%D1%91';rt['%E6']='%D0%B6';rt['%E7']='%D0%B7';rt['%E8']='%D0%B8';
145
+ rt['%E9']='%D0%B9';rt['%EA']='%D0%BA';rt['%EB']='%D0%BB';rt['%EC']='%D0%BC';rt['%ED']='%D0%BD';
146
+ rt['%EE']='%D0%BE';rt['%EF']='%D0%BF';rt['%F0']='%D1%80';rt['%F1']='%D1%81';rt['%F2']='%D1%82';
147
+ rt['%F3']='%D1%83';rt['%F4']='%D1%84';rt['%F5']='%D1%85';rt['%F6']='%D1%86';rt['%F7']='%D1%87';
148
+ rt['%F8']='%D1%88';rt['%F9']='%D1%89';rt['%FC']='%D1%8C';rt['%FB']='%D1%8B';rt['%FA']='%D1%8A';
149
+ rt['%FD']='%D1%8D';rt['%FE']='%D1%8E';rt['%FF']='%D1%8F';rt['%C0']='%D0%90';rt['%C1']='%D0%91';
150
+ rt['%C2']='%D0%92';rt['%C3']='%D0%93';rt['%C4']='%D0%94';rt['%C5']='%D0%95';rt['%A8']='%D0%81';
151
+ rt['%C6']='%D0%96';rt['%C7']='%D0%97';rt['%C8']='%D0%98';rt['%C9']='%D0%99';rt['%CA']='%D0%9A';
152
+ rt['%CB']='%D0%9B';rt['%CC']='%D0%9C';rt['%CD']='%D0%9D';rt['%CE']='%D0%9E';rt['%CF']='%D0%9F';
153
+ rt['%D0']='%D0%A0';rt['%D1']='%D0%A1';rt['%D2']='%D0%A2';rt['%D3']='%D0%A3';rt['%D4']='%D0%A4';
154
+ rt['%D5']='%D0%A5';rt['%D6']='%D0%A6';rt['%D7']='%D0%A7';rt['%D8']='%D0%A8';rt['%D9']='%D0%A9';
155
+ rt['%DC']='%D0%AC';rt['%DB']='%D0%AB';rt['%DA']='%D0%AA';rt['%DD']='%D0%AD';rt['%DE']='%D0%AE';
156
+ rt['%DF']='%D0%AF';
157
+
158
+ function convert_to_cp1251(str) {
159
+ var ret='';
160
+
161
+ var l=str.length;
162
+ var i=0;
163
+ while (i<l) {
164
+
165
+ var f=0;
166
+ for (keyVar in t) {
167
+ if (str.substring(i,i+6)==keyVar) {ret+=t[keyVar];i+=6;f=1;}
168
+ }
169
+
170
+ if (!f) {ret+=str.substring(i,i+1);i++;}
171
+ }
172
+
173
+ return ret;
174
+ }
175
+
176
+ function convert_from_cp1251(str) {
177
+ var ret='';
178
+
179
+ var l=str.length;
180
+ var i=0;
181
+ while (i<l) {
182
+
183
+ var f=0;
184
+ for (keyVar in rt) {
185
+ if (str.substring(i,i+3)==keyVar) {ret+=rt[keyVar];i+=3;f=1;}
186
+ }
187
+
188
+ if (!f) {ret+=str.substring(i,i+1);i++;}
189
+ }
190
+
191
+ return ret;
192
+ }
193
+
194
+ function urldecode (str) {
195
+ try {ret=decodeURIComponent((str + '').replace(/\+/g, '%20'));}
196
+ catch (e) {}
197
+ return ret;
198
+ }
template/wpadm_show_backup.php CHANGED
@@ -184,7 +184,7 @@
184
 
185
  }
186
 
187
- var auth_param = <?php echo isset($dropbox_options['app_key']) && isset($dropbox_options['app_secret']) && isset($dropbox_options['uid']) && $dropbox_options['uid'] != '' ? 'false' : 'true' ?>;
188
  function start_dropbox_backup(t)
189
  {
190
  if (auth_param === false) {
@@ -713,15 +713,30 @@
713
  }
714
  function InludesSetting()
715
  {
716
- disp = jQuery('#inludes-setting').css('display');
717
- if (disp == 'none') {
718
- showLoadingImg(true);
719
- getIncludesData();
720
- jQuery('#inludes-setting').show("slow");
721
  } else {
722
- jQuery('.show-includes').html("");
723
- jQuery('#inludes-setting').hide("slow");
 
 
 
 
 
 
 
 
 
724
  }
 
 
 
 
 
 
 
 
 
725
  }
726
  var level_tree = {};
727
  function getIncludesData(type, dir_)
@@ -753,7 +768,7 @@
753
  level_tree[level_tree.length] = data_res.dir;
754
  },
755
  error: function(jqXHR, textStatus, errorThrown) {
756
- AjaxAlert(jqXHR, textStatus, errorThrown);
757
  }
758
  });
759
  }
@@ -780,14 +795,20 @@
780
  for(i = 0; i < data.length; i++) {
781
  if (data[i].check) {
782
  check = 'checked="checked"' ;
783
- send_checked[send_checked.length] = data[i].check_folder;
784
  } else {
785
  check = '';
786
  }
787
- html += '<div id="inc_' + data[i].cache + '" data-value="' + data[i].cache + '">' +
788
- '<input type="checkbox" ' + check + ' class="checkbox-send" value="' + data[i].folder + '" name="folder-include" id="send-to-' + data[i].cache + '" onclick="connectFolder(this)" />' +
789
- '<input type="checkbox" class="input-folder" value="/' + data[i].dir + '" id="' + data[i].cache + '" onclick="loadInludes(\'/' + data[i].folder + '\', \'' + data[i].cache +'\', this, \'' + level_tree.length + '\')" />' +
790
- '<label for="' + data[i].cache + '">' + data[i].dir + ' <span style="font-size:10px;">(' + data[i].perm + ')</span>' + '</label>' +
 
 
 
 
 
 
791
  '<div id="img_load_' + data[i].cache + '" style="display:none; margin-left:10px;position:relative;">' +
792
  '<img style="position:absolute;bottom:0;" src="<?php echo plugins_url('/img/folder-loader.gif', dirname(__FILE__) ); ?>" alt="load" title="load" >' +
793
  '</div>'+
@@ -816,10 +837,12 @@
816
  dataType: 'json',
817
  success: function(data_res) {
818
  showLoadingImg(false);
819
-
 
 
820
  },
821
  error: function (jqXHR, textStatus, errorThrown) {
822
- AjaxAlert(jqXHR, textStatus, errorThrown);
823
  }
824
  });
825
  }
@@ -916,9 +939,9 @@
916
  showTime(1);
917
  });
918
  <?php }?>
919
- jQuery(document).ready(function() {
920
- jQuery('.wpadm-tooltip').tooltip();
921
- });
922
  </script>
923
  <?php if (!empty($error)) {
924
  echo '<div class="error" style="text-align: center; color: red; font-weight:bold;">
@@ -1206,7 +1229,7 @@
1206
  }
1207
  ?>
1208
  </select>
1209
-
1210
  <span></span>
1211
  </div>
1212
  <?php if ( is_super_admin() ) { ?>
@@ -1231,6 +1254,11 @@
1231
  <input type="checkbox" <?php echo (isset($dropbox_options['is_show_admin_bar']) && $dropbox_options['is_show_admin_bar'] == 1) ? 'checked="checked"' : ( !isset($dropbox_options['is_show_admin_bar']) ? 'checked="checked"' : '' ); ?> name="is_show_admin_bar" value="1" id="is_show_admin_bar" onclick="saveSetting('is_show_admin_bar')" />
1232
  <label for="is_show_admin_bar" style="font-size: 13px;"><?php _e('Show in a admin bar','dropbox-backup'); ?></label>
1233
  </div>
 
 
 
 
 
1234
  </div>
1235
  </form>
1236
  </div>
@@ -1351,31 +1379,33 @@
1351
  <form action="<?php echo admin_url( 'admin-post.php?action=stop_backup' )?>" method="post" id="stop_backups" name="stop_backups">
1352
  <input type="hidden" name="type_backup" id="type_backup" value="" />
1353
  </form>
1354
- <!-- <div id="inludes-setting" class="" style="display: none; position: relative; text-align: center; background: #f1ebeb; border: 2px solid #dde4ff; border-radius: 5px;">
1355
- <div>
1356
- <div class="title-description" style="font-size: 20px; text-align: center;padding-top:20px; line-height: 30px;">
1357
- <?php _e('Include/Exclude of Files & Folders to backup','dropbox-backup'); ?>
1358
- <div style="font-size: 14px;">
1359
- <?php _e('Database of web page will be included automatically','dropbox-backup'); ?>
1360
- </div>
1361
- </div>
1362
- <div class="loading-img">
1363
- <img style="display: none; margin: 0 auto;" src="<?php echo plugins_url('/img/wpadmload.gif', dirname(__FILE__) ); ?>">
1364
- </div>
1365
- <div class="button-description">
1366
- <!-- <input type="radio" value="folder" id="inc-folder" checked="checked"><label for="inc-folder">View folders</label> &nbsp;&nbsp;&nbsp; <input type="radio" value="files" id="inc-files" ><label for="inc-files">View Folders & Files</label>
1367
- <div class="show-includes">
 
1368
 
1369
- </div>
1370
- </div>
1371
- <div class="clear"></div>
1372
- <div class="button-description" style="padding:20px 0; width: 100%;">
1373
- <input type="button" value="<?php _e('OK','dropbox-backup'); ?>" onclick="saveIncludes();" style="text-align: center; width: 100px;" class="button-wpadm">
1374
- <input type="button" value="<?php _e('Cancel','dropbox-backup'); ?>" onclick="InludesSetting();" style="text-align: center; width: 100px;" class="button-wpadm">
1375
- </div>
1376
- </div>
 
1377
 
1378
- </div> -->
1379
 
1380
  <table class="table" style="margin-top: 5px; display: <?php echo isset($data['md5']) && ($n = count($data['data'])) && is_array($data['data'][0]) ? 'table' : 'none'?>;">
1381
  <thead>
184
 
185
  }
186
 
187
+ var auth_param = <?php echo isset($dropbox_options['app_key']) && isset($dropbox_options['app_secret']) && isset($dropbox_options['uid']) && $dropbox_options['uid'] != '' ? 'false' : 'true'; ?>;
188
  function start_dropbox_backup(t)
189
  {
190
  if (auth_param === false) {
713
  }
714
  function InludesSetting()
715
  {
716
+ if (jQuery('#inludes-setting').css('display') == 'block') {
717
+ jQuery('#inludes-setting').arcticmodal('close');
 
 
 
718
  } else {
719
+ jQuery('#inludes-setting').arcticmodal({
720
+ beforeOpen: function(data, el) {
721
+ showLoadingImg(true);
722
+ getIncludesData();
723
+ jQuery('#inludes-setting').css('display','block');
724
+ },
725
+ afterClose: function(data, el) {
726
+ jQuery('.show-includes').html("");
727
+ jQuery('#inludes-setting').css('display','none');
728
+ }
729
+ });
730
  }
731
+ /*disp = jQuery('#inludes-setting').css('display');
732
+ if (disp == 'none') {
733
+ showLoadingImg(true);
734
+ getIncludesData();
735
+ jQuery('#inludes-setting').show("slow");
736
+ } else {
737
+ jQuery('.show-includes').html("");
738
+ jQuery('#inludes-setting').hide("slow");
739
+ } */
740
  }
741
  var level_tree = {};
742
  function getIncludesData(type, dir_)
768
  level_tree[level_tree.length] = data_res.dir;
769
  },
770
  error: function(jqXHR, textStatus, errorThrown) {
771
+ //AjaxAlert(jqXHR, textStatus, errorThrown);
772
  }
773
  });
774
  }
795
  for(i = 0; i < data.length; i++) {
796
  if (data[i].check) {
797
  check = 'checked="checked"' ;
798
+ send_checked[send_checked.length] = urldecode( convert_from_cp1251( data[i].folder ) ) ;
799
  } else {
800
  check = '';
801
  }
802
+ label_class = '';
803
+ var onclick_ = 'onclick="loadInludes(\'/' + data[i].folder + '\', \'' + data[i].cache +'\', this, \'' + level_tree.length + '\')"';
804
+ if (data[i].is_file) {
805
+ label_class = 'class="is-file"';
806
+ onclick_ = '';
807
+ }
808
+ html += '<div class="field-value-folder-or-file" id="inc_' + data[i].cache + '" data-value="' + data[i].cache + '">' +
809
+ '<input type="checkbox" ' + check + ' class="checkbox-send" value="' + urldecode( convert_from_cp1251( data[i].folder ) ) + '" name="folder-include" id="send-to-' + data[i].cache + '" data-value-cache="' + data[i].cache + '" onclick="connectFolder(this)" />' +
810
+ '<input type="checkbox" class="input-folder" value="/' + urldecode( convert_from_cp1251( data[i].dir ) ) + '" id="' + data[i].cache + '" ' + onclick_ + ' />' +
811
+ '<label ' + label_class + ' for="' + data[i].cache + '">' + urldecode( convert_from_cp1251( data[i].dir ) ) + ' <span >(' + data[i].perm + ')</span>' + '</label>' +
812
  '<div id="img_load_' + data[i].cache + '" style="display:none; margin-left:10px;position:relative;">' +
813
  '<img style="position:absolute;bottom:0;" src="<?php echo plugins_url('/img/folder-loader.gif', dirname(__FILE__) ); ?>" alt="load" title="load" >' +
814
  '</div>'+
837
  dataType: 'json',
838
  success: function(data_res) {
839
  showLoadingImg(false);
840
+ if (data_res == 1) {
841
+ InludesSetting();
842
+ }
843
  },
844
  error: function (jqXHR, textStatus, errorThrown) {
845
+ //AjaxAlert(jqXHR, textStatus, errorThrown);
846
  }
847
  });
848
  }
939
  showTime(1);
940
  });
941
  <?php }?>
942
+ jQuery(document).ready(function() {
943
+ jQuery('.wpadm-tooltip').tooltip();
944
+ });
945
  </script>
946
  <?php if (!empty($error)) {
947
  echo '<div class="error" style="text-align: center; color: red; font-weight:bold;">
1229
  }
1230
  ?>
1231
  </select>
1232
+
1233
  <span></span>
1234
  </div>
1235
  <?php if ( is_super_admin() ) { ?>
1254
  <input type="checkbox" <?php echo (isset($dropbox_options['is_show_admin_bar']) && $dropbox_options['is_show_admin_bar'] == 1) ? 'checked="checked"' : ( !isset($dropbox_options['is_show_admin_bar']) ? 'checked="checked"' : '' ); ?> name="is_show_admin_bar" value="1" id="is_show_admin_bar" onclick="saveSetting('is_show_admin_bar')" />
1255
  <label for="is_show_admin_bar" style="font-size: 13px;"><?php _e('Show in a admin bar','dropbox-backup'); ?></label>
1256
  </div>
1257
+ <div class="setting-checkbox">
1258
+ <?php _e('Include/Exclude','dropbox-backup'); ?>
1259
+ <a onclick="InludesSetting();" href="javascript:void(0);" style="color: #fff"><?php _e('Folders and files','dropbox-backup'); ?></a>
1260
+ </div>
1261
+
1262
  </div>
1263
  </form>
1264
  </div>
1379
  <form action="<?php echo admin_url( 'admin-post.php?action=stop_backup' )?>" method="post" id="stop_backups" name="stop_backups">
1380
  <input type="hidden" name="type_backup" id="type_backup" value="" />
1381
  </form>
1382
+ <div id="inludes-setting" class="" style="display: none; width: 550px; position: relative; text-align: center; background: #e5e5e5; border: 2px solid #dde4ff; border-radius: 5px;">
1383
+ <div>
1384
+ <div class="title-description" style="font-size: 20px; text-align: center;padding-top:20px; line-height: 30px;">
1385
+ <?php _e('Selected files and folders will be included to backup','dropbox-backup'); ?>
1386
+ <div style="font-size: 14px;">
1387
+ <?php _e('Database of website will be included automatically','dropbox-backup'); ?>
1388
+ </div>
1389
+ </div>
1390
+ <div class="loading-img">
1391
+ <img style="display: none; margin: 0 auto;" src="<?php echo plugins_url('/img/wpadmload.gif', dirname(__FILE__) ); ?>">
1392
+ </div>
1393
+ <div class="button-description">
1394
+ <!-- <input type="radio" value="folder" id="inc-folder" checked="checked" name="includes-files-folder"><label for="inc-folder"><?php _e('View folders','dropbox-backup'); ?></label>
1395
+ &nbsp;&nbsp;&nbsp; <input type="radio" value="files" id="inc-files" name="includes-files-folder"><label for="inc-files"><?php _e('View Folders & Files','dropbox-backup'); ?></label> -->
1396
+ <div class="show-includes">
1397
 
1398
+ </div>
1399
+ </div>
1400
+ <div class="clear"></div>
1401
+ <div class="button-description" style="padding:20px 0; width: 100%;">
1402
+ <input type="button" value="<?php _e('OK','dropbox-backup'); ?>" onclick="saveIncludes();" style="text-align: center; width: 100px;" class="button-wpadm">
1403
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1404
+ <input type="button" value="<?php _e('Cancel','dropbox-backup'); ?>" onclick="InludesSetting();" style="text-align: center; width: 100px;" class="button-wpadm">
1405
+ </div>
1406
+ </div>
1407
 
1408
+ </div>
1409
 
1410
  <table class="table" style="margin-top: 5px; display: <?php echo isset($data['md5']) && ($n = count($data['data'])) && is_array($data['data'][0]) ? 'table' : 'none'?>;">
1411
  <thead>