Duplicator – WordPress Migration Plugin - Version 1.2.16

Version Description

Download this release

Release Info

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

Code changes from version 1.2.14 to 1.2.16

classes/package/class.pack.installer.php CHANGED
@@ -10,11 +10,6 @@ class DUP_Installer
10
  public $OptsDBPort;
11
  public $OptsDBName;
12
  public $OptsDBUser;
13
- public $OptsSSLAdmin;
14
- public $OptsSSLLogin;
15
- public $OptsCacheWP;
16
- public $OptsCachePath;
17
- public $OptsURLNew;
18
  //PROTECTED
19
  protected $Package;
20
 
@@ -156,15 +151,11 @@ class DUP_Installer
156
  "fwrite_archive_onlydb" => $this->Package->Archive->ExportOnlyDB,
157
  "fwrite_package_notes" => $this->Package->Notes,
158
  "fwrite_secure_name" => $this->Package->NameHash,
159
- "fwrite_url_new" => $this->Package->Installer->OptsURLNew,
160
  "fwrite_dbhost" => $this->Package->Installer->OptsDBHost,
161
  "fwrite_dbport" => $this->Package->Installer->OptsDBPort,
162
  "fwrite_dbname" => $this->Package->Installer->OptsDBName,
163
  "fwrite_dbuser" => $this->Package->Installer->OptsDBUser,
164
  "fwrite_dbpass" => '',
165
- "fwrite_ssl_admin" => $this->Package->Installer->OptsSSLAdmin,
166
- "fwrite_cache_wp" => $this->Package->Installer->OptsCacheWP,
167
- "fwrite_cache_path" => $this->Package->Installer->OptsCachePath,
168
  "fwrite_wp_tableprefix" => $wpdb->prefix,
169
  "fwrite_opts_delete" => json_encode($deleteOpts),
170
  "fwrite_blogname" => esc_html(get_option('blogname')),
10
  public $OptsDBPort;
11
  public $OptsDBName;
12
  public $OptsDBUser;
 
 
 
 
 
13
  //PROTECTED
14
  protected $Package;
15
 
151
  "fwrite_archive_onlydb" => $this->Package->Archive->ExportOnlyDB,
152
  "fwrite_package_notes" => $this->Package->Notes,
153
  "fwrite_secure_name" => $this->Package->NameHash,
 
154
  "fwrite_dbhost" => $this->Package->Installer->OptsDBHost,
155
  "fwrite_dbport" => $this->Package->Installer->OptsDBPort,
156
  "fwrite_dbname" => $this->Package->Installer->OptsDBName,
157
  "fwrite_dbuser" => $this->Package->Installer->OptsDBUser,
158
  "fwrite_dbpass" => '',
 
 
 
159
  "fwrite_wp_tableprefix" => $wpdb->prefix,
160
  "fwrite_opts_delete" => json_encode($deleteOpts),
161
  "fwrite_blogname" => esc_html(get_option('blogname')),
classes/package/class.pack.php CHANGED
@@ -133,10 +133,8 @@ class DUP_Package
133
  $report['SRV']['WP']['ALL'],
134
  $report['ARC']['Status']['Size'],
135
  $report['ARC']['Status']['Names'],
136
- //$report['ARC']['Status']['Big'],
137
  $db['Status']['DB_Size'],
138
- $db['Status']['DB_Rows'],
139
- $db['Status']['DB_Case']);
140
 
141
  //array_count_values will throw a warning message if it has null values,
142
  //so lets replace all nulls with empty string
@@ -145,9 +143,10 @@ class DUP_Package
145
  $warnings[$i] = '';
146
  }
147
  }
 
148
  $warn_counts = is_array($warnings) ? array_count_values($warnings) : 0;
149
- $report['RPT']['Warnings'] = $warn_counts['Warn'];
150
- $report['RPT']['Success'] = $warn_counts['Good'];
151
  $report['RPT']['ScanTime'] = DUP_Util::elapsedTime(DUP_Util::getMicrotime(), $timerStart);
152
  $fp = fopen(DUPLICATOR_SSDIR_PATH_TMP."/{$this->ScanFile}", 'w');
153
 
@@ -161,7 +160,7 @@ class DUP_Package
161
  /**
162
  * Starts the package build process
163
  *
164
- * @return obj Retuns a DUP_Package object
165
  */
166
  public function runBuild()
167
  {
@@ -334,11 +333,6 @@ class DUP_Package
334
  $this->Installer->OptsDBPort = esc_html($post['dbport']);
335
  $this->Installer->OptsDBName = esc_html($post['dbname']);
336
  $this->Installer->OptsDBUser = esc_html($post['dbuser']);
337
- $this->Installer->OptsSSLAdmin = isset($post['ssl-admin']) ? 1 : 0;
338
- $this->Installer->OptsSSLLogin = isset($post['ssl-login']) ? 1 : 0;
339
- $this->Installer->OptsCacheWP = isset($post['cache-wp']) ? 1 : 0;
340
- $this->Installer->OptsCachePath = isset($post['cache-path']) ? 1 : 0;
341
- $this->Installer->OptsURLNew = esc_html($post['url-new']);
342
  //DATABASE
343
  $this->Database->FilterOn = isset($post['dbfilter-on']) ? 1 : 0;
344
  $this->Database->FilterTables = esc_html($tablelist);
133
  $report['SRV']['WP']['ALL'],
134
  $report['ARC']['Status']['Size'],
135
  $report['ARC']['Status']['Names'],
 
136
  $db['Status']['DB_Size'],
137
+ $db['Status']['DB_Rows']);
 
