Duplicator – WordPress Migration Plugin - Version 1.3.24

Version Description

Download this release

Release Info

Developer cory@lamle.org
Plugin Icon 128x128 Duplicator – WordPress Migration Plugin
Version 1.3.24
Comparing to
See all releases

Code changes from version 1.3.22 to 1.3.24

classes/package/class.pack.database.php CHANGED
@@ -177,18 +177,6 @@ class DUP_Database
177
  DUP_Log::Info($log);
178
  $log = null;
179
 
180
- //Reserved file found
181
- if (file_exists($reserved_db_filepath)) {
182
- $error_message = 'Reserved SQL file detected';
183
- $package->BuildProgress->set_failed($error_message);
184
- $package->Status = DUP_PackageStatus::ERROR;
185
- $package->Update();
186
-
187
- DUP_Log::Error($error_message,
188
- "The file database.sql was found at [{$reserved_db_filepath}].\n"
189
- ."\tPlease remove/rename this file to continue with the package creation.", $errorBehavior);
190
- }
191
-
192
  do_action('duplicator_lite_build_database_start' , $package);
193
 
194
  switch ($mode) {
@@ -643,32 +631,16 @@ class DUP_Database
643
  $rows = $wpdb->get_results($query, ARRAY_A);
644
 
645
  $select_last_error = $wpdb->last_error;
646
- if ('' !== $select_last_error) {
647
- $is_select_error = true;
648
- DUP_LOG::trace($select_last_error);
649
- if (false !== stripos($wpdb->last_error, 'is marked as crashed and should be repaired')) {
650
- $ret_repair = $wpdb->query("repair table `{$table}`");
651
- $ret_repair = false;
652
- if ($ret_repair) {
653
- DUP_LOG::trace("Successfully repaired the {$table}");
654
- $rows = $wpdb->get_results($query, ARRAY_A);
655
- if ('' !== $wpdb->last_error) {
656
- $is_select_error = false;
657
- }
658
- }
659
- }
660
-
661
- if ($is_select_error) {
662
- $fix = esc_html__('Please contact your DataBase administrator to fix the error.', 'duplicator');
663
- $errorMessage = $select_last_error.' '.$fix.'.';
664
- $package->BuildProgress->set_failed($errorMessage);
665
- $package->BuildProgress->failed = true;
666
- $package->failed = true;
667
- $package->Status = DUP_PackageStatus::ERROR;
668
- $package->Update();
669
- DUP_Log::error($select_last_error, $fix, Dup_ErrorBehavior::Quit);
670
- return;
671
- }
672
  }
673
 
674
  if (is_array($rows)) {
177
  DUP_Log::Info($log);
178
  $log = null;
179
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  do_action('duplicator_lite_build_database_start' , $package);
181
 
182
  switch ($mode) {
631
  $rows = $wpdb->get_results($query, ARRAY_A);
632
 
633
  $select_last_error = $wpdb->last_error;
634
+ if ('' !== $select_last_error) {
635
+ $fix = esc_html__('Please contact your DataBase administrator to fix the error.', 'duplicator');
636
+ $errorMessage = $select_last_error.' '.$fix.'.';
637
+ $package->BuildProgress->set_failed($errorMessage);
638
+ $package->BuildProgress->failed = true;
639
+ $package->failed = true;
640
+ $package->Status = DUP_PackageStatus::ERROR;
641
+ $package->Update();
642
+ DUP_Log::error($select_last_error, $fix, Dup_ErrorBehavior::Quit);
643
+ return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
644
  }
645
 
646
  if (is_array($rows)) {
classes/package/class.pack.php CHANGED
@@ -251,6 +251,28 @@ class DUP_Package
251
  $report['ARC']['Status']['Size'] = ($this->Archive->Size > DUPLICATOR_SCAN_SIZE_DEFAULT) ? 'Warn' : 'Good';
252
  $report['ARC']['Status']['Names'] = (count($this->Archive->FilterInfo->Files->Warning) + count($this->Archive->FilterInfo->Dirs->Warning)) ? 'Warn' : 'Good';
253
  $report['ARC']['Status']['UnreadableItems'] = !empty($this->Archive->RecursiveLinks) || !empty($report['ARC']['UnreadableItems'])? 'Warn' : 'Good';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254
 
255
  //$report['ARC']['Status']['Big'] = count($this->Archive->FilterInfo->Files->Size) ? 'Warn' : 'Good';
256
  $report['ARC']['Dirs'] = $this->Archive->Dirs;
251
  $report['ARC']['Status']['Size'] = ($this->Archive->Size > DUPLICATOR_SCAN_SIZE_DEFAULT) ? 'Warn' : 'Good';
252
  $report['ARC']['Status']['Names'] = (count($this->Archive->FilterInfo->Files->Warning) + count($this->Archive->FilterInfo->Dirs->Warning)) ? 'Warn' : 'Good';
253
  $report['ARC']['Status']['UnreadableItems'] = !empty($this->Archive->RecursiveLinks) || !empty($report['ARC']['UnreadableItems'])? 'Warn' : 'Good';
254
+ /*
255
+ $overwriteInstallerParams = apply_filters('duplicator_pro_overwrite_params_data', array());
256
+ $package_can_be_migrate = !(isset($overwriteInstallerParams['mode_chunking']['value'])
257
+ && $overwriteInstallerParams['mode_chunking']['value'] == 3
258
+ && isset($overwriteInstallerParams['mode_chunking']['formStatus'])
259
+ && $overwriteInstallerParams['mode_chunking']['formStatus'] == 'st_infoonly');
260
+ */
261
+ $package_can_be_migrate = true;
262
+ $report['ARC']['Status']['MigratePackage'] = $package_can_be_migrate ? 'Good' : 'Warn';
263
+ $report['ARC']['Status']['CanbeMigratePackage'] = $package_can_be_migrate;
264
+
265
+ $procedures = $GLOBALS['wpdb']->get_col("SHOW PROCEDURE STATUS WHERE `Db` = '".$GLOBALS['wpdb']->dbname."'", 1);
266
+ if (count($procedures)) {
267
+ $create = $GLOBALS['wpdb']->get_row("SHOW CREATE PROCEDURE `".$procedures[0]."`", ARRAY_N);
268
+ $privileges_to_show_create_proc = empty($create[2]) ? false : true;
269
+ } else {
270
+ $privileges_to_show_create_proc = true;
271
+ }
272
+
273
+ $privileges_to_show_create_proc = apply_filters('duplicator_privileges_to_show_create_proc', $privileges_to_show_create_proc);
274
+ $report['ARC']['Status']['showCreateProcStatus'] = $privileges_to_show_create_proc ? 'Good' : 'Warn';
275
+ $report['ARC']['Status']['showCreateProc'] = $privileges_to_show_create_proc;
276
 
277
  //$report['ARC']['Status']['Big'] = count($this->Archive->FilterInfo->Files->Size) ? 'Warn' : 'Good';
278
  $report['ARC']['Dirs'] = $this->Archive->Dirs;
define.php CHANGED
@@ -4,8 +4,8 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
4
  //Prevent directly browsing to the file
5
  if (function_exists('plugin_dir_url'))
6
  {
7
- define('DUPLICATOR_VERSION', '1.3.22');
8
- define('DUPLICATOR_VERSION_BUILD', '2019-09-11_9:30');
9
  define('DUPLICATOR_PLUGIN_URL', plugin_dir_url(__FILE__));
10
  define('DUPLICATOR_SITE_URL', get_site_url());
11
 
@@ -58,6 +58,7 @@ if (function_exists('plugin_dir_url'))
58
  define('DUPLICATOR_MAX_LOG_SIZE', 400000); // The higher this is the more overhead
59
  define('DUPLICATOR_ZIP_ARCHIVE_ADD_FROM_STR', false);
60
  define('DUPLICATOR_DEACTIVATION_FEEDBACK', false);
 
61
 
62
  $GLOBALS['DUPLICATOR_SERVER_LIST'] = array('Apache','LiteSpeed', 'Nginx', 'Lighttpd', 'IIS', 'WebServerX', 'uWSGI');
63
  $GLOBALS['DUPLICATOR_OPTS_DELETE'] = array('duplicator_ui_view_state', 'duplicator_package_active', 'duplicator_settings');
@@ -101,5 +102,4 @@ if (function_exists('plugin_dir_url'))
101
  header("HTTP/1.1 404 Not Found", true, 404);
102
  header("Status: 404 Not Found");
103
  exit();
104
- }
105
- ?>
4
  //Prevent directly browsing to the file
5
  if (function_exists('plugin_dir_url'))
6
  {
7
+ define('DUPLICATOR_VERSION', '1.3.24');
8
+ define('DUPLICATOR_VERSION_BUILD', '2019-11-13_07:45');
9
  define('DUPLICATOR_PLUGIN_URL', plugin_dir_url(__FILE__));
10
  define('DUPLICATOR_SITE_URL', get_site_url());
11
 
58
  define('DUPLICATOR_MAX_LOG_SIZE', 400000); // The higher this is the more overhead
59
  define('DUPLICATOR_ZIP_ARCHIVE_ADD_FROM_STR', false);
60
  define('DUPLICATOR_DEACTIVATION_FEEDBACK', false);
61
+ define("DUPLICATOR_BUFFER_READ_WRITE_SIZE", 4377);
62
 
63
  $GLOBALS['DUPLICATOR_SERVER_LIST'] = array('Apache','LiteSpeed', 'Nginx', 'Lighttpd', 'IIS', 'WebServerX', 'uWSGI');
64
  $GLOBALS['DUPLICATOR_OPTS_DELETE'] = array('duplicator_ui_view_state', 'duplicator_package_active', 'duplicator_settings');
102
  header("HTTP/1.1 404 Not Found", true, 404);
103
  header("Status: 404 Not Found");
104
  exit();
105
+ }
 
duplicator.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Duplicator
4
  Plugin URI: https://snapcreek.com/duplicator/duplicator-free/
5
  Description: Migrate and backup a copy of your WordPress files and database. Duplicate and move a site from one location to another quickly.
6
- Version: 1.3.22
7
  Author: Snap Creek
8
  Author URI: http://www.snapcreek.com/duplicator/
9
  Text Domain: duplicator
@@ -153,6 +153,46 @@ if (!function_exists('wp_normalize_path')) {
153
  }
154
  }
155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  if (is_admin() == true)
157
  {
158
  if (defined('DUPLICATOR_DEACTIVATION_FEEDBACK') && DUPLICATOR_DEACTIVATION_FEEDBACK) {
@@ -286,7 +326,7 @@ if (is_admin() == true)
286
  }
287
  add_action('plugins_loaded', 'duplicator_load_textdomain');
288
 
289
- add_action('admin_init', 'duplicator_init');
290
  add_action('admin_menu', 'duplicator_menu');
291
  add_action('admin_enqueue_scripts', 'duplicator_admin_enqueue_scripts' );
292
  add_action('admin_notices', array('DUP_UI_Notice', 'showReservedFilesNotice'));
@@ -323,7 +363,7 @@ if (is_admin() == true)
323
  * @access global
324
  * @return null
325
  */
326
- function duplicator_init()
327
  {
328
  /* CSS */
329
  wp_register_style('dup-jquery-ui', DUPLICATOR_PLUGIN_URL . 'assets/css/jquery-ui.css', null, "1.11.2");
@@ -412,9 +452,19 @@ if (is_admin() == true)
412
  $lang_txt = esc_html__('Settings', 'duplicator');
413
  $page_settings = add_submenu_page('duplicator', $lang_txt, $lang_txt, $perms, 'duplicator-settings', 'duplicator_get_menu');
414
 
415
- $perms = 'manage_options';
 
 
 
 
 
 
 
 
 
 
416
  $lang_txt = esc_html__('Go Pro!', 'duplicator');
417
- $go_pro_link = '<span style="color:#f18500">' . $lang_txt . '</span>';
418
  $perms = apply_filters($wpfront_caps_translator, $perms);
419
  $page_gopro = add_submenu_page('duplicator', $go_pro_link, $go_pro_link, $perms, 'duplicator-gopro', 'duplicator_get_menu');
420
 
3
  Plugin Name: Duplicator
4
  Plugin URI: https://snapcreek.com/duplicator/duplicator-free/
5
  Description: Migrate and backup a copy of your WordPress files and database. Duplicate and move a site from one location to another quickly.
6
+ Version: 1.3.24
7
  Author: Snap Creek
8
  Author URI: http://www.snapcreek.com/duplicator/
9
  Text Domain: duplicator
153
  }
154
  }
155
 
156
+ function duplicator_init() {
157
+ if (isset($_GET['action']) && $_GET['action'] == 'duplicator_download') {
158
+ $file = sanitize_text_field($_GET['file']);
159
+ $filepath = DUPLICATOR_SSDIR_PATH.'/'.$file;
160
+ // Process download
161
+ if(file_exists($filepath)) {
162
+ // Clean output buffer
163
+ if (ob_get_level() !== 0 && @ob_end_clean() === FALSE) {
164
+ @ob_clean();
165
+ }
166
+
167
+ header('Content-Description: File Transfer');
168
+ header('Content-Type: application/octet-stream');
169
+ header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
170
+ header('Expires: 0');
171
+ header('Cache-Control: must-revalidate');
172
+ header('Pragma: public');
173
+ header('Content-Length: ' . filesize($filepath));
174
+ flush(); // Flush system output buffer
175
+
176
+ try {
177
+ $fp = @fopen($filepath, 'r');
178
+ if (false === $fp) {
179
+ throw new Exception('Fail to open the file '.$filepath);
180
+ }
181
+ while (!feof($fp) && ($data = fread($fp, DUPLICATOR_BUFFER_READ_WRITE_SIZE)) !== FALSE) {
182
+ echo $data;
183
+ }
184
+ @fclose($fp);
185
+ } catch (Exception $e) {
186
+ readfile($filepath);
187
+ }
188
+ exit;
189
+ } else {
190
+ wp_die('Invalid installer file name!!');
191
+ }
192
+ }
193
+ }
194
+ add_action('init', 'duplicator_init');
195
+
196
  if (is_admin() == true)
197
  {
198
  if (defined('DUPLICATOR_DEACTIVATION_FEEDBACK') && DUPLICATOR_DEACTIVATION_FEEDBACK) {
326
  }
327
  add_action('plugins_loaded', 'duplicator_load_textdomain');
328
 
329
+ add_action('admin_init', 'duplicator_admin_init');
330
  add_action('admin_menu', 'duplicator_menu');
331
  add_action('admin_enqueue_scripts', 'duplicator_admin_enqueue_scripts' );
332
  add_action('admin_notices', array('DUP_UI_Notice', 'showReservedFilesNotice'));
363
  * @access global
364
  * @return null
365
  */
366
+ function duplicator_admin_init()
367
  {
368
  /* CSS */
369
  wp_register_style('dup-jquery-ui', DUPLICATOR_PLUGIN_URL . 'assets/css/jquery-ui.css', null, "1.11.2");
452
  $lang_txt = esc_html__('Settings', 'duplicator');
453
  $page_settings = add_submenu_page('duplicator', $lang_txt, $lang_txt, $perms, 'duplicator-settings', 'duplicator_get_menu');
454
 
455
+ $perms = 'manage_options';
456
+ $admin_color = get_user_option('admin_color');
457
+ $orange_for_admin_colors = array(
458
+ 'fresh',
459
+ 'coffee',
460
+ 'ectoplasm',
461
+ 'midnight'
462
+ );
463
+ $style = in_array($admin_color, $orange_for_admin_colors)
464
+ ? 'style="color:#f18500"'
465
+ : '';
466
  $lang_txt = esc_html__('Go Pro!', 'duplicator');
467
+ $go_pro_link = '<span '.$style.'>' . $lang_txt . '</span>';
468
  $perms = apply_filters($wpfront_caps_translator, $perms);
469
  $page_gopro = add_submenu_page('duplicator', $go_pro_link, $go_pro_link, $perms, 'duplicator-gopro', 'duplicator_get_menu');
470
 
installer/dup-installer/assets/inc.css.php CHANGED
@@ -56,7 +56,7 @@
56
  /* ============================
57
  COMMON VIEWS
58
  ============================ */
59
- div#content {border:1px solid #CDCDCD; width:750px; min-height:550px; margin:auto; margin-top:18px; border-radius:5px; box-shadow:0 8px 6px -6px #333; font-size:13px}
60
  div#content-inner {padding:10px 25px; min-height:550px}
61
  form.content-form {min-height:550px; position:relative; line-height:17px}
62
  div.logfile-link {float:right; font-weight:normal; font-size:11px; font-style:italic}
@@ -92,9 +92,10 @@
92
  div.hdr-main {font-size:22px; padding:0 0 5px 0; border-bottom:1px solid #D3D3D3; font-weight:bold; margin:15px 0 20px 0;}
93
  div.hdr-main span.step {color:#DB4B38}
94
 
 
95
  div.hdr-sub1 {font-size:18px; margin-bottom:5px;border:1px solid #D3D3D3;padding:7px; background-color:#f9f9f9; font-weight:bold; border-radius:4px}
96
  div.hdr-sub1 a {cursor:pointer; text-decoration: none !important}
97
- div.hdr-sub1 i.fa {font-size:15px; display:inline-block; margin-right:5px; vertical-align:top}
98
  div.hdr-sub1-area {padding:5px}
99
  div.hdr-sub2 {font-size:15px; padding:2px 2px 2px 0; font-weight:bold; margin-bottom:5px; border:none}
100
  div.hdr-sub3 {font-size:15px; padding:2px 2px 2px 0; border-bottom:1px solid #D3D3D3; font-weight:bold; margin-bottom:5px;}
56
  /* ============================
57
  COMMON VIEWS
58
  ============================ */
59
+ div#content {border:1px solid #CDCDCD; width:850px; min-height:550px; margin:auto; margin-top:18px; border-radius:5px; box-shadow:0 8px 6px -6px #333; font-size:13px}
60
  div#content-inner {padding:10px 25px; min-height:550px}
61
  form.content-form {min-height:550px; position:relative; line-height:17px}
62
  div.logfile-link {float:right; font-weight:normal; font-size:11px; font-style:italic}
92
  div.hdr-main {font-size:22px; padding:0 0 5px 0; border-bottom:1px solid #D3D3D3; font-weight:bold; margin:15px 0 20px 0;}
93
  div.hdr-main span.step {color:#DB4B38}
94
 
95
+ div.sub-header {font-size:11px; font-style:italic; font-weight:normal; margin:5px 0 -1px 0}
96
  div.hdr-sub1 {font-size:18px; margin-bottom:5px;border:1px solid #D3D3D3;padding:7px; background-color:#f9f9f9; font-weight:bold; border-radius:4px}
97
  div.hdr-sub1 a {cursor:pointer; text-decoration: none !important}
98
+ div.hdr-sub1 i.fa {font-size:15px; display:inline-block; margin:2px 5px 0 0; vertical-align:top}
99
  div.hdr-sub1-area {padding:5px}
100
  div.hdr-sub2 {font-size:15px; padding:2px 2px 2px 0; font-weight:bold; margin-bottom:5px; border:none}
101
  div.hdr-sub3 {font-size:15px; padding:2px 2px 2px 0; border-bottom:1px solid #D3D3D3; font-weight:bold; margin-bottom:5px;}
installer/dup-installer/classes/class.logging.php CHANGED
@@ -5,7 +5,7 @@ define('ERR_ZIPNOTFOUND', 'The packaged zip file was not found or has become unr
5
  define('ERR_SHELLEXEC_ZIPOPEN', 'Failed to extract the archive using shell_exec unzip');
6
  define('ERR_ZIPOPEN', 'Failed to open the zip archive file. Please be sure the archive is completely downloaded before running the installer. Try to extract the archive manually to make sure the file is not corrupted.');
7
  define('ERR_ZIPEXTRACTION', 'Errors extracting the zip file. Portions or part of the zip archive did not extract correctly. Try to extract the archive manually with a client side program like unzip/win-zip/winrar to make sure the file is not corrupted. If the file extracts correctly then there is an invalid file or directory that PHP is unable to extract. This can happen if your moving from one operating system to another where certain naming conventions work on one environment and not another. <br/><br/> Workarounds: <br/> 1. Create a new package and be sure to exclude any directories that have name checks or files in them. This warning will be displayed on the scan results under "Name Checks". <br/> 2. Manually extract the zip file with a client side program. Then under options in step 1 of the installer select the "Manual Archive Extraction" option and perform the install.');
8
- define('ERR_ZIPMANUAL', 'When choosing "Manual Archive Extraction", the contents of the package must already be extracted for the process to continue. Please manually extract the package into the current directory before continuing in manual extraction mode. Also validate that the wp-config.php and database.sql files are present.');
9
  define('ERR_MAKELOG', 'PHP is having issues writing to the log file <b>' . $GLOBALS['DUPX_INIT'] . '\dup-installer-log__'.$GLOBALS['DUPX_AC']->package_hash.'.txt .</b> In order for the Duplicator to proceed validate your owner/group and permission settings for PHP on this path. Try temporarily setting you permissions to 777 to see if the issue gets resolved. If you are on a shared hosting environment please contact your hosting company and tell them you are getting errors writing files to the path above when using PHP.');
10
  define('ERR_ZIPARCHIVE', 'In order to extract the archive.zip file, the PHP ZipArchive module must be installed. Please read the FAQ for more details. You can still install this package but you will need to select the "Manual Archive Extraction" options found under Options. Please read the online user guide for details in performing a manual archive extraction.');
11
  define('ERR_MYSQLI_SUPPORT', 'In order to complete an install the mysqli extension for PHP is required. If you are on a hosted server please contact your host and request that mysqli be enabled. For more information visit: http://php.net/manual/en/mysqli.installation.php');
5
  define('ERR_SHELLEXEC_ZIPOPEN', 'Failed to extract the archive using shell_exec unzip');
6
  define('ERR_ZIPOPEN', 'Failed to open the zip archive file. Please be sure the archive is completely downloaded before running the installer. Try to extract the archive manually to make sure the file is not corrupted.');
7
  define('ERR_ZIPEXTRACTION', 'Errors extracting the zip file. Portions or part of the zip archive did not extract correctly. Try to extract the archive manually with a client side program like unzip/win-zip/winrar to make sure the file is not corrupted. If the file extracts correctly then there is an invalid file or directory that PHP is unable to extract. This can happen if your moving from one operating system to another where certain naming conventions work on one environment and not another. <br/><br/> Workarounds: <br/> 1. Create a new package and be sure to exclude any directories that have name checks or files in them. This warning will be displayed on the scan results under "Name Checks". <br/> 2. Manually extract the zip file with a client side program. Then under options in step 1 of the installer select the "Manual Archive Extraction" option and perform the install.');
8
+ define('ERR_ZIPMANUAL', 'When choosing "Manual Archive Extraction", the contents of the package must already be extracted for the process to continue. Please manually extract the package into the current directory before continuing in manual extraction mode. Also validate that the wp-config.php files are present.');
9
  define('ERR_MAKELOG', 'PHP is having issues writing to the log file <b>' . $GLOBALS['DUPX_INIT'] . '\dup-installer-log__'.$GLOBALS['DUPX_AC']->package_hash.'.txt .</b> In order for the Duplicator to proceed validate your owner/group and permission settings for PHP on this path. Try temporarily setting you permissions to 777 to see if the issue gets resolved. If you are on a shared hosting environment please contact your hosting company and tell them you are getting errors writing files to the path above when using PHP.');
10
  define('ERR_ZIPARCHIVE', 'In order to extract the archive.zip file, the PHP ZipArchive module must be installed. Please read the FAQ for more details. You can still install this package but you will need to select the "Manual Archive Extraction" options found under Options. Please read the online user guide for details in performing a manual archive extraction.');
11
  define('ERR_MYSQLI_SUPPORT', 'In order to complete an install the mysqli extension for PHP is required. If you are on a hosted server please contact your host and request that mysqli be enabled. For more information visit: http://php.net/manual/en/mysqli.installation.php');
installer/dup-installer/classes/class.s3.func.php CHANGED
@@ -1079,15 +1079,15 @@ LONGMSG;
1079
  $excludePlugins['really-simple-ssl/rlrsssl-really-simple-ssl.php'] = array(
1080
  'title' => "Really Simple SSL",
1081
  'shortMsg' => "Deactivated Plugin: Really Simple SSL",
1082
- 'longMsg' => "It is deactivated because You are migrating from SSL (HTTPS) to Non-SSL (HTTP).<br>
1083
- If It was not deactivated, You will not able to login.",
1084
  'reactivate' => false
1085
 
1086
  );
1087
  }
1088
 
1089
  if ($GLOBALS['DUPX_AC']->url_old != $this->post['siteurl']) {
1090
- DUPX_Log::info('Simple Google reCAPTCHA [as Package creation site URL and Installation site URL are different] will be Deactivated, If It is activated', DUPX_Log::LV_HARD_DEBUG);
1091
  $excludePlugins['simple-google-recaptcha/simple-google-recaptcha.php'] = array(
1092
  'title' => "Simple Google reCAPTCHA",
1093
  'shortMsg' => "Deactivated Plugin: Simple Google reCAPTCHA",
@@ -1101,11 +1101,12 @@ LONGMSG;
1101
  $excludePlugins['js_composer/js_composer.php'] = array(
1102
  'title' => 'WPBakery Page Builder',
1103
  'shortMsg' => "Deactivated Plugin: WPBakery Page Builder",
1104
- 'longMsg' => "It is deactivated automatically. <strong>You must reactivate from the WordPress admin panel after completing the installation.</strong> After activating it, your site's frontend will look good.",
 
1105
  'reactivate' => true
1106
  );
1107
 
1108
- DUPX_Log::info('Activated plugins (If they are activated) listed here will be deactivated: '.DUPX_Log::varToString(array_keys($excludePlugins)));
1109
  return $excludePlugins;
1110
  }
1111
 
1079
  $excludePlugins['really-simple-ssl/rlrsssl-really-simple-ssl.php'] = array(
1080
  'title' => "Really Simple SSL",
1081
  'shortMsg' => "Deactivated Plugin: Really Simple SSL",
1082
+ 'longMsg' => "This plugin has been deactivated since this migration is going from SSL (HTTPS) to Non-SSL (HTTP). This will allow you to login to your WordPress Admin. "
1083
+ . " To reactivate the plugin please go to the admin plugin page.",
1084
  'reactivate' => false
1085
 
1086
  );
1087
  }
1088
 
1089
  if ($GLOBALS['DUPX_AC']->url_old != $this->post['siteurl']) {
1090
+ DUPX_Log::info('Simple Google reCAPTCHA [as Package creation site URL and installation site URL are different] will be deactivated, If It is activated', DUPX_Log::LV_HARD_DEBUG);
1091
  $excludePlugins['simple-google-recaptcha/simple-google-recaptcha.php'] = array(
1092
  'title' => "Simple Google reCAPTCHA",
1093
  'shortMsg' => "Deactivated Plugin: Simple Google reCAPTCHA",
1101
  $excludePlugins['js_composer/js_composer.php'] = array(
1102
  'title' => 'WPBakery Page Builder',
1103
  'shortMsg' => "Deactivated Plugin: WPBakery Page Builder",
1104
+ 'longMsg' => "This plugin is deactivated automatically, because it requires a reacivation to work properly. "
1105
+ . "<b>Please reactivate from the WordPress admin panel after logging in.</b> This will re-enable your site's frontend.",
1106
  'reactivate' => true
1107
  );
1108
 
1109
+ DUPX_Log::info('Deactivated plugins list here: '.DUPX_Log::varToString(array_keys($excludePlugins)));
1110
  return $excludePlugins;
1111
  }
1112
 
installer/dup-installer/ctrls/ctrl.s2.dbtest.php CHANGED
@@ -429,7 +429,7 @@ class DUPX_DBTest
429
 
430
  if ($invalid === 1) {
431
  $test['pass'] = 0;
432
- $test['info'] = "Please check the 'Legacy' checkbox above under options and then click the 'Retry Test' link.<br/>"
433
  . "<small>Details: The database where the package was created has a collation that is not supported on this server. This issue happens "
434
  . "when a site is moved from an older version of MySQL to a newer version of MySQL. The recommended fix is to update MySQL on this server to support "
435
  . "the collation that is failing below. If that is not an option for your host then continue by clicking the 'Legacy' checkbox above. For more "
429
 
430
  if ($invalid === 1) {
431
  $test['pass'] = 0;
432
+ $test['info'] = "Please check the 'Legacy' checkbox in the options section and then click the 'Retry Test' link.<br/>"
433
  . "<small>Details: The database where the package was created has a collation that is not supported on this server. This issue happens "
434
  . "when a site is moved from an older version of MySQL to a newer version of MySQL. The recommended fix is to update MySQL on this server to support "
435
  . "the collation that is failing below. If that is not an option for your host then continue by clicking the 'Legacy' checkbox above. For more "
installer/dup-installer/views/view.help.php CHANGED
@@ -14,8 +14,8 @@ $open_section = filter_input(INPUT_GET, 'open_section', FILTER_SANITIZE_STRING,
14
  HELP FORM -->
15
  <div id="main-help">
16
  <div class="help-online"><br/>
17
- <i class="far fa-file-alt fa-sm"></i> For complete help visit the
18
- <a href="https://snapcreek.com/support/docs/" target="_blank">Online Knowledge-Base</a> <br/>
19
  <small>Features available only in Duplicator Pro are flagged with a <sup>pro</sup> tag.</small>
20
  </div>
21
 
@@ -515,11 +515,11 @@ $expandClass = $sectionId == $open_section ? 'open' : 'close';
515
  </tr>
516
  <tr>
517
  <td class="col-opt">Site URL</td>
518
- <td> For details see WordPress <a href="http://codex.wordpress.org/Changing_The_Site_URL" target="_blank">Site URL</a> &amp; <a href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory" target="_blank">Alternate Directory</a>. If you're not sure about this value then leave it the same as the new settings URL.</td>
519
  </tr>
520
  <tr>
521
  <td class="col-opt">Scan Tables</td>
522
- <td>Select the tables to be updated. This process will update all of the 'Old Settings' with the 'New Settings'. Hold down the 'ctrl key' to select/deselect multiple.</td>
523
  </tr>
524
  <tr>
525
  <td class="col-opt">Activate Plugins</td>
@@ -628,7 +628,7 @@ $expandClass = $sectionId == $open_section ? 'open' : 'close';
628
  <div style="padding: 0px 10px 10px 10px;">
629
  <b>Common Quick Fix Issues:</b>
630
  <ul>
631
- <li>Use an <a href='https://snapcreek.com/wordpress-hosting/' target='_blank'>approved hosting provider</a></li>
632
  <li>Validate directory and file permissions (see below)</li>
633
  <li>Validate web server configuration file (see below)</li>
634
  <li>Clear your browsers cache</li>
@@ -662,7 +662,7 @@ $expandClass = $sectionId == $open_section ? 'open' : 'close';
662
  </div>
663
  </section>
664
 
665
- <div style="text-align:center; margin-top: 28px;">For additional help please visit the <a href="https://snapcreek.com/support/docs/" target="_blank">online resources</a></div>
666
 
667
 
668
  </div>
14
  HELP FORM -->
15
  <div id="main-help">
16
  <div class="help-online"><br/>
17
+ <i class="far fa-file-alt fa-sm"></i> For complete help visit
18
+ <a href="https://snapcreek.com/support/docs/" target="_blank">Duplicator Migration and Backup Online Help</a> <br/>
19
  <small>Features available only in Duplicator Pro are flagged with a <sup>pro</sup> tag.</small>
20
  </div>
21
 
515
  </tr>
516
  <tr>
517
  <td class="col-opt">Site URL</td>
518
+ <td> For details see WordPress <a href="http://codex.wordpress.org/Changing_The_Site_URL" target="_blank">Site URL</a> &amp; <a href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory" target="_blank">Alternate Directory</a>. If you're not sure about this value then leave it the same as the new setup URL.</td>
519
  </tr>
520
  <tr>
521
  <td class="col-opt">Scan Tables</td>
522
+ <td>Select the tables to be updated. This process will update all of the 'Old Settings' with the new 'Setup' settings. Hold down the 'ctrl key' to select/deselect multiple.</td>
523
  </tr>
524
  <tr>
525
  <td class="col-opt">Activate Plugins</td>
628
  <div style="padding: 0px 10px 10px 10px;">
629
  <b>Common Quick Fix Issues:</b>
630
  <ul>
631
+ <li>Use a <a href='https://snapcreek.com/wordpress-hosting/' target='_blank'>Duplicator approved hosting provider</a></li>
632
  <li>Validate directory and file permissions (see below)</li>
633
  <li>Validate web server configuration file (see below)</li>
634
  <li>Clear your browsers cache</li>
662
  </div>
663
  </section>
664
 
665
+ <div style="text-align:center; margin-top: 28px;">For additional help please visit <a href="https://snapcreek.com/support/docs/" target="_blank">Duplicator Migration and Backup Online Help</a></div>
666
 
667
 
668
  </div>
installer/dup-installer/views/view.s1.base.php CHANGED
@@ -107,6 +107,7 @@ $archive_config = DUPX_ArchiveConfig::getInstance();
107
 
108
  <div class="hdr-main">
109
  Step <span class="step">1</span> of 4: Deployment
 
110
  </div><br/>
111
 
112
  <!-- ====================================
@@ -158,14 +159,13 @@ SETUP TYPE: @todo implement
158
  </div><br/>
159
 
160
  </div>
161
- <!--br/><br/-->
162
 
163
 
164
  <!-- ====================================
165
  ARCHIVE
166
  ==================================== -->
167
  <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s1-area-archive-file">
168
- <a id="s1-area-archive-file-link"><i class="fa fa-plus-square"></i>Archive</a>
169
  <?php
170
  $badge = DUPX_View_Funcs::getBadgeClassFromCheckStatus($arcCheck);
171
  ?>
@@ -176,7 +176,7 @@ ARCHIVE
176
  <div id="s1-area-archive-file" style="display:none" class="hdr-sub1-area">
177
  <div id="tabs">
178
  <ul>
179
- <li><a href="#tabs-1">Server</a></li>
180
  </ul>
181
  <div id="tabs-1">
182
 
@@ -731,7 +731,8 @@ Auto Posts to view.step2.php
731
 
732
  <div class="dupx-logfile-link"><?php DUPX_View_Funcs::installerLogLink(); ?></div>
733
  <div class="hdr-main">
734
- Step <span class="step">1</span> of 4: Extraction
 
735
  </div>
736
 
737
  <!-- POST PARAMS -->
107
 
108
  <div class="hdr-main">
109
  Step <span class="step">1</span> of 4: Deployment
110
+ <div class="sub-header">This step will extract the archive file contents.</div>
111
  </div><br/>
112
 
113
  <!-- ====================================
159
  </div><br/>
160
 
161
  </div>
 
162
 
163
 
164
  <!-- ====================================
165
  ARCHIVE
166
  ==================================== -->
167
  <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s1-area-archive-file">
168
+ <a id="s1-area-archive-file-link"><i class="fa fa-plus-square"></i>Setup</a>
169
  <?php
170
  $badge = DUPX_View_Funcs::getBadgeClassFromCheckStatus($arcCheck);
171
  ?>
176
  <div id="s1-area-archive-file" style="display:none" class="hdr-sub1-area">
177
  <div id="tabs">
178
  <ul>
179
+ <li><a href="#tabs-1">Archive</a></li>
180
  </ul>
181
  <div id="tabs-1">
182
 
731
 
732
  <div class="dupx-logfile-link"><?php DUPX_View_Funcs::installerLogLink(); ?></div>
733
  <div class="hdr-main">
734
+ Step <span class="step">1</span> of 4: Deployment
735
+ <div class="sub-header">This step will extract the archive file contents.</div>
736
  </div>
737
 
738
  <!-- POST PARAMS -->
installer/dup-installer/views/view.s2.base.php CHANGED
@@ -30,7 +30,10 @@ $cpnl_supported = DUPX_U::$on_php_53_plus ? true : false;
30
  <div class="dupx-logfile-link">
31
  <?php DUPX_View_Funcs::installerLogLink(); ?>
32
  </div>
33
- <div class="hdr-main">Step <span class="step">2</span> of 4: Install Database </div>
 
 
 
34
  <div class="s2-btngrp">
35
  <input id="s2-basic-btn" type="button" value="Basic" class="active" onclick="DUPX.togglePanels('basic')" />
36
  <input id="s2-cpnl-btn" type="button" value="cPanel" class="in-active" onclick="DUPX.togglePanels('cpanel')" />
@@ -105,6 +108,7 @@ Auto Posts to view.step3.php -->
105
  <div class="dupx-logfile-link"><?php DUPX_View_Funcs::installerLogLink(); ?></div>
106
  <div class="hdr-main">
107
  Step <span class="step">2</span> of 4: Install Database
 
108
  </div>
109
 
110
  <!-- POST PARAMS -->
30
  <div class="dupx-logfile-link">
31
  <?php DUPX_View_Funcs::installerLogLink(); ?>
32
  </div>
33
+ <div class="hdr-main">
34
+ Step <span class="step">2</span> of 4: Install Database
35
+ <div class="sub-header">This step will install the database from the archive.</div>
36
+ </div>
37
  <div class="s2-btngrp">
38
  <input id="s2-basic-btn" type="button" value="Basic" class="active" onclick="DUPX.togglePanels('basic')" />
39
  <input id="s2-cpnl-btn" type="button" value="cPanel" class="in-active" onclick="DUPX.togglePanels('cpanel')" />
108
  <div class="dupx-logfile-link"><?php DUPX_View_Funcs::installerLogLink(); ?></div>
109
  <div class="hdr-main">
110
  Step <span class="step">2</span> of 4: Install Database
111
+ <div class="sub-header">This step will install the database from the archive.</div>
112
  </div>
113
 
114
  <!-- POST PARAMS -->
installer/dup-installer/views/view.s2.basic.php CHANGED
@@ -124,6 +124,25 @@ BASIC PANEL -->
124
  </div>
125
  <br/><br/>
126
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  <?php if (! $is_dbtest_mode) : ?>
128
  <!-- =========================================
129
  OPTIONS -->
@@ -177,24 +196,7 @@ BASIC PANEL -->
177
  <br/><br/>
178
  <?php endif; ?>
179
 
180
- <!-- =========================================
181
- BASIC: DB VALIDATION -->
182
- <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s2-dbtest-area-basic">
183
- <a href="javascript:void(0)"><i class="fa fa-minus-square"></i>Validation</a>
184
- </div>
185
 
186
- <div id="s2-dbtest-area-basic" class="s2-dbtest-area hdr-sub1-area">
187
- <div id="s2-dbrefresh-basic">
188
- <a href="javascript:void(0)" onclick="DUPX.testDBConnect()"><i class="fa fa-sync"></i> Retry Test</a>
189
- </div>
190
- <div style="clear:both"></div>
191
- <div id="s2-dbtest-hb-basic" class="s2-dbtest-hb">
192
- <div class="message">
193
- To continue click the 'Test Database' button <br/>
194
- to perform a database integrity check.
195
- </div>
196
- </div>
197
- </div>
198
 
199
  <br/><br/><br/>
200
  <br/><br/><br/>
124
  </div>
125
  <br/><br/>
126
 
127
+ <!-- =========================================
128
+ BASIC: DB VALIDATION -->
129
+ <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s2-dbtest-area-basic">
130
+ <a href="javascript:void(0)"><i class="fa fa-minus-square"></i>Validation</a>
131
+ </div>
132
+
133
+ <div id="s2-dbtest-area-basic" class="s2-dbtest-area hdr-sub1-area">
134
+ <div id="s2-dbrefresh-basic">
135
+ <a href="javascript:void(0)" onclick="DUPX.testDBConnect()"><i class="fa fa-sync"></i> Retry Test</a>
136
+ </div>
137
+ <div style="clear:both"></div>
138
+ <div id="s2-dbtest-hb-basic" class="s2-dbtest-hb">
139
+ <div class="message">
140
+ To continue click the 'Test Database' button <br/>
141
+ to perform a database integrity check.
142
+ </div>
143
+ </div>
144
+ </div>
145
+
146
  <?php if (! $is_dbtest_mode) : ?>
147
  <!-- =========================================
148
  OPTIONS -->
196
  <br/><br/>
197
  <?php endif; ?>
198
 
 
 
 
 
 
199
 
 
 
 
 
 
 
 
 
 
 
 
 
200
 
201
  <br/><br/><br/>
202
  <br/><br/><br/>
installer/dup-installer/views/view.s3.php CHANGED
@@ -69,6 +69,7 @@ VIEW: STEP 3- INPUT -->
69
  </div>
70
  <div class="hdr-main">
71
  Step <span class="step">3</span> of 4: Update Data
 
72
  </div>
73
 
74
  <?php
@@ -100,10 +101,14 @@ VIEW: STEP 3- INPUT -->
100
  </div>
101
 
102
  <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s3-new-settings">
103
- <a href="javascript:void(0)"><i class="fa fa-minus-square"></i>New Settings</a>
104
  </div>
105
  <div id="s3-new-settings">
106
  <table class="s3-opts">
 
 
 
 
107
  <tr>
108
  <td>URL:</td>
109
  <td>
@@ -115,10 +120,6 @@ VIEW: STEP 3- INPUT -->
115
  <td>Path:</td>
116
  <td><input type="text" name="path_new" id="path_new" value="<?php echo DUPX_U::esc_attr($new_path); ?>" /></td>
117
  </tr>
118
- <tr>
119
- <td>Title:</td>
120
- <td><input type="text" name="blogname" id="blogname" value="<?php echo DUPX_U::esc_attr($GLOBALS['DUPX_AC']->blogname); ?>" /></td>
121
- </tr>
122
  </table>
123
  </div>
124
  <br/><br/>
@@ -129,13 +130,13 @@ VIEW: STEP 3- INPUT -->
129
  <a href="javascript:void(0)"><i class="fa fa-plus-square"></i>Replace</a>
130
  </div>
131
 
132
- <div id="s3-custom-replace" class="hdr-sub1-area" style="display:none;">
133
  <div class="help-target">
134
  <?php DUPX_View_Funcs::helpIconLink('step3'); ?>
135
  </div><br/>
136
- Add additional search and replace URLs to replace additional data. This option is available only in
 
137
  <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=duplicator_pro&utm_content=free_inst_replaceopts">Duplicator Pro</a>
138
-
139
  </div>
140
  <br/><br/>
141
 
@@ -375,6 +376,7 @@ VIEW: STEP 3 - AJAX RESULT -->
375
  <div class="logfile-link"><?php DUPX_View_Funcs::installerLogLink(); ?></div>
376
  <div class="hdr-main">
377
  Step <span class="step">3</span> of 4: Update Data
 
378
  </div>
379
 
380
  <!-- POST PARAMS -->
69
  </div>
70
  <div class="hdr-main">
71
  Step <span class="step">3</span> of 4: Update Data
72
+ <div class="sub-header">This step will update the database and config files to match your new sites values.</div>
73
  </div>
74
 
75
  <?php
101
  </div>
102
 
103
  <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s3-new-settings">
104
+ <a href="javascript:void(0)"><i class="fa fa-minus-square"></i>Setup</a>
105
  </div>
106
  <div id="s3-new-settings">
107
  <table class="s3-opts">
108
+ <tr>
109
+ <td>Title:</td>
110
+ <td><input type="text" name="blogname" id="blogname" value="<?php echo DUPX_U::esc_attr($GLOBALS['DUPX_AC']->blogname); ?>" /></td>
111
+ </tr>
112
  <tr>
113
  <td>URL:</td>
114
  <td>
120
  <td>Path:</td>
121
  <td><input type="text" name="path_new" id="path_new" value="<?php echo DUPX_U::esc_attr($new_path); ?>" /></td>
122
  </tr>
 
 
 
 
123
  </table>
124
  </div>
125
  <br/><br/>
130
  <a href="javascript:void(0)"><i class="fa fa-plus-square"></i>Replace</a>
131
  </div>
132
 
133
+ <div id="s3-custom-replace" class="hdr-sub1-area" style="display:none; text-align: center">
134
  <div class="help-target">
135
  <?php DUPX_View_Funcs::helpIconLink('step3'); ?>
136
  </div><br/>
137
+ Add additional search and replace URLs to replace additional data.<br/>
138
+ This option is available only in
139
  <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=duplicator_pro&utm_content=free_inst_replaceopts">Duplicator Pro</a>
 
140
  </div>
141
  <br/><br/>
142
 
376
  <div class="logfile-link"><?php DUPX_View_Funcs::installerLogLink(); ?></div>
377
  <div class="hdr-main">
378
  Step <span class="step">3</span> of 4: Update Data
379
+ <div class="sub-header">This step will update the database and config files to match your new sites values.</div>
380
  </div>
381
 
382
  <!-- POST PARAMS -->
installer/dup-installer/views/view.s4.php CHANGED
@@ -210,7 +210,7 @@ LONGMSG;
210
  ));
211
  } else {
212
  $longMsg = <<<LONGMSG
213
- The following is a list of notices that may need to be fixed in order to finalize your setup. These values should only be investigated if you're running into
214
  issues with your site. For more details see the <a href="https://codex.wordpress.org/Editing_wp-config.php" target="_blank">WordPress Codex</a>.
215
  LONGMSG;
216
 
@@ -379,22 +379,13 @@ LONGMSG;
379
  <a href='https://snapcreek.com' target='_blank'>Support</a>
380
  </div><br/>
381
 
382
- <?php
383
- $num = rand(1,2);
384
- switch ($num) {
385
- case 1:
386
- $key = 'free_inst_s3btn_dp1322';
387
- $txt = 'Get Duplicator Pro!';
388
- break;
389
- case 2:
390
- $key = 'free_inst_s3btn_gp1322';
391
- $txt = 'Go Pro Today!';
392
- break;
393
- default :
394
- $key = 'free_inst_s3btn_gp1322';
395
- $txt = 'Go Pro Today!';
396
- }
397
  ?>
 
 
398
 
399
  <div class="s4-gopro-btn">
400
  <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=duplicator_pro&utm_content=<?php echo DUPX_U::esc_attr($key);?>" target="_blank">
210
  ));
211
  } else {
212
  $longMsg = <<<LONGMSG
213
+ The following is a list of notices that may need to be fixed in order to finalize your setup. These values should only be investigated if you're running into
214
  issues with your site. For more details see the <a href="https://codex.wordpress.org/Editing_wp-config.php" target="_blank">WordPress Codex</a>.
215
  LONGMSG;
216
 
379
  <a href='https://snapcreek.com' target='_blank'>Support</a>
380
  </div><br/>
381
 
382
+ <?php
383
+ // Switched to Get Duplicator Pro wording based on split testing results
384
+ $key = 'free_inst_s3btn_dp1324';
385
+ $txt = 'Get Duplicator Pro!';
 
 
 
 
 
 
 
 
 
 
 
386
  ?>
387
+
388
+
389
 
390
  <div class="s4-gopro-btn">
391
  <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=duplicator_pro&utm_content=<?php echo DUPX_U::esc_attr($key);?>" target="_blank">
lib/snaplib/class.snaplib.u.io.php CHANGED
@@ -294,7 +294,7 @@ if (!class_exists('DupLiteSnapLibIOU', false)) {
294
  throw new Exception("Trying to fseek($offset, $whence) and came back false");
295
  }
296
  //This check is not strict, but in most cases 32 Bit PHP will be the issue
297
- else if (abs($offset) > self::FileSizeLimit32BitPHP || $filesize > self::FileSizeLimit32BitPHP || ($offset < 0 && $whence == SEEK_SET)) {
298
  throw new DupLiteSnapLib_32BitSizeLimitException("Trying to seek on a file beyond the capability of 32 bit PHP. offset=$offset filesize=$filesize");
299
  } else {
300
  throw new Exception("Error seeking to file offset $offset. Retval = $ret_val");
294
  throw new Exception("Trying to fseek($offset, $whence) and came back false");
295
  }
296
  //This check is not strict, but in most cases 32 Bit PHP will be the issue
297
+ else if (abs($offset) > self::FileSizeLimit32BitPHP || $filesize > self::FileSizeLimit32BitPHP || ($offset < 0 && ($whence == SEEK_SET || $whence == SEEK_END))) {
298
  throw new DupLiteSnapLib_32BitSizeLimitException("Trying to seek on a file beyond the capability of 32 bit PHP. offset=$offset filesize=$filesize");
299
  } else {
300
  throw new Exception("Error seeking to file offset $offset. Retval = $ret_val");
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Contributors: corylamleorg, bobriley
3
  Tags: migration, backup, restore, move, migrate, duplicate, transfer, clone, automate, copy site
4
  Requires at least: 4.0
5
- Tested up to: 5.2
6
  Requires PHP: 5.2.17
7
- Stable tag: 1.3.22
8
  License: GPLv2
9
 
10
  WordPress migration and backups are much easier with Duplicator! Clone, backup, move and transfer an entire site from one location to another.
@@ -58,6 +58,8 @@ The underlying logic to backup WordPress, move WordPress and transfer WordPress
58
  This plugin does require some technical knowledge. If you plan to migrate WordPress or backup WordPress please use it at your own risk and don't forget to back up your files and databases beforehand. If you need to move or backup WordPress and would like additional help please visit the Duplicator [resources section](https://snapcreek.com/duplicator/docs/faqs-tech?utm_source=duplicator_free&utm_medium=wp_org&utm_content=free_disclaimer&utm_campaign=duplicator_free#faq-resource-030-q) .
59
 
60
  = Active Contributors =
 
 
61
  <li>[Paal Joachim Romdahl](http://www.easywebdesigntutorials.com) (Training)</li>
62
  <li>[Hans-M. Herbrand](http://www.web266.de) (German) </li>
63
  <li>[Nicolas Richer](http://nicolasricher.fr) (French)</li>
2
  Contributors: corylamleorg, bobriley
3
  Tags: migration, backup, restore, move, migrate, duplicate, transfer, clone, automate, copy site
4
  Requires at least: 4.0
5
+ Tested up to: 5.3
6
  Requires PHP: 5.2.17
7
+ Stable tag: 1.3.24
8
  License: GPLv2
9
 
10
  WordPress migration and backups are much easier with Duplicator! Clone, backup, move and transfer an entire site from one location to another.
58
  This plugin does require some technical knowledge. If you plan to migrate WordPress or backup WordPress please use it at your own risk and don't forget to back up your files and databases beforehand. If you need to move or backup WordPress and would like additional help please visit the Duplicator [resources section](https://snapcreek.com/duplicator/docs/faqs-tech?utm_source=duplicator_free&utm_medium=wp_org&utm_content=free_disclaimer&utm_campaign=duplicator_free#faq-resource-030-q) .
59
 
60
  = Active Contributors =
61
+ <li>[Prashant Baldha](https://profiles.wordpress.org/pmbaldha/) (Development)</li>
62
+ <li>[Andrea Leoni](https://profiles.wordpress.org/andreamk/) (Development)</li>
63
  <li>[Paal Joachim Romdahl](http://www.easywebdesigntutorials.com) (Training)</li>
64
  <li>[Hans-M. Herbrand](http://www.web266.de) (German) </li>
65
  <li>[Nicolas Richer](http://nicolasricher.fr) (French)</li>
views/packages/details/controller.php CHANGED
@@ -19,8 +19,7 @@ $err_link_ticket = '<a target="_blank" href="https://snapcreek.com/duplicator/do
19
  .narrow-input { width: 80px; }
20
  .wide-input {width: 400px; }
21
  table.form-table tr td { padding-top: 25px; }
22
- div.all-packages {float:right; margin-top: -30px; }
23
- div.all-packages a.add-new-h2 {font-size: 16px}
24
  </style>
25
 
26
  <div class="wrap">
@@ -45,7 +44,7 @@ $err_link_ticket = '<a target="_blank" href="https://snapcreek.com/duplicator/do
45
  <?php esc_html_e('Transfer', 'duplicator'); ?>
46
  </a>
47
  </h2>
48
- <div class="all-packages"><a href="?page=duplicator" class="add-new-h2"><i class="fa fa-archive fa-sm"></i> <?php esc_html_e('Packages', 'duplicator'); ?></a></div>
49
 
50
  <?php
51
  switch ($current_tab) {
19
  .narrow-input { width: 80px; }
20
  .wide-input {width: 400px; }
21
  table.form-table tr td { padding-top: 25px; }
22
+ div.all-packages {float:right; margin-top: -35px; }
 
23
  </style>
24
 
25
  <div class="wrap">
44
  <?php esc_html_e('Transfer', 'duplicator'); ?>
45
  </a>
46
  </h2>
47
+ <div class="all-packages"><a href="?page=duplicator" class="button"><i class="fa fa-archive fa-sm"></i> <?php esc_html_e('Packages', 'duplicator'); ?></a></div>
48
 
49
  <?php
50
  switch ($current_tab) {
views/packages/details/detail.php CHANGED
@@ -8,9 +8,28 @@ $ui_css_install = (isset($view_state['dup-package-dtl-install-panel']) && $view_
8
 
9
  $format = strtolower($package->Archive->Format);
10
 
11
- $link_sql = "{$package->StoreURL}{$package->NameHash}_database.sql";
12
- $link_archive = "{$package->StoreURL}{$package->NameHash}_archive.{$format}";
13
- $link_installer = "{$package->StoreURL}{$package->NameHash}_installer.php?get=1&file={$package->NameHash}_installer.php";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  $link_log = "{$package->StoreURL}{$package->NameHash}.log";
15
  $link_scan = "{$package->StoreURL}{$package->NameHash}_scan.json";
16
 
8
 
9
  $format = strtolower($package->Archive->Format);
10
 
11
+ $base_url = admin_url('admin.php');
12
+ $link_sql = add_query_arg(
13
+ array(
14
+ 'action' => 'duplicator_download',
15
+ 'file' => "{$package->NameHash}_database.sql",
16
+ ),
17
+ $base_url
18
+ );
19
+ $link_archive = add_query_arg(
20
+ array(
21
+ 'action' => 'duplicator_download',
22
+ 'file' => "{$package->NameHash}_archive.{$format}",
23
+ ),
24
+ $base_url
25
+ );
26
+ $link_installer = add_query_arg(
27
+ array(
28
+ 'action' => 'duplicator_download',
29
+ 'file' => $package->NameHash.'_installer.php',
30
+ ),
31
+ $base_url
32
+ );
33
  $link_log = "{$package->StoreURL}{$package->NameHash}.log";
34
  $link_scan = "{$package->StoreURL}{$package->NameHash}_scan.json";
35
 
views/packages/main/controller.php CHANGED
@@ -35,8 +35,8 @@ switch ($current_tab) {
35
  table#dup-toolbar td .button {box-shadow: none !important;}
36
  table#dup-toolbar {width:100%; border:0 solid red; padding: 0; margin:8px 0 4px 0; height: 35px}
37
  table#dup-toolbar td:last-child {font-size:16px; width:100%; text-align: right; vertical-align: bottom;white-space:nowrap;}
38
- table#dup-toolbar td:last-child a {top:0; font-size:16px !important; margin-top:10px }
39
- table#dup-toolbar td:last-child span {display:inline-block; font-weight: bold; padding:0 12px 5px 5px; color:#000}
40
  hr.dup-toolbar-line {margin:2px 0 10px 0}
41
 
42
  /*WIZARD TABS */
35
  table#dup-toolbar td .button {box-shadow: none !important;}
36
  table#dup-toolbar {width:100%; border:0 solid red; padding: 0; margin:8px 0 4px 0; height: 35px}
37
  table#dup-toolbar td:last-child {font-size:16px; width:100%; text-align: right; vertical-align: bottom;white-space:nowrap;}
38
+ table#dup-toolbar td:last-child a {top:0; margin-top:10px; font-weight: bold; }
39
+ table#dup-toolbar td:last-child span {display:inline-block; font-weight: bold; padding:0 5px 5px 5px; color:#000}
40
  hr.dup-toolbar-line {margin:2px 0 10px 0}
41
 
42
  /*WIZARD TABS */
views/packages/main/packages.php CHANGED
@@ -26,13 +26,6 @@ $packageTablerowCount = 0;
26
  input#dup-bulk-action-all {margin:0px;padding:0px 0px 0px 5px;}
27
  button.dup-button-selected {border:1px solid #000 !important; background-color:#dfdfdf !important;}
28
  div.dup-quick-start {font-style:italic; font-size: 13px; line-height: 18px; margin-top: 15px}
29
-
30
- .add-new-h2.disabled {
31
- cursor: not-allowed;
32
- border-color: #ccc !important;
33
- background: #f7f7f7 !important;
34
- color: #ccc !important;
35
- }
36
 
37
  /* Table package details */
38
  table.dup-pack-table {word-break:break-all;}
@@ -80,12 +73,12 @@ TOOL-BAR -->
80
  <input type="button" id="dup-pack-bulk-apply" class="button action" value="<?php esc_html_e("Apply", 'duplicator') ?>" onclick="Duplicator.Pack.ConfirmDelete()">
81
  <span class="btn-separator"></span>
82
  <a href="javascript:void(0)" class="button" title="<?php esc_attr_e("Get Help", 'duplicator') ?>" onclick="Duplicator.Pack.showHelp()">
83
- <i class="fa fa-question-circle grey-icon"></i>
84
  </a>
85
- <a href="admin.php?page=duplicator-settings&tab=package" class="button grey-icon" title="<?php esc_attr_e("Settings", 'duplicator') ?>"><i class="fas fa-cog"></i></a>
86
  </td>
87
  <td>
88
- <span><i class="fa fa-archive fa-sm"></i> <?php esc_html_e("Packages", 'duplicator'); ?></span>
89
  <?php
90
  $package_url = admin_url('admin.php?page=duplicator&tab=new1');
91
  $package_nonce_url = wp_nonce_url($package_url, 'new1-package');
@@ -93,7 +86,7 @@ TOOL-BAR -->
93
  <a id="dup-create-new"
94
  onClick="return Duplicator.Pack.CreateNew(this);"
95
  href="<?php echo $package_nonce_url;?>"
96
- class="add-new-h2 <?php echo ($active_package_present ? 'disabled' : ''); ?>"
97
  >
98
  <?php esc_html_e("Create New", 'duplicator'); ?>
99
  </a>
26
  input#dup-bulk-action-all {margin:0px;padding:0px 0px 0px 5px;}
27
  button.dup-button-selected {border:1px solid #000 !important; background-color:#dfdfdf !important;}
28
  div.dup-quick-start {font-style:italic; font-size: 13px; line-height: 18px; margin-top: 15px}
 
 
 
 
 
 
 
29
 
30
  /* Table package details */
31
  table.dup-pack-table {word-break:break-all;}
73
  <input type="button" id="dup-pack-bulk-apply" class="button action" value="<?php esc_html_e("Apply", 'duplicator') ?>" onclick="Duplicator.Pack.ConfirmDelete()">
74
  <span class="btn-separator"></span>
75
  <a href="javascript:void(0)" class="button" title="<?php esc_attr_e("Get Help", 'duplicator') ?>" onclick="Duplicator.Pack.showHelp()">
76
+ <i class="fa fa-question-circle"></i>
77
  </a>
78
+ <a href="admin.php?page=duplicator-settings&tab=package" class="button" title="<?php esc_attr_e("Settings", 'duplicator') ?>"><i class="fas fa-cog"></i></a>
79
  </td>
80
  <td>
81
+ <a href="javascript:void(0)" class="button disabled"><i class="fa fa-archive fa-sm"></i> <?php esc_html_e("Packages", 'duplicator'); ?></a>
82
  <?php
83
  $package_url = admin_url('admin.php?page=duplicator&tab=new1');
84
  $package_nonce_url = wp_nonce_url($package_url, 'new1-package');
86
  <a id="dup-create-new"
87
  onClick="return Duplicator.Pack.CreateNew(this);"
88
  href="<?php echo $package_nonce_url;?>"
89
+ class="button <?php echo ($active_package_present ? 'disabled' : ''); ?>"
90
  >
91
  <?php esc_html_e("Create New", 'duplicator'); ?>
92
  </a>
views/packages/main/s1.setup1.php CHANGED
@@ -69,8 +69,8 @@ TOOL BAR: STEPS -->
69
  </div>
70
  </td>
71
  <td>
72
- <a href="?page=duplicator" class="add-new-h2"><i class="fa fa-archive fa-sm"></i> <?php esc_html_e("Packages", 'duplicator'); ?></a>
73
- <span> <?php esc_html_e("Create New", 'duplicator'); ?></span>
74
  </td>
75
  </tr>
76
  </table>
69
  </div>
70
  </td>
71
  <td>
72
+ <a href="?page=duplicator" class="button"><i class="fa fa-archive fa-sm"></i> <?php esc_html_e("Packages", 'duplicator'); ?></a>
73
+ <a href="javascript:void(0)" class="button disabled"> <?php esc_html_e("Create New", 'duplicator'); ?></a>
74
  </td>
75
  </tr>
76
  </table>
views/packages/main/s1.setup2.php CHANGED
@@ -54,7 +54,7 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
54
  div.secure-pass-area {}
55
  label.secure-pass-lbl {display:inline-block; width:125px}
56
  div#dup-pass-toggle {position: relative; margin:8px 0 0 0; width:243px}
57
- input#secure-pass {border-radius:4px 0 0 4px; width:220px; height: 23px; margin:0}
58
  button.pass-toggle {height: 23px; width: 27px; position:absolute; top:0px; right:0px; border:1px solid silver; border-radius:0 4px 4px 0; cursor:pointer}
59
 
60
  /*TABS*/
54
  div.secure-pass-area {}
55
  label.secure-pass-lbl {display:inline-block; width:125px}
56
  div#dup-pass-toggle {position: relative; margin:8px 0 0 0; width:243px}
57
+ input#secure-pass {border-radius:4px 0 0 4px; width:217px; height: 23px; min-height: auto; margin:0; padding: 0 4px;}
58
  button.pass-toggle {height: 23px; width: 27px; position:absolute; top:0px; right:0px; border:1px solid silver; border-radius:0 4px 4px 0; cursor:pointer}
59
 
60
  /*TABS*/
views/packages/main/s2.scan1.php CHANGED
@@ -182,8 +182,8 @@ TOOL BAR:STEPS -->
182
  </div>
183
  </td>
184
  <td>
185
- <a href="?page=duplicator" class="add-new-h2"><i class="fa fa-archive fa-sm"></i> <?php esc_html_e('Packages', 'duplicator'); ?></a>
186
- <span> <?php esc_html_e('Create New', 'duplicator'); ?></span>
187
  </td>
188
  </tr>
189
  </table>
182
  </div>
183
  </td>
184
  <td>
185
+ <a href="?page=duplicator" class="button"><i class="fa fa-archive fa-sm"></i> <?php esc_html_e('Packages', 'duplicator'); ?></a>
186
+ <a href="javascript:void(0)" class="button disabled"> <?php esc_html_e("Create New", 'duplicator'); ?></a>
187
  </td>
188
  </tr>
189
  </table>
views/packages/main/s2.scan3.php CHANGED
@@ -357,6 +357,65 @@ UNREADABLE FILES -->
357
 
358
  <?php } ?>
359
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  <!-- ============
361
  DATABASE -->
362
  <div id="dup-scan-db">
@@ -800,7 +859,10 @@ jQuery(document).ready(function($)
800
  $('#data-arc-status-size').html(Duplicator.Pack.setScanStatus(data.ARC.Status.Size));
801
  $('#data-arc-status-names').html(Duplicator.Pack.setScanStatus(data.ARC.Status.Names));
802
  $('#data-arc-status-unreadablefiles').html(Duplicator.Pack.setScanStatus(data.ARC.Status.UnreadableItems));
803
- $('#data-arc-size1').text(data.ARC.Size || errMsg);
 
 
 
804
  $('#data-arc-size2').text(data.ARC.Size || errMsg);
805
  $('#data-arc-files').text(data.ARC.FileCount || errMsg);
806
  $('#data-arc-dirs').text(data.ARC.DirCount || errMsg);
@@ -843,6 +905,22 @@ jQuery(document).ready(function($)
843
  $('div.hb-filter-file-list-result').html(html);
844
  }
845
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
846
  Duplicator.UI.loadQtip();
847
  }
848
 
357
 
358
  <?php } ?>
359
 
360
+ <!-- ======================
361
+ Restore only package -->
362
+ <div id="migratepackage-block" class="scan-item scan-item-last">
363
+ <div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
364
+ <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Migration Status', 'duplicator');?></div>
365
+ <div id="data-arc-status-migratepackage"></div>
366
+ </div>
367
+ <div class="info">
368
+ <script id="hb-migrate-package-result" type="text/x-handlebars-template">
369
+ <div class="container">
370
+ <div class="data">
371
+ {{#if ARC.Status.CanbeMigratePackage}}
372
+ <?php esc_html_e("The package created here can be migrated to the new server.", 'duplicator'); ?>
373
+ {{else}}
374
+ <span style="color: red;">
375
+ <?php
376
+ esc_html_e("The package that created here can't be migrated to the new server.
377
+ The Package created here can be restored on the same server.", 'duplicator');
378
+ ?>
379
+ </span>
380
+ {{/if}}
381
+ </div>
382
+ </div>
383
+ </script>
384
+ <div id="migrate-package-result"></div>
385
+ </div>
386
+ </div>
387
+ <?php
388
+ $procedures = $GLOBALS['wpdb']->get_col("SHOW PROCEDURE STATUS WHERE `Db` = '{$wpdb->dbname}'", 1);
389
+ if (count($procedures)) {
390
+ ?>
391
+ <div id="showcreateproc-block" class="scan-item scan-item-last">
392
+ <div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
393
+ <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Sufficient privileges to SHOW CREATE FUNCTION', 'duplicator');?></div>
394
+ <div id="data-arc-status-showcreateproc"></div>
395
+ </div>
396
+ <div class="info">
397
+ <script id="hb-showcreateproc-result" type="text/x-handlebars-template">
398
+ <div class="container">
399
+ <div class="data">
400
+ {{#if ARC.Status.showCreateProc}}
401
+ <?php esc_html_e("The database user you are using have sufficient permissions to dump database with stored procedures.", 'duplicator'); ?>
402
+ {{else}}
403
+ <span style="color: red;">
404
+ <?php
405
+ esc_html_e("The database user you are using doesn't have sufficient permissions to dump database with stored procedures.", 'duplicator');
406
+ ?>
407
+ </span>
408
+ {{/if}}
409
+ </div>
410
+ </div>
411
+ </script>
412
+ <div id="showcreateproc-package-result"></div>
413
+ </div>
414
+ </div>
415
+ <?php
416
+ }
417
+ ?>
418
+
419
  <!-- ============
420
  DATABASE -->
421
  <div id="dup-scan-db">
859
  $('#data-arc-status-size').html(Duplicator.Pack.setScanStatus(data.ARC.Status.Size));
860
  $('#data-arc-status-names').html(Duplicator.Pack.setScanStatus(data.ARC.Status.Names));
861
  $('#data-arc-status-unreadablefiles').html(Duplicator.Pack.setScanStatus(data.ARC.Status.UnreadableItems));
862
+
863
+ $('#data-arc-status-migratepackage').html(Duplicator.Pack.setScanStatus(data.ARC.Status.MigratePackage));
864
+ + $('#data-arc-status-showcreateproc').html(Duplicator.Pack.setScanStatus(data.ARC.Status.showCreateProcStatus));
865
+ $('#data-arc-size1').text(data.ARC.Size || errMsg);
866
  $('#data-arc-size2').text(data.ARC.Size || errMsg);
867
  $('#data-arc-files').text(data.ARC.FileCount || errMsg);
868
  $('#data-arc-dirs').text(data.ARC.DirCount || errMsg);
905
  $('div.hb-filter-file-list-result').html(html);
906
  }
907
 
908
+ //MIGRATE PACKAGE
909
+ if ($("#hb-migrate-package-result").length) {
910
+ var template = $('#hb-migrate-package-result').html();
911
+ var templateScript = Handlebars.compile(template);
912
+ var html = templateScript(data);
913
+ $('#migrate-package-result').html(html);
914
+ }
915
+
916
+ //SHOW CREATE
917
+ if ($("#hb-showcreateproc-result").length) {
918
+ var template = $('#hb-showcreateproc-result').html();
919
+ var templateScript = Handlebars.compile(template);
920
+ var html = templateScript(data);
921
+ $('#showcreateproc-package-result').html(html);
922
+ }
923
+
924
  Duplicator.UI.loadQtip();
925
  }
926
 
views/packages/main/s3.build.php CHANGED
@@ -25,7 +25,6 @@ $rand_txt[0] = $atext0;
25
  ?>
26
 
27
  <style>
28
- .add-new-h2.disabled {cursor: not-allowed; border-color: #ccc !important; background: #f7f7f7 !important; color: #ccc !important;}
29
  a#dup-create-new {margin-left:-5px}
30
  div#dup-progress-area {text-align:center; max-width:800px; min-height:200px; border:1px solid silver; border-radius:5px; margin:25px auto 10px auto; padding:0px; box-shadow: 0 8px 6px -6px #999;}
31
  div.dup-progress-title {font-size:22px;padding:5px 0 20px 0; font-weight: bold}
@@ -45,7 +44,7 @@ $rand_txt[0] = $atext0;
45
  div#dup-progress-area div.dup-panel-panel { border-top: 1px solid silver}
46
  fieldset.download-area {border:2px dashed #dfdfdf; padding:20px 20px 10px 20px; border-radius:9px; margin: auto; width:400px }
47
  fieldset.download-area legend {font-weight: bold; font-size: 16px; margin:auto}
48
- button#dup-btn-installer, button#dup-btn-archive {min-width: 150px}
49
  div.one-click-download {margin:15px 0 10px 0; font-size:16px; font-weight: bold}
50
  div.one-click-download i.fa-bolt{padding-right: 5px}
51
  div.one-click-download i.fa-file-archive-o{padding-right: 5px}
@@ -86,7 +85,7 @@ TOOL BAR: STEPS -->
86
  </div>
87
  </td>
88
  <td style="padding-bottom:4px">
89
- <span><a href="?page=duplicator" class="add-new-h2">
90
  <i class="fa fa-archive fa-sm"></i> <?php esc_html_e("Packages",'duplicator'); ?>
91
  </a></span>
92
  <?php
@@ -96,7 +95,7 @@ TOOL BAR: STEPS -->
96
  <a id="dup-create-new"
97
  onClick="return !jQuery(this).hasClass('disabled');"
98
  href="<?php echo $package_nonce_url;?>"
99
- class="add-new-h2 <?php echo ($active_package_present ? 'disabled' : ''); ?>"
100
  >
101
  <?php esc_html_e("Create New", 'duplicator'); ?>
102
  </a>
25
  ?>
26
 
27
  <style>
 
28
  a#dup-create-new {margin-left:-5px}
29
  div#dup-progress-area {text-align:center; max-width:800px; min-height:200px; border:1px solid silver; border-radius:5px; margin:25px auto 10px auto; padding:0px; box-shadow: 0 8px 6px -6px #999;}
30
  div.dup-progress-title {font-size:22px;padding:5px 0 20px 0; font-weight: bold}
44
  div#dup-progress-area div.dup-panel-panel { border-top: 1px solid silver}
45
  fieldset.download-area {border:2px dashed #dfdfdf; padding:20px 20px 10px 20px; border-radius:9px; margin: auto; width:400px }
46
  fieldset.download-area legend {font-weight: bold; font-size: 16px; margin:auto}
47
+ button#dup-btn-installer, button#dup-btn-archive { line-height: 28px; min-width: 150px}
48
  div.one-click-download {margin:15px 0 10px 0; font-size:16px; font-weight: bold}
49
  div.one-click-download i.fa-bolt{padding-right: 5px}
50
  div.one-click-download i.fa-file-archive-o{padding-right: 5px}
85
  </div>
86
  </td>
87
  <td style="padding-bottom:4px">
88
+ <span><a href="?page=duplicator" class="button">
89
  <i class="fa fa-archive fa-sm"></i> <?php esc_html_e("Packages",'duplicator'); ?>
90
  </a></span>
91
  <?php
95
  <a id="dup-create-new"
96
  onClick="return !jQuery(this).hasClass('disabled');"
97
  href="<?php echo $package_nonce_url;?>"
98
+ class="button <?php echo ($active_package_present ? 'disabled' : ''); ?>"
99
  >
100
  <?php esc_html_e("Create New", 'duplicator'); ?>
101
  </a>
views/settings/general.php CHANGED
@@ -178,7 +178,7 @@ $unhook_third_party_css = DUP_Settings::Get('unhook_third_party_css');
178
  <tr>
179
  <th scope="row"><label><?php esc_html_e("Settings", 'duplicator'); ?></label></th>
180
  <td>
181
- <button class="button" onclick="Duplicator.Pack.ConfirmResetAll(); return false;">
182
  <i class="fas fa-redo fa-sm"></i> <?php esc_html_e('Reset Packages', 'duplicator'); ?>
183
  </button>
184
  <p class="description">
178
  <tr>
179
  <th scope="row"><label><?php esc_html_e("Settings", 'duplicator'); ?></label></th>
180
  <td>
181
+ <button class="button" onclick="Duplicator.Pack.ConfirmResetAll(); return false;">
182
  <i class="fas fa-redo fa-sm"></i> <?php esc_html_e('Reset Packages', 'duplicator'); ?>
183
  </button>
184
  <p class="description">
views/settings/gopro.php CHANGED
@@ -30,7 +30,8 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
30
  #comparison-table td, #comparison-table th { font-size:1.2rem; padding:11px; }
31
  #comparison-table .feature-column { text-align:left; width:46%}
32
  #comparison-table .check-column { text-align:center; width:27% }
33
- #comparison-table tr:nth-child(2n+2) {background-color:#f6f6f6; }
 
34
  </style>
35
 
36
  <div class="dup-pro-area">
30
  #comparison-table td, #comparison-table th { font-size:1.2rem; padding:11px; }
31
  #comparison-table .feature-column { text-align:left; width:46%}
32
  #comparison-table .check-column { text-align:center; width:27% }
33
+ #comparison-table tr:nth-child(2n+2) { background-color:#f6f6f6; }
34
+ .button.button-large.dup-check-it-btn { line-height: 28px; }
35
  </style>
36
 
37
  <div class="dup-pro-area">