Version Description
- Fix: Change default login link to wp-admin
- Fix: Unneccessary duplicates of wpstg tables in db
Download this release
Release Info
Developer | ReneHermi |
Plugin | WP Staging – DB & File Duplicator & Migration |
Version | 2.2.3 |
Comparing to | |
See all releases |
Code changes from version 2.2.2 to 2.2.3
- apps/Backend/Modules/Jobs/Cloning.php +25 -11
- apps/Backend/Modules/SystemInfo.php +1 -0
- apps/Backend/views/clone/ajax/scan.php +10 -5
- apps/Backend/views/settings/index.php +1 -1
- apps/Core/WPStaging.php +1 -1
- apps/Frontend/Frontend.php +14 -7
- readme.txt +5 -1
- wp-staging.php +1 -1
apps/Backend/Modules/Jobs/Cloning.php
CHANGED
@@ -33,9 +33,7 @@ class Cloning extends Job
|
|
33 |
$this->options->clone = $_POST["cloneID"];
|
34 |
$this->options->cloneDirectoryName = preg_replace("#\W+#", '-', strtolower($this->options->clone));
|
35 |
$this->options->cloneNumber = 1;
|
36 |
-
$this->options->prefix = $this->
|
37 |
-
|
38 |
-
//$this->options->prefix = $this->getStagingPrefix();
|
39 |
$this->options->includedDirectories = array();
|
40 |
$this->options->excludedDirectories = array();
|
41 |
$this->options->extraDirectories = array();
|
@@ -52,21 +50,28 @@ class Cloning extends Job
|
|
52 |
|
53 |
$this->options->prefix = isset($this->options->existingClones[$this->options->clone]->prefix) ?
|
54 |
$this->options->existingClones[$this->options->clone]->prefix :
|
55 |
-
$this->
|
56 |
|
57 |
} // Clone does not exist but there are other clones in db
|
58 |
// Get data and increment it
|
59 |
elseif (!empty($this->options->existingClones))
|
60 |
{
|
61 |
$this->options->cloneNumber = count($this->options->existingClones)+1;
|
62 |
-
$this->options->prefix = $this->
|
63 |
}
|
64 |
|
65 |
-
//
|
66 |
-
if (isset($_POST["
|
67 |
{
|
68 |
-
$this->options->
|
|
|
|
|
69 |
}
|
|
|
|
|
|
|
|
|
|
|
70 |
|
71 |
// Excluded Directories
|
72 |
if (isset($_POST["excludedDirectories"]) && is_array($_POST["excludedDirectories"]))
|
@@ -74,12 +79,14 @@ class Cloning extends Job
|
|
74 |
$this->options->excludedDirectories = $_POST["excludedDirectories"];
|
75 |
}
|
76 |
|
|
|
77 |
// Excluded Directories TOTAL
|
78 |
// Do not copy these folders and plugins
|
79 |
$excludedDirectories = array(
|
80 |
ABSPATH . 'wp-content' . DIRECTORY_SEPARATOR . 'cache',
|
81 |
ABSPATH . 'wp-content' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'wps-hide-login',
|
82 |
ABSPATH . 'wp-content' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'wp-super-cache',
|
|
|
83 |
);
|
84 |
|
85 |
$this->options->excludedDirectories = array_merge($excludedDirectories, $this->options->excludedDirectories);
|
@@ -113,10 +120,10 @@ class Cloning extends Job
|
|
113 |
/**
|
114 |
* Create a new staging prefix which does not already exists in database
|
115 |
*/
|
116 |
-
public function
|
117 |
|
118 |
-
//
|
119 |
-
// 1000 different possible prefixes should be enough here
|
120 |
for($i=0; $i <= 10000; $i++){
|
121 |
$this->options->prefix = isset($this->options->existingClones) ?
|
122 |
'wpstg' . (count($this->options->existingClones)+$i) . '_' :
|
@@ -198,6 +205,10 @@ class Cloning extends Job
|
|
198 |
return $response;
|
199 |
}
|
200 |
|
|
|
|
|
|
|
|
|
201 |
/**
|
202 |
* Clone Database
|
203 |
* @return object
|
@@ -238,6 +249,7 @@ class Cloning extends Job
|
|
238 |
return $this->handleJobResponse($data->start(), "finish");
|
239 |
}
|
240 |
|
|
|
241 |
/**
|
242 |
* Save Clone Data
|
243 |
* @return object
|
@@ -247,4 +259,6 @@ class Cloning extends Job
|
|
247 |
$finish = new Finish();
|
248 |
return $this->handleJobResponse($finish->start(), '');
|
249 |
}
|
|
|
|
|
250 |
}
|
33 |
$this->options->clone = $_POST["cloneID"];
|
34 |
$this->options->cloneDirectoryName = preg_replace("#\W+#", '-', strtolower($this->options->clone));
|
35 |
$this->options->cloneNumber = 1;
|
36 |
+
$this->options->prefix = $this->setStagingPrefix();
|
|
|
|
|
37 |
$this->options->includedDirectories = array();
|
38 |
$this->options->excludedDirectories = array();
|
39 |
$this->options->extraDirectories = array();
|
50 |
|
51 |
$this->options->prefix = isset($this->options->existingClones[$this->options->clone]->prefix) ?
|
52 |
$this->options->existingClones[$this->options->clone]->prefix :
|
53 |
+
$this->setStagingPrefix();
|
54 |
|
55 |
} // Clone does not exist but there are other clones in db
|
56 |
// Get data and increment it
|
57 |
elseif (!empty($this->options->existingClones))
|
58 |
{
|
59 |
$this->options->cloneNumber = count($this->options->existingClones)+1;
|
60 |
+
$this->options->prefix = $this->setStagingPrefix();
|
61 |
}
|
62 |
|
63 |
+
// Included Tables
|
64 |
+
if (isset($_POST["includedTables"]) && is_array($_POST["includedTables"]))
|
65 |
{
|
66 |
+
$this->options->tables = $_POST["includedTables"];
|
67 |
+
} else {
|
68 |
+
$this->options->tables = array();
|
69 |
}
|
70 |
+
// Excluded Tables
|
71 |
+
// if (isset($_POST["excludedTables"]) && is_array($_POST["excludedTables"]))
|
72 |
+
// {
|
73 |
+
// $this->options->excludedTables = $_POST["excludedTables"];
|
74 |
+
// }
|
75 |
|
76 |
// Excluded Directories
|
77 |
if (isset($_POST["excludedDirectories"]) && is_array($_POST["excludedDirectories"]))
|
79 |
$this->options->excludedDirectories = $_POST["excludedDirectories"];
|
80 |
}
|
81 |
|
82 |
+
|
83 |
// Excluded Directories TOTAL
|
84 |
// Do not copy these folders and plugins
|
85 |
$excludedDirectories = array(
|
86 |
ABSPATH . 'wp-content' . DIRECTORY_SEPARATOR . 'cache',
|
87 |
ABSPATH . 'wp-content' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'wps-hide-login',
|
88 |
ABSPATH . 'wp-content' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'wp-super-cache',
|
89 |
+
ABSPATH . 'wp-content' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'peters-login-redirect',
|
90 |
);
|
91 |
|
92 |
$this->options->excludedDirectories = array_merge($excludedDirectories, $this->options->excludedDirectories);
|
120 |
/**
|
121 |
* Create a new staging prefix which does not already exists in database
|
122 |
*/
|
123 |
+
public function setStagingPrefix(){
|
124 |
|
125 |
+
// Get & find a new prefix that does not already exist in database.
|
126 |
+
// Loop through up to 1000 different possible prefixes should be enough here;)
|
127 |
for($i=0; $i <= 10000; $i++){
|
128 |
$this->options->prefix = isset($this->options->existingClones) ?
|
129 |
'wpstg' . (count($this->options->existingClones)+$i) . '_' :
|
205 |
return $response;
|
206 |
}
|
207 |
|
208 |
+
|
209 |
+
|
210 |
+
|
211 |
+
|
212 |
/**
|
213 |
* Clone Database
|
214 |
* @return object
|
249 |
return $this->handleJobResponse($data->start(), "finish");
|
250 |
}
|
251 |
|
252 |
+
|
253 |
/**
|
254 |
* Save Clone Data
|
255 |
* @return object
|
259 |
$finish = new Finish();
|
260 |
return $this->handleJobResponse($finish->start(), '');
|
261 |
}
|
262 |
+
|
263 |
+
|
264 |
}
|
apps/Backend/Modules/SystemInfo.php
CHANGED
@@ -147,6 +147,7 @@ class SystemInfo extends InjectionAware
|
|
147 |
$output .= $this->info( "Batch Size:", isset( $settings->batchSize ) ? $settings->batchSize : 'undefined' );
|
148 |
$output .= $this->info( "CPU Load:", isset( $settings->cpuLoad ) ? $settings->cpuLoad : 'undefined' );
|
149 |
$output .= $this->info( "WP in Subdir:", isset( $settings->wpSubDirectory ) ? $settings->wpSubDirectory : 'false' );
|
|
|
150 |
|
151 |
$output .= PHP_EOL . PHP_EOL . "-- Available Sites Version < 1.6.x" . PHP_EOL . PHP_EOL;
|
152 |
|
147 |
$output .= $this->info( "Batch Size:", isset( $settings->batchSize ) ? $settings->batchSize : 'undefined' );
|
148 |
$output .= $this->info( "CPU Load:", isset( $settings->cpuLoad ) ? $settings->cpuLoad : 'undefined' );
|
149 |
$output .= $this->info( "WP in Subdir:", isset( $settings->wpSubDirectory ) ? $settings->wpSubDirectory : 'false' );
|
150 |
+
$output .= $this->info( "Login Custom Link:", isset( $settings->loginSlug ) ? $settings->loginSlug : 'false' );
|
151 |
|
152 |
$output .= PHP_EOL . PHP_EOL . "-- Available Sites Version < 1.6.x" . PHP_EOL . PHP_EOL;
|
153 |
|
apps/Backend/views/clone/ajax/scan.php
CHANGED
@@ -101,13 +101,18 @@
|
|
101 |
<div class="wpstg-tab-section" id="wpstg-advanced-settings">
|
102 |
<p>
|
103 |
<?php
|
104 |
-
_e('<strong>Important:</strong>
|
105 |
echo '<br/>';
|
106 |
-
echo sprintf(__('Set up
|
107 |
-
admin_url() . '/admin.php?page=wpstg-settings#wpstg_settings[loginSlug]'
|
108 |
-
admin_url()
|
109 |
);
|
110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
//$form = $this->di->get("forms")->get("general");
|
112 |
//echo $form->label("wpstg_settings['loginPostId']");
|
113 |
//echo $form->render("wpstg_settings['loginPostId']");
|
101 |
<div class="wpstg-tab-section" id="wpstg-advanced-settings">
|
102 |
<p>
|
103 |
<?php
|
104 |
+
_e('<strong>Important:</strong> Is your site using a custom login url?', 'wpstg');
|
105 |
echo '<br/>';
|
106 |
+
echo sprintf(__('Set up a <a href="%1$s" target="_blank" rel="noopener"><strong>Login Custom Link</strong></a> if login to the admin dashboard is <strong>not</strong> reachable from the default login url.', 'wpstg'),
|
107 |
+
admin_url() . '/admin.php?page=wpstg-settings#wpstg_settings[loginSlug]'
|
|
|
108 |
);
|
109 |
+
echo '<br/>';
|
110 |
+
sprintf(__('To test this you need to log out first! Than login again by using the link <a href="%1$s" target="_blank">12$s</a>.', 'wpstg'), admin_url());
|
111 |
+
echo '<br/>';
|
112 |
+
_e('If the login link does not work you <strong>must</strong> define the Login Custom Link option.', 'wpstg');
|
113 |
+
echo '<br/>';
|
114 |
+
echo '<br/>';
|
115 |
+
_e('<strong>If you are using a custom login and you do not define that setting, the staging site will not be accessable!</strong>', 'wpstg');
|
116 |
//$form = $this->di->get("forms")->get("general");
|
117 |
//echo $form->label("wpstg_settings['loginPostId']");
|
118 |
//echo $form->render("wpstg_settings['loginPostId']");
|
apps/Backend/views/settings/index.php
CHANGED
@@ -273,7 +273,7 @@
|
|
273 |
<span class="description">
|
274 |
Check this box if you like WP Staging to check sizes of each directory on scanning process.
|
275 |
<br>
|
276 |
-
Warning this might cause timeout problems in big
|
277 |
</span>
|
278 |
</div>
|
279 |
</td>
|
273 |
<span class="description">
|
274 |
Check this box if you like WP Staging to check sizes of each directory on scanning process.
|
275 |
<br>
|
276 |
+
Warning this might cause timeout problems in big directories / file structures.
|
277 |
</span>
|
278 |
</div>
|
279 |
</td>
|
apps/Core/WPStaging.php
CHANGED
@@ -29,7 +29,7 @@ final class WPStaging {
|
|
29 |
/**
|
30 |
* Plugin version
|
31 |
*/
|
32 |
-
const VERSION = "2.2.
|
33 |
|
34 |
/**
|
35 |
* Plugin name
|
29 |
/**
|
30 |
* Plugin version
|
31 |
*/
|
32 |
+
const VERSION = "2.2.3";
|
33 |
|
34 |
/**
|
35 |
* Plugin name
|
apps/Frontend/Frontend.php
CHANGED
@@ -15,6 +15,12 @@ class Frontend extends InjectionAware {
|
|
15 |
* @var object
|
16 |
*/
|
17 |
private $settings;
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
|
19 |
/**
|
20 |
* Frontend initialization.
|
@@ -23,6 +29,9 @@ class Frontend extends InjectionAware {
|
|
23 |
$this->defineHooks();
|
24 |
|
25 |
$this->settings = json_decode( json_encode( get_option( "wpstg_settings", array() ) ) );
|
|
|
|
|
|
|
26 |
}
|
27 |
|
28 |
/**
|
@@ -76,13 +85,12 @@ class Frontend extends InjectionAware {
|
|
76 |
* @return string
|
77 |
*/
|
78 |
private function getLoginUrl() {
|
79 |
-
$loginSlug = isset($this->settings->loginSlug) ? $this->settings->loginSlug : '';
|
80 |
|
81 |
-
if( empty( $loginSlug ) ) {
|
82 |
-
return
|
83 |
}
|
84 |
|
85 |
-
return get_home_url() . '/?' . $loginSlug;
|
86 |
}
|
87 |
|
88 |
/**
|
@@ -119,12 +127,11 @@ class Frontend extends InjectionAware {
|
|
119 |
* @return bool
|
120 |
*/
|
121 |
private function isLoginPage() {
|
122 |
-
$loginSlug = isset($this->settings->loginSlug) ? $this->settings->loginSlug : '';
|
123 |
|
124 |
return (
|
125 |
in_array( $GLOBALS["pagenow"], array("wp-login.php") ) ||
|
126 |
-
in_array( $loginSlug, $_GET ) ||
|
127 |
-
array_key_exists( $loginSlug, $_GET )
|
128 |
);
|
129 |
}
|
130 |
|
15 |
* @var object
|
16 |
*/
|
17 |
private $settings;
|
18 |
+
|
19 |
+
/**
|
20 |
+
*
|
21 |
+
* @var string
|
22 |
+
*/
|
23 |
+
private $loginSlug;
|
24 |
|
25 |
/**
|
26 |
* Frontend initialization.
|
29 |
$this->defineHooks();
|
30 |
|
31 |
$this->settings = json_decode( json_encode( get_option( "wpstg_settings", array() ) ) );
|
32 |
+
|
33 |
+
$this->loginSlug = isset($this->settings->loginSlug) ? $this->settings->loginSlug : '';
|
34 |
+
|
35 |
}
|
36 |
|
37 |
/**
|
85 |
* @return string
|
86 |
*/
|
87 |
private function getLoginUrl() {
|
|
|
88 |
|
89 |
+
if( empty( $this->loginSlug ) ) {
|
90 |
+
return get_home_url() . '/wp-admin';
|
91 |
}
|
92 |
|
93 |
+
return get_home_url() . '/?' . $this->loginSlug;
|
94 |
}
|
95 |
|
96 |
/**
|
127 |
* @return bool
|
128 |
*/
|
129 |
private function isLoginPage() {
|
|
|
130 |
|
131 |
return (
|
132 |
in_array( $GLOBALS["pagenow"], array("wp-login.php") ) ||
|
133 |
+
in_array( $this->loginSlug, $_GET ) ||
|
134 |
+
array_key_exists( $this->loginSlug, $_GET )
|
135 |
);
|
136 |
}
|
137 |
|
readme.txt
CHANGED
@@ -9,7 +9,7 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
|
9 |
Tags: staging, duplication, cloning, clone, migration, sandbox, test site, testing, backup, post, admin, administration, duplicate posts
|
10 |
Requires at least: 3.6+
|
11 |
Tested up to: 4.9
|
12 |
-
Stable tag: 2.2.
|
13 |
|
14 |
A duplicator plugin! Clone, duplicate and migrate live sites to independent staging and development sites that are available only to administrators.
|
15 |
|
@@ -145,6 +145,10 @@ https://wp-staging.com
|
|
145 |
|
146 |
== Changelog ==
|
147 |
|
|
|
|
|
|
|
|
|
148 |
= 2.2.2 =
|
149 |
* Fix: Undefined property: stdClass::$loginSlug
|
150 |
|
9 |
Tags: staging, duplication, cloning, clone, migration, sandbox, test site, testing, backup, post, admin, administration, duplicate posts
|
10 |
Requires at least: 3.6+
|
11 |
Tested up to: 4.9
|
12 |
+
Stable tag: 2.2.3
|
13 |
|
14 |
A duplicator plugin! Clone, duplicate and migrate live sites to independent staging and development sites that are available only to administrators.
|
15 |
|
145 |
|
146 |
== Changelog ==
|
147 |
|
148 |
+
= 2.2.3 =
|
149 |
+
* Fix: Change default login link to wp-admin
|
150 |
+
* Fix: Unneccessary duplicates of wpstg tables in db
|
151 |
+
|
152 |
= 2.2.2 =
|
153 |
* Fix: Undefined property: stdClass::$loginSlug
|
154 |
|
wp-staging.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* Author: WP-Staging
|
8 |
* Author URI: https://wp-staging.com
|
9 |
* Contributors: ReneHermi, ilgityildirim
|
10 |
-
* Version: 2.2.
|
11 |
* Text Domain: wpstg
|
12 |
* Domain Path: /languages/
|
13 |
|
7 |
* Author: WP-Staging
|
8 |
* Author URI: https://wp-staging.com
|
9 |
* Contributors: ReneHermi, ilgityildirim
|
10 |
+
* Version: 2.2.3
|
11 |
* Text Domain: wpstg
|
12 |
* Domain Path: /languages/
|
13 |
|