138
 
139
  //array_count_values will throw a warning message if it has null values,
140
  //so lets replace all nulls with empty string
143
  $warnings[$i] = '';
144
  }
145
  }
146
+
147
  $warn_counts = is_array($warnings) ? array_count_values($warnings) : 0;
148
+ $report['RPT']['Warnings'] = is_null($warn_counts['Warn']) ? 0 : $warn_counts['Warn'];
149
+ $report['RPT']['Success'] = is_null($warn_counts['Good']) ? 0 : $warn_counts['Good'];
150
  $report['RPT']['ScanTime'] = DUP_Util::elapsedTime(DUP_Util::getMicrotime(), $timerStart);
151
  $fp = fopen(DUPLICATOR_SSDIR_PATH_TMP."/{$this->ScanFile}", 'w');
152
 
160
  /**
161
  * Starts the package build process
162
  *
163
+ * @return obj Returns a DUP_Package object
164
  */
165
  public function runBuild()
166
  {
333
  $this->Installer->OptsDBPort = esc_html($post['dbport']);
334
  $this->Installer->OptsDBName = esc_html($post['dbname']);
335
  $this->Installer->OptsDBUser = esc_html($post['dbuser']);
 
 
 
 
 
336
  //DATABASE
337
  $this->Database->FilterOn = isset($post['dbfilter-on']) ? 1 : 0;
338
  $this->Database->FilterTables = esc_html($tablelist);
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.14');
6
  define('DUPLICATOR_HOMEPAGE', 'http://lifeinthegrid.com/labs/duplicator');
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.16');
6
  define('DUPLICATOR_HOMEPAGE', 'http://lifeinthegrid.com/labs/duplicator');
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: http://www.lifeinthegrid.com/duplicator/
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.14
7
  Author: Snap Creek
8
  Author URI: http://www.snapcreek.com/duplicator/
9
  Text Domain: duplicator
3
  Plugin Name: Duplicator
4
  Plugin URI: http://www.lifeinthegrid.com/duplicator/
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.16
7
  Author: Snap Creek
8
  Author URI: http://www.snapcreek.com/duplicator/
9
  Text Domain: duplicator
installer/build/classes/config/class.conf.wp.php CHANGED
@@ -98,8 +98,9 @@ class DUPX_WPConfig
98
  "'WP_HOME', '{$_POST['url_new']}');",
99
  "'WP_SITEURL', '{$_POST['url_new']}');");
100
 
101
- //Not sure how well tokenParser works on all servers so only using for
102
- //not critical constants at this point.
 
103
  $defines = self::tokenParser($wpconfig_path);
104
 
105
  //WP_CONTENT_DIR
@@ -113,7 +114,7 @@ class DUPX_WPConfig
113
 
114
  //WP_CONTENT_URL
