Duplicator – WordPress Migration Plugin - Version 1.2.48

Version Description

Download this release

Release Info

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

Code changes from version 1.2.46 to 1.2.48

define.php CHANGED
@@ -2,7 +2,7 @@
2
  //Prevent directly browsing to the file
3
  if (function_exists('plugin_dir_url'))
4
  {
5
- define('DUPLICATOR_VERSION', '1.2.46');
6
  define('DUPLICATOR_HOMEPAGE', 'https://snapcreek.com/duplicator/duplicator-free/');
7
  define('DUPLICATOR_PLUGIN_URL', plugin_dir_url(__FILE__));
8
  define('DUPLICATOR_SITE_URL', get_site_url());
2
  //Prevent directly browsing to the file
3
  if (function_exists('plugin_dir_url'))
4
  {
5
+ define('DUPLICATOR_VERSION', '1.2.48');
6
  define('DUPLICATOR_HOMEPAGE', 'https://snapcreek.com/duplicator/duplicator-free/');
7
  define('DUPLICATOR_PLUGIN_URL', plugin_dir_url(__FILE__));
8
  define('DUPLICATOR_SITE_URL', get_site_url());
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.2.46
7
  Author: Snap Creek
8
  Author URI: http://www.snapcreek.com/duplicator/
9
  Text Domain: duplicator
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.2.48
7
  Author: Snap Creek
8
  Author URI: http://www.snapcreek.com/duplicator/
9
  Text Domain: duplicator
installer/build/assets/inc.css.php CHANGED
@@ -89,6 +89,7 @@
89
  STEP 1 VIEW
90
  ====================================== */
91
  table.s1-archive-local {width:100%}
 
92
  table.s1-archive-local td {padding:4px 4px 4px 4px}
93
  table.s1-archive-local td:first-child {font-weight:bold; width:55px}
94
  div#s1-area-sys-setup {padding:5px 0 0 10px}
@@ -108,7 +109,7 @@
108
  div.s1-reqs div.title:hover {background-color:#dfdfdf; cursor:pointer}
109
  div.s1-reqs div.info {padding:8px 8px 20px 8px; background-color:#fff; display:none; line-height:18px; font-size: 12px}
110
  div.s1-reqs div.info a {color:#485AA3;}
111
- div.s1-archive-failed-msg {padding:15px; border:1px dashed silver; font-size: 12px; border-radius:5px}
112
  div.s1-err-msg {padding:8px; border:1px dashed #999; margin:20px 0 20px 0px; border-radius:5px; color:maroon}
113
 
114
  /*Terms and Notices*/
89
  STEP 1 VIEW
90
  ====================================== */
91
  table.s1-archive-local {width:100%}
92
+ table.s1-archive-local tr {vertical-align:top}
93
  table.s1-archive-local td {padding:4px 4px 4px 4px}
94
  table.s1-archive-local td:first-child {font-weight:bold; width:55px}
95
  div#s1-area-sys-setup {padding:5px 0 0 10px}
109
  div.s1-reqs div.title:hover {background-color:#dfdfdf; cursor:pointer}
110
  div.s1-reqs div.info {padding:8px 8px 20px 8px; background-color:#fff; display:none; line-height:18px; font-size: 12px}
111
  div.s1-reqs div.info a {color:#485AA3;}
112
+ div.s1-archive-failed-msg {padding:15px; border:1px dashed maroon; font-size: 12px; border-radius:5px;}
113
  div.s1-err-msg {padding:8px; border:1px dashed #999; margin:20px 0 20px 0px; border-radius:5px; color:maroon}
114
 
115
  /*Terms and Notices*/
installer/build/ctrls/ctrl.step1.php CHANGED
@@ -1,7 +1,6 @@
1
  <?php
2
 
3
  //POST PARAMS
4
- $_POST['archive_name'] = isset($_POST['archive_name']) ? $_POST['archive_name'] : null;
5
  $_POST['archive_engine'] = isset($_POST['archive_engine']) ? $_POST['archive_engine'] : 'manual';
6
  $_POST['archive_filetime'] = (isset($_POST['archive_filetime'])) ? $_POST['archive_filetime'] : 'current';
7
  $_POST['retain_config'] = (isset($_POST['retain_config']) && $_POST['retain_config'] == '1') ? true : false;
@@ -15,7 +14,7 @@ ksort($POST_LOG);
15
  $php_max_time = @ini_get("max_execution_time");
16
  $php_max_time = ($php_max_time == 0) ? "[0] time limit restriction disabled" : "[{$php_max_time}] time limit restriction enabled";
17
  $root_path = DUPX_U::setSafePath($GLOBALS['CURRENT_ROOT_PATH']);
18
- $package_path = "{$root_path}/{$_POST['archive_name']}";
19
  $ajax1_start = DUPX_U::getMicrotime();
20
  $zip_support = class_exists('ZipArchive') ? 'Enabled' : 'Not Enabled';
21
  $JSON = array();
@@ -77,8 +76,8 @@ DUPX_Log::info($log, 2);
77
  $log = "--------------------------------------\n";
78
  $log .= "ARCHIVE EXTRACTION\n";
79
  $log .= "--------------------------------------\n";
80
- $log .= "NAME:\t{$_POST['archive_name']}\n";
81
- $log .= "SIZE:\t".DUPX_U::readableByteSize(@filesize($_POST['archive_name']))."\n";
82
  $log .= "ZIP:\t{$zip_support} (ZipArchive Support)";
83
  DUPX_Log::info($log);
84
 
@@ -86,15 +85,6 @@ DUPX_Log::info($log);
86
  if ($_POST['archive_engine'] == 'manual') {
87
  DUPX_Log::info("\n** PACKAGE EXTRACTION IS IN MANUAL MODE ** \n");
88
  } else {
89
- if ($GLOBALS['FW_PACKAGE_NAME'] != $_POST['archive_name']) {
90
- $log = "\n--------------------------------------\n";
91
- $log .= "WARNING: This package set may be incompatible! \nBelow is a summary of the package this installer was built with and the package used. \n";
92
- $log .= "To guarantee accuracy the installer and archive should match. For details see the online FAQs.";
93
- $log .= "\nCREATED WITH:\t{$GLOBALS['FW_PACKAGE_NAME']} \nPROCESSED WITH:\t{$_POST['archive_name']} \n";
94
- $log .= "--------------------------------------\n";
95
- DUPX_Log::info($log);
96
- }
97
-
98
  if (!class_exists('ZipArchive')) {
99
  DUPX_Log::info("ERROR: Stopping install process. Trying to extract without ZipArchive module installed. Please use the 'Manual Package extraction' mode to extract zip file.");
100
  DUPX_Log::error(ERR_ZIPARCHIVE);
@@ -102,7 +92,7 @@ if ($_POST['archive_engine'] == 'manual') {
102
 
103
  $target = $root_path;
104
  $zip = new ZipArchive();
105
- if ($zip->open($_POST['archive_name']) === TRUE) {
106
 
107
  DUPX_Log::info("\n>>> START EXTRACTION:");
108
  if (!$zip->extractTo($target)) {
1
  <?php
2
 
3
  //POST PARAMS
 
4
  $_POST['archive_engine'] = isset($_POST['archive_engine']) ? $_POST['archive_engine'] : 'manual';
5
  $_POST['archive_filetime'] = (isset($_POST['archive_filetime'])) ? $_POST['archive_filetime'] : 'current';
6
  $_POST['retain_config'] = (isset($_POST['retain_config']) && $_POST['retain_config'] == '1') ? true : false;
14
  $php_max_time = @ini_get("max_execution_time");
15
  $php_max_time = ($php_max_time == 0) ? "[0] time limit restriction disabled" : "[{$php_max_time}] time limit restriction enabled";
16
  $root_path = DUPX_U::setSafePath($GLOBALS['CURRENT_ROOT_PATH']);
17
+ $package_path = "{$root_path}/{$GLOBALS['FW_PACKAGE_NAME']}";
18
  $ajax1_start = DUPX_U::getMicrotime();
19
  $zip_support = class_exists('ZipArchive') ? 'Enabled' : 'Not Enabled';
20
  $JSON = array();
76
  $log = "--------------------------------------\n";
77
  $log .= "ARCHIVE EXTRACTION\n";
78
  $log .= "--------------------------------------\n";
79
+ $log .= "NAME:\t{$GLOBALS['FW_PACKAGE_NAME']}\n";
80
+ $log .= "SIZE:\t".DUPX_U::readableByteSize(@filesize($GLOBALS['FW_PACKAGE_NAME']))."\n";
81
  $log .= "ZIP:\t{$zip_support} (ZipArchive Support)";
82
  DUPX_Log::info($log);
83
 
85
  if ($_POST['archive_engine'] == 'manual') {
86
  DUPX_Log::info("\n** PACKAGE EXTRACTION IS IN MANUAL MODE ** \n");
87
  } else {
 
 
 
 
 
 
 
 
 
88
  if (!class_exists('ZipArchive')) {
89
  DUPX_Log::info("ERROR: Stopping install process. Trying to extract without ZipArchive module installed. Please use the 'Manual Package extraction' mode to extract zip file.");
90
  DUPX_Log::error(ERR_ZIPARCHIVE);
92
 
93
  $target = $root_path;
94
  $zip = new ZipArchive();
95
+ if ($zip->open($GLOBALS['FW_PACKAGE_NAME']) === TRUE) {
96
 
97
  DUPX_Log::info("\n>>> START EXTRACTION:");
98
  if (!$zip->extractTo($target)) {
installer/build/ctrls/ctrl.step2.php CHANGED
@@ -11,7 +11,6 @@ $_POST['dbnbsp'] = (isset($_POST['dbnbsp']) && $_POST['dbnbsp'] == '1') ? true
11
  $_POST['ssl_admin'] = (isset($_POST['ssl_admin'])) ? true : false;
12
  $_POST['cache_wp'] = (isset($_POST['cache_wp'])) ? true : false;
13
  $_POST['cache_path'] = (isset($_POST['cache_path'])) ? true : false;
14
- $_POST['archive_name'] = isset($_POST['archive_name']) ? $_POST['archive_name'] : null;
15
  $_POST['retain_config'] = (isset($_POST['retain_config']) && $_POST['retain_config'] == '1') ? true : false;
16
  $_POST['dbcollatefb'] = isset($_POST['dbcollatefb']) ? $_POST['dbcollatefb'] : false;
17
 
@@ -43,7 +42,7 @@ if (isset($_GET['dbtest']))
43
  $dbErr = mysqli_connect_error();
44
 
45
  $dbFound = mysqli_select_db($dbConn, $_POST['dbname']);
46
- $port_view = (is_int($baseport) || substr($_POST['dbhost'], -1) == ":") ? "Port=[Set in Host]" : "Port={$_POST['dbport']}";
47
 
48
  $tstSrv = ($dbConn) ? "<div class='dupx-pass'>Success</div>" : "<div class='dupx-fail'>Fail</div>";
49
  $tstDB = ($dbFound) ? "<div class='dupx-pass'>Success</div>" : "<div class='dupx-fail'>Fail</div>";
@@ -57,38 +56,37 @@ if (isset($_GET['dbtest']))
57
  $dbversion_compat_fail = $dbConn && version_compare($dbversion_compat, $GLOBALS['FW_VERSION_DB']) < 0;
58
 
59
  $tstInfo = ($dbversion_info_fail)
60
- ? "<div class='dupx-notice'>{$dbversion_info}</div>"
61
- : "<div class='dupx-pass'>{$dbversion_info}</div>";
62
 
63
  $tstCompat = ($dbversion_compat_fail)
64
- ? "<div class='dupx-notice'>This Server: [{$dbversion_compat}] -- Package Server: [{$GLOBALS['FW_VERSION_DB']}]</div>"
65
- : "<div class='dupx-pass'>This Server: [{$dbversion_compat}] -- Package Server: [{$GLOBALS['FW_VERSION_DB']}]</div>";
66
 
67
- $html .= <<<DATA
68
  <div class='s2-db-test'>
69
  <small>
70
  Using Connection String:<br/>
71
- Host={$_POST['dbhost']}; Database={$_POST['dbname']}; Uid={$_POST['dbuser']}; Pwd={$_POST['dbpass']}; {$port_view}
72
  </small>
73
  <table class='s2-db-test-dtls'>
74
  <tr>
75
  <td>Host:</td>
76
- <td>{$tstSrv}</td>
77
  </tr>
78
  <tr>
79
  <td>Database:</td>
80
- <td>{$tstDB}</td>
81
  </tr>
82
  <tr>
83
  <td>Version:</td>
84
- <td>{$tstInfo}</td>
85
  </tr>
86
  <tr>
87
  <td>Compatibility:</td>
88
- <td>{$tstCompat}</td>
89
  </tr>
90
- </table>
91
- DATA;
92
 
93
  //--------------------------------
94
  //WARNING: Unable to connect
@@ -101,7 +99,7 @@ DATA;
101
  {
102
  $tblcount = DUPX_DB::countTables($dbConn, $_POST['dbname']);
103
  $html .= ($tblcount > 0)
104
- ? "<div class='warn-msg'><b>WARNING:</b> " . sprintf(ERR_DBEMPTY, $_POST['dbname'], $tblcount) . "</div>"
105
  : '';
106
  }
107
 
@@ -435,7 +433,7 @@ if ($result = mysqli_query($dbh, "SHOW TABLES")) {
435
 
436
  if ($dbtable_count == 0) {
437
  DUPX_Log::error("No tables where created during step 2 of the install. Please review the <a href='".$GLOBALS["LOG_FILE_NAME"]."' target='install_log'>".$GLOBALS["LOG_FILE_NAME"]."</a> file for
438
- ERROR messages. You may have to manually run the installer-data__{$GLOBALS['PACKAGE_HASH']}.sql with a tool like phpmyadmin to validate the data input. If you have enabled compatibility mode
439
  during the package creation process then the database server version your using may not be compatible with this script.\n");
440
  }
441
 
11
  $_POST['ssl_admin'] = (isset($_POST['ssl_admin'])) ? true : false;
12
  $_POST['cache_wp'] = (isset($_POST['cache_wp'])) ? true : false;
13
  $_POST['cache_path'] = (isset($_POST['cache_path'])) ? true : false;
 
14
  $_POST['retain_config'] = (isset($_POST['retain_config']) && $_POST['retain_config'] == '1') ? true : false;
15
  $_POST['dbcollatefb'] = isset($_POST['dbcollatefb']) ? $_POST['dbcollatefb'] : false;
16
 
42
  $dbErr = mysqli_connect_error();
43
 
44
  $dbFound = mysqli_select_db($dbConn, $_POST['dbname']);
45
+ $port_view = (is_int($baseport) || substr($_POST['dbhost'], -1) == ":") ? "Port=[Set in Host]" : "Port=".htmlentities($_POST['dbport']);
46
 
47
  $tstSrv = ($dbConn) ? "<div class='dupx-pass'>Success</div>" : "<div class='dupx-fail'>Fail</div>";
48
  $tstDB = ($dbFound) ? "<div class='dupx-pass'>Success</div>" : "<div class='dupx-fail'>Fail</div>";
56
  $dbversion_compat_fail = $dbConn && version_compare($dbversion_compat, $GLOBALS['FW_VERSION_DB']) < 0;
57
 
58
  $tstInfo = ($dbversion_info_fail)
59
+ ? "<div class='dupx-notice'>".htmlentities($dbversion_info)."</div>"
60
+ : "<div class='dupx-pass'>".htmlentities($dbversion_info)."</div>";
61
 
62
  $tstCompat = ($dbversion_compat_fail)
63
+ ? "<div class='dupx-notice'>This Server: [".htmlentities($dbversion_compat)."] -- Package Server: [".htmlentities($GLOBALS['FW_VERSION_DB'])."]</div>"
64
+ : "<div class='dupx-pass'>This Server: [".htmlentities($dbversion_compat)."] -- Package Server: [".htmlentities($GLOBALS['FW_VERSION_DB'])."]</div>";
65
 
66
+ $html .= "
67
  <div class='s2-db-test'>
68
  <small>
69
  Using Connection String:<br/>
70
+ Host=".htmlentities($_POST['dbhost'])."; Database=".htmlentities($_POST['dbname'])."; Uid=".htmlentities($_POST['dbuser'])."; Pwd=".htmlentities($_POST['dbpass'])."; {$port_view}
71
  </small>
72
  <table class='s2-db-test-dtls'>
73
  <tr>
74
  <td>Host:</td>
75
+ <td>".$tstSrv."</td>
76
  </tr>
77
  <tr>
78
  <td>Database:</td>
79
+ <td>".$tstDB."</td>
80
  </tr>
81
  <tr>
82
  <td>Version:</td>
83
+ <td>".$tstInfo."</td>
84
  </tr>
85
  <tr>
86
  <td>Compatibility:</td>
87
+ <td>".$tstCompat."</td>
88
  </tr>
89
+ </table>";
 
90
 
91
  //--------------------------------
92
  //WARNING: Unable to connect
99
  {
100
  $tblcount = DUPX_DB::countTables($dbConn, $_POST['dbname']);
101
  $html .= ($tblcount > 0)
102
+ ? "<div class='warn-msg'><b>WARNING:</b> " . sprintf(ERR_DBEMPTY, htmlentities($_POST['dbname']), htmlentities($tblcount)) . "</div>"
103
  : '';
104
  }
105
 
433
 
434
  if ($dbtable_count == 0) {
435
  DUPX_Log::error("No tables where created during step 2 of the install. Please review the <a href='".$GLOBALS["LOG_FILE_NAME"]."' target='install_log'>".$GLOBALS["LOG_FILE_NAME"]."</a> file for
436
+ ERROR messages. You may have to manually run the installer-data_[HASH].sql with a tool like phpmyadmin to validate the data input. If you have enabled compatibility mode
437
  during the package creation process then the database server version your using may not be compatible with this script.\n");
438
  }
439
 
installer/build/view.help.php CHANGED
@@ -222,7 +222,7 @@ STEP 1
222
  <tr>
223
  <td>Logging</td>
224
  <td>
225
- The level of detail that will be sent to the log file (<?php echo $GLOBALS["LOG_FILE_NAME"];?>). The recommend setting for most installs should be 'Light'.
226
  Note if you use Debug the amount of data written can be very large. Debug is only recommended for support.
227
  </td>
228
  </tr>
@@ -315,7 +315,7 @@ STEP 2
315
  <br/><br/>
316
 
317
  <b>Manual SQL Execution:</b><sup>pro</sup> This options requires that you manually run your own SQL import to an existing database before running the installer.
318
- When this action is selected the dup-database__[hash].sql file found inside the dup-installer folder of the archive.zip file will NOT be ran. The database your connecting to should already
319
  be a valid WordPress installed database. This option is viable when you need to run advanced search and replace options on the database.
320
  <br/><br/>
321
 
222
  <tr>
223
  <td>Logging</td>
224
  <td>
225
+ The level of detail that will be sent to the log file (dup-installer-log_[HASH].txt). The recommend setting for most installs should be 'Light'.
226
  Note if you use Debug the amount of data written can be very large. Debug is only recommended for support.
227
  </td>
228
  </tr>
315
  <br/><br/>
316
 
317
  <b>Manual SQL Execution:</b><sup>pro</sup> This options requires that you manually run your own SQL import to an existing database before running the installer.
318
+ When this action is selected the dup-database_[hash].sql file found inside the dup-installer folder of the archive.zip file will NOT be ran. The database your connecting to should already
319
  be a valid WordPress installed database. This option is viable when you need to run advanced search and replace options on the database.
320
  <br/><br/>
321
 
installer/build/view.step1.php CHANGED
@@ -90,13 +90,16 @@ $req_success = ($all_req == 'Pass');
90
  $req_notice = ($all_notice == 'Good');
91
  $all_success = ($req_success && $req_notice);
92
  $agree_msg = "To enable this button the checkbox above under the 'Terms & Notices' must be checked.";
 
 
 
 
93
  ?>
94
 
95
 
96
  <form id='s1-input-form' method="post" class="content-form" >
97
  <input type="hidden" name="action_ajax" value="1" />
98
  <input type="hidden" name="action_step" value="1" />
99
- <input type="hidden" name="archive_name" value="<?php echo $GLOBALS['FW_PACKAGE_NAME'] ?>" />
100
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
101
 
102
  <div class="hdr-main">
@@ -140,45 +143,27 @@ ARCHIVE
140
  <tr>
141
  <td colspan="2"><div class="hdr-sub3">File Details</div></td>
142
  </tr>
143
- <tr style="vertical-align:top">
144
- <td>Size:</td>
145
- <td>
146
- <?php
147
- $projectedSize = DUPX_U::readableByteSize($GLOBALS['FW_PACKAGE_EST_SIZE']);
148
- $actualSize = DUPX_U::readableByteSize($arcSize);
149
- echo "{$actualSize}<br/>";
150
- if ($arcSizeStatus == 'Fail' ) {
151
- echo "<span class='dupx-fail'>The archive file size is currently <b>{$actualSize}</b> and its estimated file size should be around <b>{$projectedSize}</b>. "
152
- . "The archive file may not have been fully downloaded to the server. If so please wait for the file to completely download and then refresh this page.<br/><br/>";
153
-
154
- echo "This warning is only shown when the file has more than a 10% size ratio difference from when it was originally built. Please review the file sizes "
155
- . "to make sure the archive was downloaded to this server correctly if the download is complete.</span>";
156
- }
157
- ?>
158
- </td>
159
- </tr>
160
- <tr>
161
- <td>Name:</td>
162
- <td><?php echo "{$GLOBALS['FW_PACKAGE_NAME']}";?> </td>
163
- </tr>
164
- <tr>
165
- <td>Path:</td>
166
- <td><?php echo "{$GLOBALS['CURRENT_ROOT_PATH']}";?> </td>
167
- </tr>
168
  <tr>
169
  <td>Status:</td>
170
  <td>
171
  <?php if ($arcStatus != 'Fail') : ?>
172
- <span class="dupx-pass">File Found</span>
173
  <?php else : ?>
174
  <div class="s1-archive-failed-msg">
175
  <b class="dupx-fail">Archive File Not Found!</b><br/>
176
- The archive file name below must be the <u>exact</u> name of the archive file placed in the deployment path (character for character).
177
- If the file does not have the same name then rename it to the name above.
 
 
178
  <br/><br/>
179
 
180
- When downloading the package files make sure both files are from the same package line in the packages view. The archive file also
181
- must be completely downloaded to the server before starting the install. The following zip files were found at the deployment path:
 
 
 
 
 
182
  <?php
183
  //DETECT ARCHIVE FILES
184
  $zip_files = DUPX_Server::getZipFiles();
@@ -198,6 +183,30 @@ ARCHIVE
198
  <?php endif; ?>
199
  </td>
200
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  <tr>
202
  <td>Format:</td>
203
  <td>
@@ -223,7 +232,7 @@ ARCHIVE
223
  the issue. Please check the contents of the zip archive and be sure its contents match the layout of your site.
224
  <br/><br/>
225
 
226
- Files such as dup-database__<?php echo $GLOBALS['PACKAGE_HASH'];?>.sql and wp-config.php should be at the root of the archive. For more details see the FAQ article
227
  <a href="https://snapcreek.com/duplicator/docs/faqs-tech/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=invalid_ar_fmt#faq-installer-020-q" target="_help">The archive format is changing on my Mac what might be the problem?</a>
228
  </div>
229
  <?php endif; ?>
@@ -558,10 +567,11 @@ NOTICES
558
  <b>After Install:</b> When you are done with the installation you must remove these files/directories:
559
  <ul>
560
  <li>installer.php</li>
561
- <li>dup-installer-data__<?php echo $GLOBALS['PACKAGE_HASH'];?>.sql</li>
562
  <li>installer-backup.php</li>
563
- <li></li>
564
- <li>dup-database__<?php echo $GLOBALS['PACKAGE_HASH'];?>.sql</li>
 
 
565
  </ul>
566
 
567
  These files contain sensitive information and should not remain on a production system for system integrity and security protection.
@@ -622,7 +632,7 @@ Auto Posts to view.step2.php
622
  ========================================= -->
623
  <form id='s1-result-form' method="post" class="content-form" style="display:none">
624
 
625
- <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>" target="install_log">installer-log.txt</a></div>
626
  <div class="hdr-main">
627
  Step <span class="step">1</span> of 4: Deployment
628
  </div>
@@ -631,9 +641,8 @@ Auto Posts to view.step2.php
631
  <div class="dupx-debug">
632
  <input type="hidden" name="action_step" value="2" />
633
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
634
- <input type="hidden" name="archive_name" value="<?php echo $GLOBALS['FW_PACKAGE_NAME'] ?>" />
635
  <input type="hidden" name="logging" id="ajax-logging" />
636
- <input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="0" />
637
  <input type="hidden" name="retain_config" id="ajax-retain-config" />
638
  <input type="hidden" name="json" id="ajax-json" />
639
  <textarea id='ajax-json-debug' name='json_debug_view'></textarea>
@@ -713,7 +722,7 @@ Auto Posts to view.step2.php
713
  status += "<b>Status:</b> " + xhr.statusText + "<br/>";
714
  status += "<b>Response:</b> " + xhr.responseText + "";
715
  status += "<hr/><b>Additional Troubleshooting Tips:</b><br/>";
716
- status += "- Check the <a href='<?php echo $GLOBALS["LOG_FILE_NAME"];?>' target='install_log'><?php echo $GLOBALS["LOG_FILE_NAME"];?></a> file for warnings or errors.<br/>";
717
  status += "- Check the web server and PHP error logs. <br/>";
718
  status += "- For timeout issues visit the <a href='https://snapcreek.com/duplicator/docs/faqs-tech/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=inst_ajaxextract_tofaq#faq-trouble-100-q' target='_blank'>Timeout FAQ Section</a><br/>";
719
  $('#ajaxerr-data').html(status);
90
  $req_notice = ($all_notice == 'Good');
91
  $all_success = ($req_success && $req_notice);
92
  $agree_msg = "To enable this button the checkbox above under the 'Terms & Notices' must be checked.";
93
+
94
+ //Get Size Data
95
+ $projectedSize = DUPX_U::readableByteSize($GLOBALS['FW_PACKAGE_EST_SIZE']);
96
+ $actualSize = DUPX_U::readableByteSize($arcSize);
97
  ?>
98
 
99
 
100
  <form id='s1-input-form' method="post" class="content-form" >
101
  <input type="hidden" name="action_ajax" value="1" />
102
  <input type="hidden" name="action_step" value="1" />
 
103
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
104
 
105
  <div class="hdr-main">
143
  <tr>
144
  <td colspan="2"><div class="hdr-sub3">File Details</div></td>
145
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  <tr>
147
  <td>Status:</td>
148
  <td>
149
  <?php if ($arcStatus != 'Fail') : ?>
150
+ <span class="dupx-pass">Archive File Found</span>
151
  <?php else : ?>
152
  <div class="s1-archive-failed-msg">
153
  <b class="dupx-fail">Archive File Not Found!</b><br/>
154
+ The installer file and the archive are bound together as a package when the archive is built. They must be downloaded together and used
155
+ together at install time. The archive file name should <u>not</u> be changed when it is downloaded because the file name is strongly bound
156
+ to the installer. When downloading the package files make sure both files are from the same package line in the packages view within the
157
+ Duplicator WordPress admin.
158
  <br/><br/>
159
 
160
+ The full archive file name must be <u>exactly</u> the same as when it was built (character for character), or the installer will not work properly.
161
+ To find out the exact archive name that is bound to this installer open the installer.php file with a text editor and search for the text
162
+ $GLOBALS['FW_PACKAGE_NAME']. Check to see what that value is assigned to and that should be the name of the archive file placed in the same path
163
+ as this installer.
164
+ <br/><br/>
165
+
166
+ The following zip files were found at the deployment path:
167
  <?php
168
  //DETECT ARCHIVE FILES
169
  $zip_files = DUPX_Server::getZipFiles();
183
  <?php endif; ?>
184
  </td>
185
  </tr>
186
+ <tr>
187
+ <tr>
188
+ <td>Path:</td>
189
+ <td><?php echo "{$GLOBALS['CURRENT_ROOT_PATH']}";?> </td>
190
+ </tr>
191
+ <td>Size:</td>
192
+ <td>
193
+ <?php if ($arcSizeStatus == 'Pass' ) : ?>
194
+ <?php echo "{$actualSize}"?>
195
+ <?php elseif ($arcStatus == 'Fail') : ?>
196
+ <span class="dupx-fail">Archive file not found!</span>
197
+ <?php else : ?>
198
+ <div class="s1-archive-failed-msg">
199
+ <b class='dupx-fail'>Archive File Size Incorrect!</b><br/>
200
+ The archive is showing a size that is currently as <b><?php echo $actualSize; ?></b>. Its estimated file size should be around
201
+ <b><?php echo $projectedSize; ?></b>. The archive file may not have been fully downloaded to the server. If so please wait for the file
202
+ to completely download and then refresh this page.<br/><br/>
203
+
204
+ This warning is only shown when the file has more than a 10% size ratio difference from when it was originally built. Please review the file sizes
205
+ to make sure the archive was downloaded to this server correctly when the download is complete.
206
+ </div>
207
+ <?php endif; ?>
208
+ </td>
209
+ </tr>
210
  <tr>
211
  <td>Format:</td>
212
  <td>
232
  the issue. Please check the contents of the zip archive and be sure its contents match the layout of your site.
233
  <br/><br/>
234
 
235
+ Files such as dup-database_[HASH].sql and wp-config.php should be at the root of the archive. For more details see the FAQ article
236
  <a href="https://snapcreek.com/duplicator/docs/faqs-tech/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=invalid_ar_fmt#faq-installer-020-q" target="_help">The archive format is changing on my Mac what might be the problem?</a>
237
  </div>
238
  <?php endif; ?>
567
  <b>After Install:</b> When you are done with the installation you must remove these files/directories:
568
  <ul>
569
  <li>installer.php</li>
 
570
  <li>installer-backup.php</li>
571
+ <li>dup-installer-data_[HASH].sql</li>
572
+ <li>dup-database_[HASH].sql</li>
573
+ <li>dup-installer-log_[HASH].txt</li>
574
+ <li>[HASH]_archive.zip</li>
575
  </ul>
576
 
577
  These files contain sensitive information and should not remain on a production system for system integrity and security protection.
632
  ========================================= -->
633
  <form id='s1-result-form' method="post" class="content-form" style="display:none">
634
 
635
+ <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>" target="install_log">dup-installer-log.txt</a></div>
636
  <div class="hdr-main">
637
  Step <span class="step">1</span> of 4: Deployment
638
  </div>
641
  <div class="dupx-debug">
642
  <input type="hidden" name="action_step" value="2" />
643
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
 
644
  <input type="hidden" name="logging" id="ajax-logging" />
645
+ <input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="0" />
646
  <input type="hidden" name="retain_config" id="ajax-retain-config" />
647
  <input type="hidden" name="json" id="ajax-json" />
648
  <textarea id='ajax-json-debug' name='json_debug_view'></textarea>
722
  status += "<b>Status:</b> " + xhr.statusText + "<br/>";
723
  status += "<b>Response:</b> " + xhr.responseText + "";
724
  status += "<hr/><b>Additional Troubleshooting Tips:</b><br/>";
725
+ status += "- Check the <a href='<?php echo $GLOBALS["LOG_FILE_NAME"];?>' target='install_log'>dup-installer-log.txt</a> file for warnings or errors.<br/>";
726
  status += "- Check the web server and PHP error logs. <br/>";
727
  status += "- For timeout issues visit the <a href='https://snapcreek.com/duplicator/docs/faqs-tech/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=inst_ajaxextract_tofaq#faq-trouble-100-q' target='_blank'>Timeout FAQ Section</a><br/>";
728
  $('#ajaxerr-data').html(status);
installer/build/view.step2.php CHANGED
@@ -9,11 +9,10 @@ VIEW: STEP 2- INPUT -->
9
  <form id='s2-input-form' method="post" class="content-form" data-parsley-validate="true" data-parsley-excluded="input[type=hidden], [disabled], :hidden">
10
  <input type="hidden" name="action_ajax" value="2" />
11
  <input type="hidden" name="action_step" value="2" />
12
- <input type="hidden" name="archive_name" value="<?php echo $GLOBALS['FW_PACKAGE_NAME'] ?>" />
13
  <input type="hidden" name="logging" id="logging" value="<?php echo $_POST['logging'] ?>" />
14
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
15
 
16
- <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>?now=<?php echo $GLOBALS['NOW_DATE'] ?>" target="install_log">installer-log.txt</a></div>
17
  <div class="hdr-main">
18
  Step <span class="step">2</span> of 4: Install Database
19
  </div>
@@ -183,7 +182,7 @@ Auto Posts to view.step3.php
183
  ========================================= -->
184
  <form id='s2-result-form' method="post" class="content-form" style="display:none">
185
 
186
- <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>" target="install_log">installer-log.txt</a></div>
187
  <div class="hdr-main">
188
  Step <span class="step">2</span> of 4: Install Database
189
  </div>
@@ -192,7 +191,6 @@ Auto Posts to view.step3.php
192
  <div class="dupx-debug">
193
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
194
  <input type="hidden" name="action_step" value="3" />
195
- <input type="hidden" name="archive_name" value="<?php echo $GLOBALS['FW_PACKAGE_NAME'] ?>" />
196
  <input type="hidden" name="logging" id="ajax-logging" />
197
  <input type="hidden" name="retain_config" value="<?php echo $_POST['retain_config']; ?>" />
198
  <input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="<?php echo $_POST['exe_safe_mode']; ?>"/>
@@ -221,7 +219,7 @@ Auto Posts to view.step3.php
221
  <div id="ajaxerr-area" style="display:none">
222
  <p>Please try again an issue has occurred.</p>
223
  <div style="padding: 0px 10px 10px 0px;">
224
- <div id="ajaxerr-data">An unknown issue has occurred with the file and database set up process. Please see the installer-log.txt file for more details.</div>
225
  <div style="text-align:center; margin:10px auto 0px auto">
226
  <input type="button" class="default-btn" onclick='DUPX.hideErrorResult()' value="&laquo; Try Again" /><br/><br/>
227
  <i style='font-size:11px'>See online help for more details at <a href='https://snapcreek.com/ticket?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=inst_ajaxstep2_ticket' target='_blank'>snapcreek.com</a></i>
@@ -261,6 +259,14 @@ Auto Posts to view.step3.php
261
 
262
 
263
  <script>
 
 
 
 
 
 
 
 
264
  /* Confirm Dialog to validate run */
265
  DUPX.confirmDeployment = function()
266
  {
@@ -270,9 +276,9 @@ DUPX.confirmDeployment = function()
270
  return;
271
  }
272
 
273
- $('#dlg-dbhost').html($("#dbhost").val());
274
- $('#dlg-dbname').html($("#dbname").val());
275
- $('#dlg-dbuser').html($("#dbuser").val());
276
 
277
  modal({
278
  type: 'confirm',
@@ -332,7 +338,7 @@ DUPX.runDeployment = function()
332
  status += "<b>Status:</b> " + xhr.statusText + "<br/>";
333
  status += "<b>Response:</b> " + xhr.responseText + "";
334
  status += "<hr/><b>Additional Troubleshooting Tips:</b><br/>";
335
- status += "- Check the <a href='installer-log.txt' target='install_log'>installer-log.txt</a> file for warnings or errors.<br/>";
336
  status += "- Check the web server and PHP error logs. <br/>";
337
  status += "- For timeout issues visit the <a href='https://snapcreek.com/duplicator/docs/faqs-tech/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=inst_step2deploy_timout#faq-trouble-100-q' target='_blank'>Timeout FAQ Section</a><br/>";
338
  $('#ajaxerr-data').html(status);
9
  <form id='s2-input-form' method="post" class="content-form" data-parsley-validate="true" data-parsley-excluded="input[type=hidden], [disabled], :hidden">
10
  <input type="hidden" name="action_ajax" value="2" />
11
  <input type="hidden" name="action_step" value="2" />
 
12
  <input type="hidden" name="logging" id="logging" value="<?php echo $_POST['logging'] ?>" />
13
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
14
 
15
+ <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>?now=<?php echo $GLOBALS['NOW_DATE'] ?>" target="install_log">dup-installer-log.txt</a></div>
16
  <div class="hdr-main">
17
  Step <span class="step">2</span> of 4: Install Database
18
  </div>
182
  ========================================= -->
183
  <form id='s2-result-form' method="post" class="content-form" style="display:none">
184
 
185
+ <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>" target="install_log">dup-installer-log.txt</a></div>
186
  <div class="hdr-main">
187
  Step <span class="step">2</span> of 4: Install Database
188
  </div>
191
  <div class="dupx-debug">
192
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
193
  <input type="hidden" name="action_step" value="3" />
 
194
  <input type="hidden" name="logging" id="ajax-logging" />
195
  <input type="hidden" name="retain_config" value="<?php echo $_POST['retain_config']; ?>" />
196
  <input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="<?php echo $_POST['exe_safe_mode']; ?>"/>
219
  <div id="ajaxerr-area" style="display:none">
220
  <p>Please try again an issue has occurred.</p>
221
  <div style="padding: 0px 10px 10px 0px;">
222
+ <div id="ajaxerr-data">An unknown issue has occurred with the file and database set up process. Please see the dup-installer-log.txt file for more details.</div>
223
  <div style="text-align:center; margin:10px auto 0px auto">
224
  <input type="button" class="default-btn" onclick='DUPX.hideErrorResult()' value="&laquo; Try Again" /><br/><br/>
225
  <i style='font-size:11px'>See online help for more details at <a href='https://snapcreek.com/ticket?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=inst_ajaxstep2_ticket' target='_blank'>snapcreek.com</a></i>
259
 
260
 
261
  <script>
262
+ DUPX.escapeHtml = function(unsafe) {
263
+ return unsafe
264
+ .replace(/&/g, "&amp;")
265
+ .replace(/</g, "&lt;")
266
+ .replace(/>/g, "&gt;")
267
+ .replace(/"/g, "&quot;")
268
+ .replace(/'/g, "&#039;");
269
+ }
270
  /* Confirm Dialog to validate run */
271
  DUPX.confirmDeployment = function()
272
  {
276
  return;
277
  }
278
 
279
+ $('#dlg-dbhost').html(DUPX.escapeHtml($("#dbhost").val()));
280
+ $('#dlg-dbname').html(DUPX.escapeHtml($("#dbname").val()));
281
+ $('#dlg-dbuser').html(DUPX.escapeHtml($("#dbuser").val()));
282
 
283
  modal({
284
  type: 'confirm',
338
  status += "<b>Status:</b> " + xhr.statusText + "<br/>";
339
  status += "<b>Response:</b> " + xhr.responseText + "";
340
  status += "<hr/><b>Additional Troubleshooting Tips:</b><br/>";
341
+ status += "- Check the <a href='<?php echo $GLOBALS["LOG_FILE_NAME"];?>' target='install_log'>dup-installer-log.txt</a> file for warnings or errors.<br/>";
342
  status += "- Check the web server and PHP error logs. <br/>";
343
  status += "- For timeout issues visit the <a href='https://snapcreek.com/duplicator/docs/faqs-tech/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=inst_step2deploy_timout#faq-trouble-100-q' target='_blank'>Timeout FAQ Section</a><br/>";
344
  $('#ajaxerr-data').html(status);
installer/build/view.step3.php CHANGED
@@ -20,7 +20,6 @@ VIEW: STEP 3- INPUT -->
20
  <input type="hidden" name="action_step" value="3" />
21
  <input type="hidden" name="logging" value="<?php echo $_POST['logging'] ?>" />
22
  <input type="hidden" name="retain_config" value="<?php echo $_POST['retain_config']; ?>" />
23
- <input type="hidden" name="archive_name" value="<?php echo $_POST['archive_name'] ?>" />
24
  <input type="hidden" name="json" value="<?php echo $_POST['json']; ?>" />
25
  <input type="hidden" name="dbhost" value="<?php echo $_POST['dbhost'] ?>" />
26
  <input type="hidden" name="dbport" value="<?php echo $_POST['dbport'] ?>" />
@@ -32,7 +31,7 @@ VIEW: STEP 3- INPUT -->
32
  <input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="<?php echo $_POST['exe_safe_mode'] ?>" />
33
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
34
 
35
- <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>?now=<?php echo $GLOBALS['NOW_DATE'] ?>" target="install_log">installer-log.txt</a></div>
36
  <div class="hdr-main">
37
  Step <span class="step">3</span> of 4: Update Data
38
  </div>
@@ -186,7 +185,7 @@ VIEW: STEP 3 - AJAX RESULT
186
  ========================================= -->
187
  <form id='s3-result-form' method="post" class="content-form" style="display:none">
188
 
189
- <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>" target="install_log">installer-log.txt</a></div>
190
  <div class="hdr-main">
191
  Step <span class="step">3</span> of 4: Update Data
192
  </div>
@@ -195,9 +194,8 @@ VIEW: STEP 3 - AJAX RESULT
195
  <div class="dupx-debug">
196
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
197
  <input type="hidden" name="action_step" value="4" />
198
- <input type="hidden" name="archive_name" value="<?php echo $_POST['archive_name'] ?>" />
199
  <input type="hidden" name="retain_config" value="<?php echo $_POST['retain_config']; ?>" />
200
- <input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="<?php echo $_POST['exe_safe_mode']; ?>"/>
201
  <input type="hidden" name="url_new" id="ajax-url_new" />
202
  <input type="hidden" name="json" id="ajax-json" />
203
  <br/>
@@ -217,7 +215,7 @@ VIEW: STEP 3 - AJAX RESULT
217
  <div id="ajaxerr-area" style="display:none">
218
  <p>Please try again an issue has occurred.</p>
219
  <div style="padding: 0px 10px 10px 10px;">
220
- <div id="ajaxerr-data">An unknown issue has occurred with the update data set up process. Please see the installer-log.txt file for more details.</div>
221
  <div style="text-align:center; margin:10px auto 0px auto">
222
  <input type="button" class="default-btn" onclick='DUPX.hideErrorResult2()' value="&laquo; Try Again" /><br/><br/>
223
  <i style='font-size:11px'>See online help for more details at <a href='https://snapcreek.com/ticket?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=inst_step3_ajax' target='_blank'>snapcreek.com</a></i>
@@ -268,7 +266,7 @@ DUPX.runUpdate = function()
268
  status += "<b>Status:</b> " + xhr.statusText + "<br/>";
269
  status += "<b>Response:</b> " + xhr.responseText + "";
270
  status += "<hr/><b>Additional Troubleshooting Tips:</b><br/>";
271
- status += "- Check the <a href='<?php echo $GLOBALS["LOG_FILE_NAME"];?>' target='install_log'>installer-log.txt</a> file for warnings or errors.<br/>";
272
  status += "- Check the web server and PHP error logs. <br/>";
273
  status += "- For timeout issues visit the <a href='https://snapcreek.com/duplicator/docs/faqs-tech/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=inst_step3_ajax_rundepl#faq-trouble-100-q' target='_blank'>Timeout FAQ Section</a><br/>";
274
  $('#ajaxerr-data').html(status);
20
  <input type="hidden" name="action_step" value="3" />
21
  <input type="hidden" name="logging" value="<?php echo $_POST['logging'] ?>" />
22
  <input type="hidden" name="retain_config" value="<?php echo $_POST['retain_config']; ?>" />
 
23
  <input type="hidden" name="json" value="<?php echo $_POST['json']; ?>" />
24
  <input type="hidden" name="dbhost" value="<?php echo $_POST['dbhost'] ?>" />
25
  <input type="hidden" name="dbport" value="<?php echo $_POST['dbport'] ?>" />
31
  <input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="<?php echo $_POST['exe_safe_mode'] ?>" />
32
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
33
 
34
+ <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>?now=<?php echo $GLOBALS['NOW_DATE'] ?>" target="install_log">dup-installer-log.txt</a></div>
35
  <div class="hdr-main">
36
  Step <span class="step">3</span> of 4: Update Data
37
  </div>
185
  ========================================= -->
186
  <form id='s3-result-form' method="post" class="content-form" style="display:none">
187
 
188
+ <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>" target="install_log">dup-installer-log.txt</a></div>
189
  <div class="hdr-main">
190
  Step <span class="step">3</span> of 4: Update Data
191
  </div>
194
  <div class="dupx-debug">
195
  <input type="hidden" name="secure-pass" value="<?php echo $_POST['secure-pass']; ?>" />
196
  <input type="hidden" name="action_step" value="4" />
 
197
  <input type="hidden" name="retain_config" value="<?php echo $_POST['retain_config']; ?>" />
198
+ <input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="<?php echo $_POST['exe_safe_mode']; ?>"/>
199
  <input type="hidden" name="url_new" id="ajax-url_new" />
200
  <input type="hidden" name="json" id="ajax-json" />
201
  <br/>
215
  <div id="ajaxerr-area" style="display:none">
216
  <p>Please try again an issue has occurred.</p>
217
  <div style="padding: 0px 10px 10px 10px;">
218
+ <div id="ajaxerr-data">An unknown issue has occurred with the update data set up process. Please see the dup-installer-log.txt file for more details.</div>
219
  <div style="text-align:center; margin:10px auto 0px auto">
220
  <input type="button" class="default-btn" onclick='DUPX.hideErrorResult2()' value="&laquo; Try Again" /><br/><br/>
221
  <i style='font-size:11px'>See online help for more details at <a href='https://snapcreek.com/ticket?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=inst_step3_ajax' target='_blank'>snapcreek.com</a></i>
266
  status += "<b>Status:</b> " + xhr.statusText + "<br/>";
267
  status += "<b>Response:</b> " + xhr.responseText + "";
268
  status += "<hr/><b>Additional Troubleshooting Tips:</b><br/>";
269
+ status += "- Check the <a href='<?php echo $GLOBALS["LOG_FILE_NAME"];?>' target='install_log'>dup-installer-log.txt</a> file for warnings or errors.<br/>";
270
  status += "- Check the web server and PHP error logs. <br/>";
271
  status += "- For timeout issues visit the <a href='https://snapcreek.com/duplicator/docs/faqs-tech/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=problem_resolution&utm_content=inst_step3_ajax_rundepl#faq-trouble-100-q' target='_blank'>Timeout FAQ Section</a><br/>";
272
  $('#ajaxerr-data').html(status);
installer/build/view.step4.php CHANGED
@@ -1,13 +1,12 @@
1
  <?php
2
  $_POST['url_new'] = isset($_POST['url_new']) ? DUPX_U::sanitize($_POST['url_new']) : '';
3
- $_POST['archive_name'] = isset($_POST['archive_name']) ? $_POST['archive_name'] : '';
4
  $_POST['retain_config'] = isset($_POST['retain_config']) && $_POST['retain_config'] == '1' ? true : false;
5
  $_POST['exe_safe_mode'] = isset($_POST['exe_safe_mode']) ? $_POST['exe_safe_mode'] : 0;
6
 
7
  $admin_base = basename($GLOBALS['FW_WPLOGIN_URL']);
8
 
9
  $safe_mode = $_POST['exe_safe_mode'];
10
- $admin_redirect = rtrim($_POST['url_new'], "/") . "/wp-admin/admin.php?page=duplicator-tools&tab=diagnostics&section=info&package={$_POST['archive_name']}&safe_mode={$safe_mode}";
11
  $admin_redirect = urlencode($admin_redirect);
12
  $admin_url_qry = (strpos($admin_base, '?') === false) ? '?' : '&';
13
  $admin_login = rtrim($_POST['url_new'], '/') . "/{$admin_base}{$admin_url_qry}redirect_to={$admin_redirect}";
@@ -26,7 +25,7 @@ DUPX.getAdminLogin = function() {
26
  VIEW: STEP 4 - INPUT -->
27
  <form id='s4-input-form' method="post" class="content-form" style="line-height:20px">
28
  <input type="hidden" name="url_new" id="url_new" value="<?php echo $url_new_rtrim; ?>" />
29
- <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>?now=<?php echo $GLOBALS['NOW_DATE'] ?>" target="install_log">installer-log.txt</a></div>
30
 
31
  <div class="hdr-main">
32
  Step <span class="step">4</span> of 4: Test Site
@@ -132,7 +131,7 @@ VIEW: STEP 4 - INPUT -->
132
  <div class="s4-err-title">STEP 2 - INSTALL NOTICES:</div>
133
  <b data-bind="with: status.step2">ERRORS (<span data-bind="text: query_errs"></span>)</b><br/>
134
  <div class="info-error">
135
- Queries that error during the deploy step are logged to the <a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>" target="dpro-installer">install-log.txt</a> file and
136
  and marked with an **ERROR** status. If you experience a few errors (under 5), in many cases they can be ignored as long as your site is working correctly.
137
  However if you see a large amount of errors or you experience an issue with your site then the error messages in the log file will need to be investigated.
138
  <br/><br/>
1
  <?php
2
  $_POST['url_new'] = isset($_POST['url_new']) ? DUPX_U::sanitize($_POST['url_new']) : '';
 
3
  $_POST['retain_config'] = isset($_POST['retain_config']) && $_POST['retain_config'] == '1' ? true : false;
4
  $_POST['exe_safe_mode'] = isset($_POST['exe_safe_mode']) ? $_POST['exe_safe_mode'] : 0;
5
 
6
  $admin_base = basename($GLOBALS['FW_WPLOGIN_URL']);
7
 
8
  $safe_mode = $_POST['exe_safe_mode'];
9
+ $admin_redirect = rtrim($_POST['url_new'], "/") . "/wp-admin/admin.php?page=duplicator-tools&tab=diagnostics&section=info&package={$GLOBALS['FW_PACKAGE_NAME']}&safe_mode={$safe_mode}";
10
  $admin_redirect = urlencode($admin_redirect);
11
  $admin_url_qry = (strpos($admin_base, '?') === false) ? '?' : '&';
12
  $admin_login = rtrim($_POST['url_new'], '/') . "/{$admin_base}{$admin_url_qry}redirect_to={$admin_redirect}";
25
  VIEW: STEP 4 - INPUT -->
26
  <form id='s4-input-form' method="post" class="content-form" style="line-height:20px">
27
  <input type="hidden" name="url_new" id="url_new" value="<?php echo $url_new_rtrim; ?>" />
28
+ <div class="dupx-logfile-link"><a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>?now=<?php echo $GLOBALS['NOW_DATE'] ?>" target="install_log">dup-installer-log.txt</a></div>
29
 
30
  <div class="hdr-main">
31
  Step <span class="step">4</span> of 4: Test Site
131
  <div class="s4-err-title">STEP 2 - INSTALL NOTICES:</div>
132
  <b data-bind="with: status.step2">ERRORS (<span data-bind="text: query_errs"></span>)</b><br/>
133
  <div class="info-error">
134
+ Queries that error during the deploy step are logged to the <a href="<?php echo $GLOBALS["LOG_FILE_NAME"];?>" target="dpro-installer">dup-installer-log.txt</a> file and
135
  and marked with an **ERROR** status. If you experience a few errors (under 5), in many cases they can be ignored as long as your site is working correctly.
136
  However if you see a large amount of errors or you experience an issue with your site then the error messages in the log file will need to be investigated.
137
  <br/><br/>
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: migration, backup, restore, move, migrate, duplicate, transfer, clone, aut
4
  Requires at least: 4.0
5
  Tested up to: 4.9
6
  Requires PHP: 5.2.17
7
- Stable tag: 1.2.46
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.
4
  Requires at least: 4.0
5
  Tested up to: 4.9
6
  Requires PHP: 5.2.17
7
+ Stable tag: 1.2.48
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.
views/settings/packages.php CHANGED
@@ -16,7 +16,7 @@ if (isset($_POST['action']) && $_POST['action'] == 'save') {
16
  //Package
17
  $mysqldump_enabled = isset($_POST['package_dbmode']) && $_POST['package_dbmode'] == 'mysql' ? "1" : "0";
18
  if (isset($_POST['package_mysqldump_path'])) {
19
- $mysqldump_exe_file = DUP_Util::safePath(stripslashes(trim($_POST['package_mysqldump_path'])));
20
  $mysqldump_exe_file = DUP_DB::escSQL(strip_tags($mysqldump_exe_file), true);
21
  }
22
 
@@ -156,7 +156,7 @@ $mysqlDumpFound = ($mysqlDumpPath) ? true : false;
156
  data-tooltip-title="<?php _e("mysqldump path:", 'duplicator'); ?>"
157
  data-tooltip="<?php _e('An optional path to the mysqldump program. Add a custom path if the path to mysqldump is not properly detected or needs to be changed.', 'duplicator'); ?>"></i>
158
  <label><?php _e("Custom Path:", 'duplicator'); ?></label><br/>
159
- <input type="text" name="package_mysqldump_path" id="package_mysqldump_path" value="<?php echo $package_mysqldump_path; ?>" placeholder="<?php _e("/usr/bin/mypath/mysqldump.exe", 'duplicator'); ?>" />
160
  <div class="dup-feature-notfound">
161
  <?php
162
  if (!$mysqlDumpFound && strlen($mysqldump_exe_file)) {
16
  //Package
17
  $mysqldump_enabled = isset($_POST['package_dbmode']) && $_POST['package_dbmode'] == 'mysql' ? "1" : "0";
18
  if (isset($_POST['package_mysqldump_path'])) {
19
+ $mysqldump_exe_file = DUP_Util::safePath(sanitize_text_field(trim($_POST['package_mysqldump_path'])));
20
  $mysqldump_exe_file = DUP_DB::escSQL(strip_tags($mysqldump_exe_file), true);
21
  }
22
 
156
  data-tooltip-title="<?php _e("mysqldump path:", 'duplicator'); ?>"
157
  data-tooltip="<?php _e('An optional path to the mysqldump program. Add a custom path if the path to mysqldump is not properly detected or needs to be changed.', 'duplicator'); ?>"></i>
158
  <label><?php _e("Custom Path:", 'duplicator'); ?></label><br/>
159
+ <input type="text" name="package_mysqldump_path" id="package_mysqldump_path" value="<?php echo esc_attr($package_mysqldump_path); ?>" placeholder="<?php _e("/usr/bin/mypath/mysqldump.exe", 'duplicator'); ?>" />
160
  <div class="dup-feature-notfound">
161
  <?php
162
  if (!$mysqlDumpFound && strlen($mysqldump_exe_file)) {