115
  if (isset($defines['WP_CONTENT_URL'])) {
116
- $val = str_replace($_POST['url_old'], $_POST['url_new'], $defines['WP_CONTENT_URL'], $count);
117
  if ($count > 0) {
118
  array_push($patterns, "/('|\")WP_CONTENT_URL.*?\)\s*;/");
119
  array_push($replace, "'WP_CONTENT_URL', '{$val}');");
98
  "'WP_HOME', '{$_POST['url_new']}');",
99
  "'WP_SITEURL', '{$_POST['url_new']}');");
100
 
101
+ //Not sure how well tokenParser works on all servers so only using for not critical constants at this point.
102
+ //$count checks for dynamic variable types such as: define('WP_TEMP_DIR', 'D:/' . $var . 'somepath/');
103
+ //which should not be updated.
104
  $defines = self::tokenParser($wpconfig_path);
105
 
106
  //WP_CONTENT_DIR
114
 
115
  //WP_CONTENT_URL
116
  if (isset($defines['WP_CONTENT_URL'])) {
117
+ $val = str_replace($_POST['url_old'] . '/', $_POST['url_new'] . '/', $defines['WP_CONTENT_URL'], $count);
118
  if ($count > 0) {
119
  array_push($patterns, "/('|\")WP_CONTENT_URL.*?\)\s*;/");
120
  array_push($replace, "'WP_CONTENT_URL', '{$val}');");
installer/build/ctrls/ctrl.step3.php CHANGED
@@ -25,7 +25,7 @@ DUPX_DB::setCharset($dbh, $_POST['dbcharset'], $_POST['dbcollate']);
25
  $_POST['blogname'] = mysqli_real_escape_string($dbh, $_POST['blogname']);
26
  $_POST['postguid'] = isset($_POST['postguid']) && $_POST['postguid'] == 1 ? 1 : 0;
27
  $_POST['fullsearch'] = isset($_POST['fullsearch']) && $_POST['fullsearch'] == 1 ? 1 : 0;
28
- $_POST['urlextended'] = isset($_POST['urlextended']) && $_POST['urlextended'] == 1 ? 1 : 0;
29
  $_POST['path_old'] = isset($_POST['path_old']) ? trim($_POST['path_old']) : null;
30
  $_POST['path_new'] = isset($_POST['path_new']) ? trim($_POST['path_new']) : null;
31
  $_POST['siteurl'] = isset($_POST['siteurl']) ? rtrim(trim($_POST['siteurl']), '/') : null;
@@ -99,33 +99,47 @@ $url_new_json = str_replace('"', "", json_encode($_POST['url_new']));
99
  $path_old_json = str_replace('"', "", json_encode($_POST['path_old']));
100
  $path_new_json = str_replace('"', "", json_encode($_POST['path_new']));
101
 
102
- array_push($GLOBALS['REPLACE_LIST'],
103
- array('search' => $_POST['url_old'], 'replace' => $_POST['url_new']),
104
- array('search' => $_POST['path_old'], 'replace' => $_POST['path_new']),
105
- array('search' => $url_old_json, 'replace' => $url_new_json),
106
- array('search' => $path_old_json, 'replace' => $path_new_json),
107
- array('search' => urlencode($_POST['path_old']), 'replace' => urlencode($_POST['path_new'])),
108
- array('search' => urlencode($_POST['url_old']), 'replace' => urlencode($_POST['url_new'])),
109
- array('search' => rtrim(DUPX_U::unsetSafePath($_POST['path_old']), '\\'), 'replace' => rtrim($_POST['path_new'], '/'))
110
  );
111
 
112
- //URL EXTENDED
113
- if ($_POST['urlextended']) {
114
-
115
- //RAW '//'
116
  $url_old_raw = str_ireplace(array('http://', 'https://'), '//', $_POST['url_old']);
117
  $url_new_raw = str_ireplace(array('http://', 'https://'), '//', $_POST['url_new']);
118
  $url_old_raw_json = str_replace('"', "", json_encode($url_old_raw));
119
  $url_new_raw_json = str_replace('"', "", json_encode($url_new_raw));
120
 
121
- //INVERSE: Apply a search for the inverse of the orginal
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  if (stristr($_POST['url_old'], 'http:')) {
123
  //Search for https urls
124
  $url_old_diff = str_ireplace('http:', 'https:', $_POST['url_old']);
125
  $url_new_diff = str_ireplace('http:', 'https:', $_POST['url_new']);
126
  $url_old_diff_json = str_replace('"', "", json_encode($url_old_diff));
127
  $url_new_diff_json = str_replace('"', "", json_encode($url_new_diff));
128
-
129
  } else {
130
  //Search for http urls
131
  $url_old_diff = str_ireplace('https:', 'http:', $_POST['url_old']);
@@ -135,16 +149,13 @@ if ($_POST['urlextended']) {
135
  }
136
 
137
  array_push($GLOBALS['REPLACE_LIST'],
138
- //RAW
139
- array('search' => $url_old_raw, 'replace' => $url_new_raw),
140
- array('search' => $url_old_raw_json, 'replace' => $url_new_raw_json),
141
- array('search' => urlencode($url_old_raw), 'replace' => urlencode($url_new_raw)),
142
-
143
- //INVERSE
144
- array('search' => $url_old_diff, 'replace' => $url_new_diff),
145
- array('search' => $url_old_diff_json, 'replace' => $url_new_diff_json),
146
- array('search' => urlencode($url_old_diff), 'replace' => urlencode($url_new_diff))
147
  );
 
 
148
  }
149
 
150
 
25
  $_POST['blogname'] = mysqli_real_escape_string($dbh, $_POST['blogname']);
26
  $_POST['postguid'] = isset($_POST['postguid']) && $_POST['postguid'] == 1 ? 1 : 0;
27
  $_POST['fullsearch'] = isset($_POST['fullsearch']) && $_POST['fullsearch'] == 1 ? 1 : 0;
28
+ $_POST['urlrelative'] = isset($_POST['urlrelative']) && $_POST['urlrelative'] == 1 ? 1 : 0;
29
  $_POST['path_old'] = isset($_POST['path_old']) ? trim($_POST['path_old']) : null;
30
  $_POST['path_new'] = isset($_POST['path_new']) ? trim($_POST['path_new']) : null;
31
  $_POST['siteurl'] = isset($_POST['siteurl']) ? rtrim(trim($_POST['siteurl']), '/') : null;
99
  $path_old_json = str_replace('"', "", json_encode($_POST['path_old']));
100
  $path_new_json = str_replace('"', "", json_encode($_POST['path_new']));
101
 
102
+ //DIRS PATHS
103
+ array_push($GLOBALS['REPLACE_LIST'],
104
+ array('search' => $_POST['path_old'], 'replace' => $_POST['path_new']),
105
+ array('search' => $path_old_json, 'replace' => $path_new_json),
106
+ array('search' => urlencode($_POST['path_old']), 'replace' => urlencode($_POST['path_new'])),
107
+ array('search' => rtrim(DUPX_U::unsetSafePath($_POST['path_old']), '\\'), 'replace' => rtrim($_POST['path_new'], '/'))
 
 
108
  );
109
 
110
+ //SEARCH WITH NO PROTOCAL: RAW "//"
111
+ if ($_POST['urlrelative']) {
112
+
 
113
  $url_old_raw = str_ireplace(array('http://', 'https://'), '//', $_POST['url_old']);
114
  $url_new_raw = str_ireplace(array('http://', 'https://'), '//', $_POST['url_new']);
115
  $url_old_raw_json = str_replace('"', "", json_encode($url_old_raw));
116
  $url_new_raw_json = str_replace('"', "", json_encode($url_new_raw));
117
 
118
+ array_push($GLOBALS['REPLACE_LIST'],
119
+ //RAW
120
+ array('search' => $url_old_raw, 'replace' => $url_new_raw),
121
+ array('search' => $url_old_raw_json, 'replace' => $url_new_raw_json),
122
+ array('search' => urlencode($url_old_raw), 'replace' => urlencode($url_new_raw))
123
+ );
124
+
125
+ //SEARCH ONLY HTTP(S)
126
+ } else {
127
+
128
+ //URL PATHS
129
+ array_push($GLOBALS['REPLACE_LIST'],
130
+ array('search' => $_POST['url_old'], 'replace' => $_POST['url_new']),
131
+ array('search' => $url_old_json, 'replace' => $url_new_json),
132
+ array('search' => urlencode($_POST['url_old']), 'replace' => urlencode($_POST['url_new']))
133
+ );
134
+
135
+ //INVERSE: Apply a search for the inverse of the orginal http vs https
136
  if (stristr($_POST['url_old'], 'http:')) {
137
  //Search for https urls
138
  $url_old_diff = str_ireplace('http:', 'https:', $_POST['url_old']);
139
  $url_new_diff = str_ireplace('http:', 'https:', $_POST['url_new']);
140
  $url_old_diff_json = str_replace('"', "", json_encode($url_old_diff));
141
  $url_new_diff_json = str_replace('"', "", json_encode($url_new_diff));
142
+
143
  } else {
144
  //Search for http urls
145
  $url_old_diff = str_ireplace('https:', 'http:', $_POST['url_old']);
149
  }
150
 
151
  array_push($GLOBALS['REPLACE_LIST'],
152
+ //INVERSE
153
+ array('search' => $url_old_diff, 'replace' => $url_new_diff),
154
+ array('search' => $url_old_diff_json, 'replace' => $url_new_diff_json),
155
+ array('search' => urlencode($url_old_diff), 'replace' => urlencode($url_new_diff))
 
 
 
 
 
156
  );
157
+
158
+
159
  }
160
 
161
 
installer/build/main.installer.php CHANGED
@@ -83,7 +83,6 @@ $GLOBALS['FW_VERSION_OS'] = '%fwrite_version_os%';
83
  //GENERAL
84
  $GLOBALS['FW_TABLEPREFIX'] = '%fwrite_wp_tableprefix%';
85
  $GLOBALS['FW_URL_OLD'] = '%fwrite_url_old%';
86
- $GLOBALS['FW_URL_NEW'] = '%fwrite_url_new%';
87
  $GLOBALS['FW_PACKAGE_NAME'] = '%fwrite_archive_name%';
88
  $GLOBALS['FW_PACKAGE_NOTES'] = '%fwrite_package_notes%';
89
  $GLOBALS['FW_SECURE_NAME'] = '%fwrite_secure_name%';
@@ -94,9 +93,6 @@ $GLOBALS['FW_DBPORT'] = empty($GLOBALS['FW_DBPORT']) ? 3306 : $GLOBALS['FW_DBP
94
  $GLOBALS['FW_DBNAME'] = '%fwrite_dbname%';
95
  $GLOBALS['FW_DBUSER'] = '%fwrite_dbuser%';
96
  $GLOBALS['FW_DBPASS'] = '%fwrite_dbpass%';
97
- $GLOBALS['FW_SSL_ADMIN'] = '%fwrite_ssl_admin%';
98
- $GLOBALS['FW_CACHE_WP'] = '%fwrite_cache_wp%';
99
- $GLOBALS['FW_CACHE_PATH'] = '%fwrite_cache_path%';
100
  $GLOBALS['FW_BLOGNAME'] = '%fwrite_blogname%';
101
  $GLOBALS['FW_WPROOT'] = '%fwrite_wproot%';
102
  $GLOBALS['FW_WPLOGIN_URL'] = '%fwrite_wplogin_url%';
83
  //GENERAL
84
  $GLOBALS['FW_TABLEPREFIX'] = '%fwrite_wp_tableprefix%';
85
  $GLOBALS['FW_URL_OLD'] = '%fwrite_url_old%';
 
86
  $GLOBALS['FW_PACKAGE_NAME'] = '%fwrite_archive_name%';
87
  $GLOBALS['FW_PACKAGE_NOTES'] = '%fwrite_package_notes%';
88
  $GLOBALS['FW_SECURE_NAME'] = '%fwrite_secure_name%';
93
  $GLOBALS['FW_DBNAME'] = '%fwrite_dbname%';
94
  $GLOBALS['FW_DBUSER'] = '%fwrite_dbuser%';
95
  $GLOBALS['FW_DBPASS'] = '%fwrite_dbpass%';
 
 
 
96
  $GLOBALS['FW_BLOGNAME'] = '%fwrite_blogname%';
97
  $GLOBALS['FW_WPROOT'] = '%fwrite_wproot%';
98
  $GLOBALS['FW_WPLOGIN_URL'] = '%fwrite_wplogin_url%';
installer/build/view.help.php CHANGED
@@ -370,28 +370,27 @@ STEP 3
370
  <td>These plug-ins are the plug-ins that were activated when the package was created and represent the plug-ins that will be activated after the install.</td>
371
  </tr>
372
  <tr>
373
- <td>Extended URL<br/>Replace</td>
374
  <td>
375
- As part of the search and replace process, Step 3 will look at every cell in the database and replace the 'Old URL' with the 'New URL'. This process is an <u>exact</u>
376
- match replace routine. So if you have URLs in your site that consist of a mix of 'http', 'https' or '//' protocol relative URLs the search will only pick up the one.
377
- To enable the search across all protocol types check this checkbox.
378
  <br/><br/>
379
- In most cases this check is not needed. However if you find that some links did not get updated or you know your site is inter-mixed with multiple URL types then this
380
- option should be checked.
381
  </td>
382
  </tr>
383
- <tr>
384
- <td>Post GUID</td>
385
- <td>If your moving a site keep this value checked. For more details see the <a href="http://codex.wordpress.org/Changing_The_Site_URL#Important_GUID_Note" target="_blank">notes on GUIDS</a>. Changing values in the posts table GUID column can change RSS readers to evaluate that the posts are new and may show them in feeds again.</td>
386
- </tr>
387
  <tr>
388
  <td>Full Search</td>
389
  <td>Full search forces a scan of every single cell in the database. If it is not checked then only text based columns are searched which makes the update process much faster.
390
  Use this option if you have issues with data not updating correctly.</td>
391
  </tr>
 
 
 
 
392
  <tr>
393
  <td colspan="2" class="section">WP-Config File</td>
394
- </td>
395
  <tr>
396
  <td>Config SSL</td>
397
  <td>Turn off SSL support for WordPress. This sets FORCE_SSL_ADMIN in your wp-config file to false if true, otherwise it will create the setting if not set. The "Enforce on Login"
370
  <td>These plug-ins are the plug-ins that were activated when the package was created and represent the plug-ins that will be activated after the install.</td>
371
  </tr>
372
  <tr>
373
+ <td>Protocol Relative<br/> URL Replace</td>
374
  <td>
375
+ As part of the search and replace process, this option will look at every cell in the database and replace the 'Old URL' with the 'New URL'. This process is an
376
+ <u>protocol relative</u> search which uses only '//' as its starting point for the search.
 
377
  <br/><br/>
378
+ To force the search to use only 'http://' and 'https://' as the starting search match then un-check this box. If you find that some links did not get updated
379
+ correctly then try to un-check this box and run the stiller over again from step 1.
380
  </td>
381
  </tr>
 
 
 
 
382
  <tr>
383
  <td>Full Search</td>
384
  <td>Full search forces a scan of every single cell in the database. If it is not checked then only text based columns are searched which makes the update process much faster.
385
  Use this option if you have issues with data not updating correctly.</td>
386
  </tr>
387
+ <tr>
388
+ <td>Post GUID</td>
389
+ <td>If your moving a site keep this value checked. For more details see the <a href="http://codex.wordpress.org/Changing_The_Site_URL#Important_GUID_Note" target="_blank">notes on GUIDS</a>. Changing values in the posts table GUID column can change RSS readers to evaluate that the posts are new and may show them in feeds again.</td>
390
+ </tr>
391
  <tr>
392
  <td colspan="2" class="section">WP-Config File</td>
393
+ </tr>
394
  <tr>
395
  <td>Config SSL</td>
396
  <td>Turn off SSL support for WordPress. This sets FORCE_SSL_ADMIN in your wp-config file to false if true, otherwise it will create the setting if not set. The "Enforce on Login"
installer/build/view.step3.php CHANGED
@@ -45,7 +45,7 @@ VIEW: STEP 3- INPUT -->
45
  <tr>
46
  <td style="width:80px">URL:</td>
47
  <td>
48
- <input type="text" name="url_new" id="url_new" value="<?php echo $GLOBALS['FW_URL_NEW'] ?>" />
49
  <a href="javascript:DUPX.getNewURL('url_new')" style="font-size:12px">get</a>
50
  </td>
51
  </tr>
@@ -147,9 +147,9 @@ VIEW: STEP 3- INPUT -->
147
  </table>
148
  <br/>
149
 
150
- <input type="checkbox" name="urlextended" id="urlextended" value="1" checked="true" /> <label for="urlextended">Enable Extended URL Replace</label><br/>
151
- <input type="checkbox" name="fullsearch" id="fullsearch" value="1" /> <label for="fullsearch">Enable Full Search </label><br/>
152
- <input type="checkbox" name="postguid" id="postguid" value="1" /> <label for="postguid">Keep Post GUID unchanged</label><br/>
153
  <br/><br/>
154
 
155
  <!-- WP-CONFIG -->
@@ -157,18 +157,17 @@ VIEW: STEP 3- INPUT -->
157
  <table class="dupx-opts dupx-advopts">
158
  <tr>
159
  <td>Cache:</td>
160
- <td style="width:125px"><input type="checkbox" name="cache_wp" id="cache_wp" <?php echo ($GLOBALS['FW_CACHE_WP']) ? "checked='checked'" : ""; ?> /> <label for="cache_wp">Keep Enabled</label></td>
161
- <td><input type="checkbox" name="cache_path" id="cache_path" <?php echo ($GLOBALS['FW_CACHE_PATH']) ? "checked='checked'" : ""; ?> /> <label for="cache_path">Keep Home Path</label></td>
162
  </tr>
163
  <tr>
164
  <td>SSL:</td>
165
- <td><input type="checkbox" name="ssl_admin" id="ssl_admin" <?php echo ($GLOBALS['FW_SSL_ADMIN']) ? "checked='checked'" : ""; ?> /> <label for="ssl_admin">Enforce on Admin</label></td>
166
  <td></td>
167
  </tr>
168
  </table>
169
  <br/><br/><br/>
170
  <br/><br/>
171
-
172
  </div>
173
 
174
  <div class="dupx-footer-buttons">
@@ -275,7 +274,8 @@ DUPX.runUpdate = function()
275
  DUPX.getNewURL = function(id)
276
  {
277
  var filename= window.location.pathname.split('/').pop() || 'installer.php' ;
278
- $("#" + id).val(window.location.href.replace(filename, ''));
 
279
  }
280
 
281
  /** Allows user to edit the package url */
45
  <tr>
46
  <td style="width:80px">URL:</td>
47
  <td>
48
+ <input type="text" name="url_new" id="url_new" value="" />
49
  <a href="javascript:DUPX.getNewURL('url_new')" style="font-size:12px">get</a>
50
  </td>
51
  </tr>
147
  </table>
148
  <br/>
149
 
150
+ <input type="checkbox" name="urlrelative" id="urlrelative" value="1" checked="true" /> <label for="urlrelative">Use Protocol Relative URL Replace</label><br/>
151
+ <input type="checkbox" name="fullsearch" id="fullsearch" value="1" /> <label for="fullsearch">Use Database Full Search Mode </label><br/>
152
+ <input type="checkbox" name="postguid" id="postguid" value="1" /> <label for="postguid">Keep Post GUID Unchanged</label><br/>
153
  <br/><br/>
154
 
155
  <!-- WP-CONFIG -->
157
  <table class="dupx-opts dupx-advopts">
158
  <tr>
159
  <td>Cache:</td>
160
+ <td style="width:125px"><input type="checkbox" name="cache_wp" id="cache_wp" /> <label for="cache_wp">Keep Enabled</label></td>
161
+ <td><input type="checkbox" name="cache_path" id="cache_path" /> <label for="cache_path">Keep Home Path</label></td>
162
  </tr>
163
  <tr>
164
  <td>SSL:</td>
165
+ <td><input type="checkbox" name="ssl_admin" id="ssl_admin" /> <label for="ssl_admin">Enforce on Admin</label></td>
166
  <td></td>
167
  </tr>
168
  </table>
169
  <br/><br/><br/>
170
  <br/><br/>
 
171
  </div>
172
 
173
  <div class="dupx-footer-buttons">
274
  DUPX.getNewURL = function(id)
275
  {
276
  var filename= window.location.pathname.split('/').pop() || 'installer.php' ;
277
+ var path = window.location.href.replace(filename, '').replace(/\/$/, '');
278
+ $("#" + id).val(path);
279
  }
280
 
281
  /** Allows user to edit the package url */
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: www.lifeinthegrid.com/partner
4
  Tags: migration, backup, restore, move, migrate, duplicate, transfer, clone, automate, copy site
5
  Requires at least: 4.0
6
  Tested up to: 4.8
7
- Stable tag: 1.2.14
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
  Tags: migration, backup, restore, move, migrate, duplicate, transfer, clone, automate, copy site
5
  Requires at least: 4.0
6
  Tested up to: 4.8
7
+ Stable tag: 1.2.16
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/packages/details/detail.php CHANGED
@@ -326,10 +326,6 @@ INSTALLER -->
326
  <td><?php _e('User', 'duplicator') ?>:</td>
327
  <td><?php echo strlen($package->Installer->OptsDBUser) ? $package->Installer->OptsDBUser : __('- not set -', 'duplicator') ?></td>
328
  </tr>
329
- <tr>
330
- <td><?php _e('New URL', 'duplicator') ?>:</td>
331
- <td><?php echo strlen($package->Installer->OptsURLNew) ? $package->Installer->OptsURLNew : __('- not set -', 'duplicator') ?></td>
332
- </tr>
333
  </table>
334
  </div>
335
  </div>
326
  <td><?php _e('User', 'duplicator') ?>:</td>
327
  <td><?php echo strlen($package->Installer->OptsDBUser) ? $package->Installer->OptsDBUser : __('- not set -', 'duplicator') ?></td>
328
  </tr>
 
 
 
 
329
  </table>
330
  </div>
331
  </div>
views/packages/main/packages.php CHANGED
@@ -37,15 +37,28 @@
37
  td.error-msg span {display:inline-block; padding:7px 18px 0px 0px; color:maroon}
38
  div.dup-vote { position: absolute; top:15px; right:25px; }
39
  div.dup-vote a { font-size:12px; font-style: italic }
 
 
 
 
40
  </style>
41
 
42
  <form id="form-duplicator" method="post">
43
 
44
- <?php if($statusCount >= 2) : ?>
45
- <div class="dup-vote">
46
- <a href="https://wordpress.org/support/plugin/duplicator/reviews/?filter=5" target="vote-wp"><?php _e("Rate Duplicator!", 'duplicator') ?></a>
47
- </div>
48
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
49
 
50
  <!-- ====================
51
  TOOL-BAR -->
@@ -294,6 +307,12 @@ jQuery(document).ready(function($)
294
  {
295
  window.location.href = '?page=duplicator&action=detail&tab=detail&id=' + package_id;
296
  }
 
 
 
 
 
 
297
 
298
  });
299
  </script>
37
  td.error-msg span {display:inline-block; padding:7px 18px 0px 0px; color:maroon}
38
  div.dup-vote { position: absolute; top:15px; right:25px; }
39
  div.dup-vote a { font-size:12px; font-style: italic }
40
+ div#dup-feedback-form {display:none; height:150px; top:70px; min-width:250px; padding:10px; background-color:#f9f9f9; border:1px solid silver; border-radius:5px;
41
+ position:fixed; right:25px; z-index: 2; cursor:pointer; line-height:34px; font-size:14px; box-shadow: 10px 10px 5px -6px #999;}
42
+ div#dup-feedback-form i {display: inline-block; width: 15px}
43
+
44
  </style>
45
 
46
  <form id="form-duplicator" method="post">
47
 
48
+ <div class="dup-vote">
49
+ <a href="javascript:void(0);" onclick="Duplicator.Pack.showFeedbackForm()">
50
+ <i class="fa fa-bullhorn" aria-hidden="true"></i> <?php _e("Feedback", 'duplicator') ?>
51
+ </a>
52
+ </div>
53
+
54
+ <div id="dup-feedback-form">
55
+ <div style="text-align: center"><b><?php _e("LEAVE FEEDBACK", 'duplicator') ?></b></div>
56
+ <i class="fa fa-question-circle"></i> <a href="https://snapcreek.com/ticket/" target="_blank"><?php _e("Need help with the plugin?", 'duplicator') ?></a> <br/>
57
+ <i class="fa fa-lightbulb-o"></i> <a href="https://snapcreek.com/support?idea=1" target="_blank"><?php _e("Have an idea for the plugin?", 'duplicator') ?></a> <br/>
58
+ <?php if($statusCount >= 2) : ?>
59
+ <i class="fa fa-star-o"></i> <a href="https://wordpress.org/support/plugin/duplicator/reviews/?filter=5" target="vote-wp"><?php _e("Help review the plugin!", 'duplicator') ?></a>
60
+ <?php endif; ?>
61
+ </div>
62
 
63
  <!-- ====================
64
  TOOL-BAR -->
307
  {
308
  window.location.href = '?page=duplicator&action=detail&tab=detail&id=' + package_id;
309
  }
310
+
311
+ /* Toggles the feedback form */
312
+ Duplicator.Pack.showFeedbackForm = function ()
313
+ {
314
+ $("div#dup-feedback-form").toggle(300);
315
+ }
316
 
317
  });
318
  </script>
views/packages/main/s1.setup2.php CHANGED
@@ -351,51 +351,8 @@ INSTALLER -->
351
  <td><?php _e("User", 'duplicator') ?></td>
352
  <td><input type="text" name="dbuser" id="dbuser" value="<?php echo $Package->Installer->OptsDBUser ?>" maxlength="100" placeholder="<?php _e('example: DatabaseUserName (value is optional)', 'duplicator'); ?>" /></td>
353
  </tr>
354
- <!--tr>
355
- <td colspan="2"><div class="dup-installer-header-2"><?php _e("Advanced Options", 'duplicator') ?></div></td>
356
- </tr>
357
- <tr>
358
- <td colspan="2">
359
- <table>
360
- <tr>
361
- <td style="width:130px"><?php _e("SSL", 'duplicator') ?></td>
362
- <td style="padding-right:20px; white-space:nowrap">
363
- <input type="checkbox" name="ssl-admin" id="ssl-admin" <?php echo ($Package->Installer->OptsSSLAdmin) ? "checked='checked'" :""; ?> />
364
- <label class="chk-labels" for="ssl-admin"><?php _e("Enforce on Admin", 'duplicator') ?></label>
365
- </td>
366
- <td>
367
- <input type="checkbox" name="ssl-login" id="ssl-login" <?php echo ($Package->Installer->OptsSSLLogin) ? "checked='checked'" :""; ?> />
368
- <label class="chk-labels" for="ssl-login"><?php _e("Enforce on Logins", 'duplicator') ?></label>
369
- </td>
370
- </tr>
371
- <tr>
372
- <td><?php _e("Cache", 'duplicator') ?></td>
373
- <td style="padding-right:20px; white-space:nowrap">
374
- <input type="checkbox" name="cache-wp" id="cache-wp" <?php echo ($Package->Installer->OptsCacheWP) ? "checked='checked'" :""; ?> />
375
- <label class="chk-labels" for="cache-wp"><?php _e("Keep Enabled", 'duplicator') ?></label>
376
- </td>
377
- <td>
378
- <input type="checkbox" name="cache-path" id="cache-path" <?php echo ($Package->Installer->OptsCachePath) ? "checked='checked'" :""; ?> />
379
- <label class="chk-labels" for="cache-path"><?php _e("Keep Home Path", 'duplicator') ?></label>
380
- </td>
381
- </tr>
382
- </table>
383
- </td>
384
- </tr-->
385
  </table><br />
386
 
387
-
388
-
389
- <input type="hidden" name="url-new" id="url-new" value=""/>
390
-
391
-
392
- <!--table class="dup-installer-tbl">
393
- <tr>
394
- <td style="width:130px"><?php _e("New URL", 'duplicator') ?></td>
395
- <td><input type="text" name="url-new" id="url-new" value="<?php echo $Package->Installer->OptsURLNew ?>" placeholder="http://mynewsite.com" /></td>
396
- </tr>
397
- </table-->
398
-
399
  <div style="padding:10px 0 0 12px;">
400
  <span class="dup-pro-text">
401
  <img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/cpanel-48.png" style="width:16px; height:12px" />
351
  <td><?php _e("User", 'duplicator') ?></td>
352
  <td><input type="text" name="dbuser" id="dbuser" value="<?php echo $Package->Installer->OptsDBUser ?>" maxlength="100" placeholder="<?php _e('example: DatabaseUserName (value is optional)', 'duplicator'); ?>" /></td>
353
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
354
  </table><br />
355
 
 
 
 
 
 
 
 
 
 
 
 
 
356
  <div style="padding:10px 0 0 12px;">
357
  <span class="dup-pro-text">
358
  <img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/cpanel-48.png" style="width:16px; height:12px" />
views/packages/main/s2.scan1.php CHANGED
@@ -58,7 +58,7 @@
58
  div.hb-files-style div.container b {font-weight:bold}
59
  div.hb-files-style div.container div.divider {margin-bottom:2px; font-weight:bold}
60
  div.hb-files-style div.data {padding:8px; line-height:21px; height:175px; overflow-y:scroll; }
61
- div.hb-files-style div.hdrs {background:#efefef; padding:0 4px 4px 6px; border-bottom:1px solid #E0E0E0; font-weight:bold}
62
  div.hb-files-style div.hdrs sup i.fa {font-size:11px}
63
  div.hb-files-style div.hdrs-up-down {float:right; margin:2px 12px 0 0}
64
  div.hb-files-style i.dup-nav-toggle:hover {cursor:pointer; color:#999}
58
  div.hb-files-style div.container b {font-weight:bold}
59
  div.hb-files-style div.container div.divider {margin-bottom:2px; font-weight:bold}
60
  div.hb-files-style div.data {padding:8px; line-height:21px; height:175px; overflow-y:scroll; }
61
+ div.hb-files-style div.hdrs {padding:0 4px 4px 6px; border-bottom:1px solid #E0E0E0; font-weight:bold}
62
  div.hb-files-style div.hdrs sup i.fa {font-size:11px}
63
  div.hb-files-style div.hdrs-up-down {float:right; margin:2px 12px 0 0}
64
  div.hb-files-style i.dup-nav-toggle:hover {cursor:pointer; color:#999}