Version Description
Download this release
Release Info
Developer | cory@lamle.org |
Plugin | Duplicator – WordPress Migration Plugin |
Version | 1.4.3 |
Comparing to | |
See all releases |
Code changes from version 1.4.2 to 1.4.3
- assets/css/style.css +44 -3
- assets/webfonts/fa-brands-400.eot +0 -0
- assets/webfonts/fa-brands-400.ttf +0 -0
- assets/webfonts/fa-regular-400.eot +0 -0
- assets/webfonts/fa-regular-400.ttf +0 -0
- assets/webfonts/fa-solid-900.eot +0 -0
- assets/webfonts/fa-solid-900.ttf +0 -0
- classes/class.server.php +2 -6
- define.php +2 -2
- duplicator-main.php +0 -2
- duplicator.php +2 -2
- installer/dup-installer/assets/font-awesome/webfonts/fa-brands-400.eot +0 -0
- installer/dup-installer/assets/font-awesome/webfonts/fa-brands-400.ttf +0 -0
- installer/dup-installer/assets/font-awesome/webfonts/fa-regular-400.eot +0 -0
- installer/dup-installer/assets/font-awesome/webfonts/fa-regular-400.ttf +0 -0
- installer/dup-installer/assets/font-awesome/webfonts/fa-solid-900.eot +0 -0
- installer/dup-installer/assets/font-awesome/webfonts/fa-solid-900.ttf +0 -0
- installer/dup-installer/assets/inc.css.php +1691 -406
- installer/dup-installer/classes/class.csrf.php +193 -169
- installer/dup-installer/classes/config/class.boot.php +2 -0
- installer/dup-installer/classes/config/class.security.php +244 -0
- installer/dup-installer/main.installer.php +18 -20
- installer/dup-installer/views/view.help.php +24 -6
- installer/dup-installer/views/view.init1.php +113 -47
- installer/dup-installer/views/view.s1.base.php +162 -158
- installer/dup-installer/views/view.s2.base.php +365 -363
- installer/dup-installer/views/view.s2.basic.php +29 -22
- installer/dup-installer/views/view.s3.php +615 -613
- readme.txt +5 -5
- tools/Lite/Requirements.php +14 -72
- views/packages/main/packages.php +33 -13
- views/packages/main/s1.setup2.php +1 -1
- views/packages/main/s2.scan2.php +10 -9
- views/packages/main/s2.scan3.php +1 -1
- views/packages/main/s3.build.php +38 -13
- views/packages/screen.php +128 -128
- views/settings/controller.php +4 -1
- views/settings/gopro.php +37 -38
- views/settings/import.php +33 -0
- views/settings/schedule.php +27 -27
- views/settings/storage.php +1 -1
- views/tools/controller.php +1 -4
- views/tools/import.php +0 -35
- views/tools/recovery.php +29 -28
- views/tools/templates.php +28 -28
assets/css/style.css
CHANGED
@@ -208,10 +208,7 @@ div.dup-screen-hlp-info {line-height:26px; padding:10px 0 10px 0}
|
|
208 |
}
|
209 |
}
|
210 |
|
211 |
-
|
212 |
/** Settings **/
|
213 |
-
|
214 |
-
|
215 |
#installer-name-mode-option {
|
216 |
line-height:25px;
|
217 |
}
|
@@ -231,3 +228,47 @@ div.dup-screen-hlp-info {line-height:26px; padding:10px 0 10px 0}
|
|
231 |
display: inline-block;
|
232 |
width: 90px;
|
233 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
}
|
209 |
}
|
210 |
|
|
|
211 |
/** Settings **/
|
|
|
|
|
212 |
#installer-name-mode-option {
|
213 |
line-height:25px;
|
214 |
}
|
228 |
display: inline-block;
|
229 |
width: 90px;
|
230 |
}
|
231 |
+
|
232 |
+
/** Call to action **/
|
233 |
+
div.txt-call-action-title {
|
234 |
+
margin:40px auto 20px auto;
|
235 |
+
font-size:22px;
|
236 |
+
line-height:30px;
|
237 |
+
font-weight: bold;
|
238 |
+
width:100%;
|
239 |
+
}
|
240 |
+
|
241 |
+
div.txt-call-action-sub {
|
242 |
+
font-size:16px; line-height:24px; font-weight: bold; width:100%;
|
243 |
+
margin:20px auto 40px auto;
|
244 |
+
}
|
245 |
+
|
246 |
+
a.dup-btn-call-action {
|
247 |
+
box-shadow: 0px 10px 14px -7px #3e7327;
|
248 |
+
background: linear-gradient(to bottom, #5ca53a 5%, #72b352 100%);
|
249 |
+
background-color: #4f8e32;
|
250 |
+
border-radius: 4px;
|
251 |
+
border: 1px solid #4b8f29;
|
252 |
+
display: block;
|
253 |
+
cursor: pointer;
|
254 |
+
color: #ffffff;
|
255 |
+
font-family: Arial;
|
256 |
+
font-size: 18px;
|
257 |
+
font-weight: bold;
|
258 |
+
padding: 10px 30px;
|
259 |
+
text-decoration: none;
|
260 |
+
text-shadow: 0px 1px 0px #5b8a3c;
|
261 |
+
width:150px;
|
262 |
+
margin:auto;
|
263 |
+
text-align: center;
|
264 |
+
}
|
265 |
+
|
266 |
+
a.dup-btn-call-action:hover {
|
267 |
+
background:linear-gradient(to bottom, #72b352 5%, #337114 100%);
|
268 |
+
background-color:#337114;
|
269 |
+
color:#fff;
|
270 |
+
}
|
271 |
+
|
272 |
+
.dup-btn-call-action:active {
|
273 |
+
color:#fff;
|
274 |
+
}
|
assets/webfonts/fa-brands-400.eot
DELETED
Binary file
|
assets/webfonts/fa-brands-400.ttf
DELETED
Binary file
|
assets/webfonts/fa-regular-400.eot
DELETED
Binary file
|
assets/webfonts/fa-regular-400.ttf
DELETED
Binary file
|
assets/webfonts/fa-solid-900.eot
DELETED
Binary file
|
assets/webfonts/fa-solid-900.ttf
DELETED
Binary file
|
classes/class.server.php
CHANGED
@@ -270,15 +270,11 @@ class DUP_Server
|
|
270 |
*/
|
271 |
private static function logCheckFalse($check, $errorMessage)
|
272 |
{
|
273 |
-
if (!is_bool($check)) {
|
274 |
-
throw new Exception('Exception: Not boolean $check [File: '.__FILE__.', Ln: '.__LINE__);
|
275 |
-
}
|
276 |
-
|
277 |
if (empty($errorMessage)) {
|
278 |
-
throw new Exception('Exception: Empty $errorMessage [File: '.__FILE__.', Ln: '.__LINE__);
|
279 |
}
|
280 |
|
281 |
-
if (
|
282 |
DUP_LOG::trace($errorMessage);
|
283 |
}
|
284 |
}
|
270 |
*/
|
271 |
private static function logCheckFalse($check, $errorMessage)
|
272 |
{
|
|
|
|
|
|
|
|
|
273 |
if (empty($errorMessage)) {
|
274 |
+
throw new Exception('Exception: Empty $errorMessage variable [File: '.__FILE__.', Ln: '.__LINE__);
|
275 |
}
|
276 |
|
277 |
+
if (filter_var($check, FILTER_VALIDATE_BOOLEAN) === false) {
|
278 |
DUP_LOG::trace($errorMessage);
|
279 |
}
|
280 |
}
|
define.php
CHANGED
@@ -5,8 +5,8 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
|
5 |
|
6 |
if (function_exists('plugin_dir_url'))
|
7 |
{
|
8 |
-
define('DUPLICATOR_VERSION', '1.4.
|
9 |
-
define('DUPLICATOR_VERSION_BUILD', '2021-
|
10 |
define('DUPLICATOR_PLUGIN_URL', plugin_dir_url(__FILE__));
|
11 |
define('DUPLICATOR_SITE_URL', get_site_url());
|
12 |
|
5 |
|
6 |
if (function_exists('plugin_dir_url'))
|
7 |
{
|
8 |
+
define('DUPLICATOR_VERSION', '1.4.3');
|
9 |
+
define('DUPLICATOR_VERSION_BUILD', '2021-09-08_08:00');
|
10 |
define('DUPLICATOR_PLUGIN_URL', plugin_dir_url(__FILE__));
|
11 |
define('DUPLICATOR_SITE_URL', get_site_url());
|
12 |
|
duplicator-main.php
CHANGED
@@ -258,8 +258,6 @@ if (Duplicator\Requirements::canRun($currentPluginBootFile) === false) {
|
|
258 |
add_action('admin_print_scripts-' . $page_tools, 'duplicator_scripts');
|
259 |
add_action('admin_print_scripts-' . $page_gopro, 'duplicator_scripts');
|
260 |
|
261 |
-
add_action('wp_enqueue_scripts', 'duplicator_global_scripts');
|
262 |
-
|
263 |
//Apply Styles
|
264 |
add_action('admin_print_styles-' . $page_packages, 'duplicator_styles');
|
265 |
add_action('admin_print_styles-' . $page_settings, 'duplicator_styles');
|
258 |
add_action('admin_print_scripts-' . $page_tools, 'duplicator_scripts');
|
259 |
add_action('admin_print_scripts-' . $page_gopro, 'duplicator_scripts');
|
260 |
|
|
|
|
|
261 |
//Apply Styles
|
262 |
add_action('admin_print_styles-' . $page_packages, 'duplicator_styles');
|
263 |
add_action('admin_print_styles-' . $page_settings, 'duplicator_styles');
|
duplicator.php
CHANGED
@@ -3,9 +3,9 @@
|
|
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.4.
|
7 |
Requires at least: 4.0
|
8 |
-
Tested up to: 5.
|
9 |
Requires PHP: 5.3.8
|
10 |
Author: Snap Creek
|
11 |
Author URI: http://www.snapcreek.com/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.4.3
|
7 |
Requires at least: 4.0
|
8 |
+
Tested up to: 5.8
|
9 |
Requires PHP: 5.3.8
|
10 |
Author: Snap Creek
|
11 |
Author URI: http://www.snapcreek.com/duplicator/
|
installer/dup-installer/assets/font-awesome/webfonts/fa-brands-400.eot
DELETED
Binary file
|
installer/dup-installer/assets/font-awesome/webfonts/fa-brands-400.ttf
DELETED
Binary file
|
installer/dup-installer/assets/font-awesome/webfonts/fa-regular-400.eot
DELETED
Binary file
|
installer/dup-installer/assets/font-awesome/webfonts/fa-regular-400.ttf
DELETED
Binary file
|
installer/dup-installer/assets/font-awesome/webfonts/fa-solid-900.eot
DELETED
Binary file
|
installer/dup-installer/assets/font-awesome/webfonts/fa-solid-900.ttf
DELETED
Binary file
|
installer/dup-installer/assets/inc.css.php
CHANGED
@@ -1,18 +1,174 @@
|
|
1 |
<?php defined('ABSPATH') || defined('DUPXABSPATH') || exit; ?>
|
2 |
<style>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
a {color:#222}
|
7 |
-
a:hover{color:gray}
|
8 |
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
width: 100%;
|
11 |
border-radius: 2px;
|
12 |
border: 1px solid silver;
|
13 |
padding: 4px;
|
14 |
padding-left: 4px;
|
15 |
-
font-family: Verdana,Arial,sans-serif;
|
16 |
line-height: 20px;
|
17 |
height: 30px;
|
18 |
box-sizing: border-box;
|
@@ -21,479 +177,1597 @@
|
|
21 |
border-radius: 4px;
|
22 |
}
|
23 |
|
24 |
-
input[readonly]:not([type="checkbox"]):not([type="radio"]):not([type="button"]),
|
25 |
-
select[readonly],
|
26 |
-
select[readonly] option{
|
27 |
-
background-color: darkgray;
|
28 |
-
color: white;
|
29 |
-
cursor: not-allowed;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
}
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
line-height: 25px;
|
35 |
}
|
36 |
|
37 |
-
|
38 |
-
|
|
|
|
|
39 |
}
|
40 |
-
|
41 |
-
|
|
|
42 |
}
|
43 |
-
|
44 |
-
|
|
|
45 |
}
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
}
|
51 |
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
55 |
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
div#content-inner {padding:10px 25px; min-height:550px}
|
61 |
-
form.content-form {min-height:550px; position:relative; line-height:17px}
|
62 |
-
div.logfile-link {float:right; font-weight:normal; font-size:11px; font-style:italic}
|
63 |
-
span.sub-notes {font-size:10px;}
|
64 |
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
.
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
div#progress-area {padding:5px; margin:150px 0 0 0; text-align:center;}
|
91 |
-
div#ajaxerr-data {padding:6px; height:425px; width:99%; border:1px solid silver; border-radius:2px; background-color:#F1F1F1; font-size:13px; overflow-y:scroll; line-height:20px}
|
92 |
-
div.hdr-main {font-size:22px; padding:0 0 5px 0; border-bottom:1px solid #D3D3D3; font-weight:bold; margin:15px 0 20px 0;}
|
93 |
-
div.hdr-main span.step {color:#DB4B38}
|
94 |
-
|
95 |
-
div.sub-header {font-size:11px; font-style:italic; font-weight:normal; margin:5px 0 -1px 0}
|
96 |
-
div.hdr-sub1 {font-size:18px; margin-bottom:5px;border:1px solid #D3D3D3;padding:7px; background-color:#f9f9f9; font-weight:bold; border-radius:2px}
|
97 |
-
div.hdr-sub1 a {cursor:pointer; text-decoration: none !important}
|
98 |
-
div.hdr-sub1 i.fa {font-size:15px; display:inline-block; margin:2px 5px 0 0; vertical-align:top}
|
99 |
-
div.hdr-sub1-area {padding:5px}
|
100 |
-
div.hdr-sub2 {font-size:15px; padding:2px 2px 2px 0; font-weight:bold; margin-bottom:5px; border:none}
|
101 |
-
div.hdr-sub3 {font-size:15px; padding:2px 2px 2px 0; border-bottom:1px solid #D3D3D3; font-weight:bold; margin-bottom:5px;}
|
102 |
-
div.hdr-sub4 {font-size:15px; padding:7px; border:1px solid #D3D3D3;; font-weight:bold; background-color:#e9e9e9;}
|
103 |
-
div.hdr-sub4:hover {background-color:#dfdfdf; cursor:pointer}
|
104 |
-
div.toggle-hdr:hover {cursor:pointer; background-color:#f1f1f1; border:1px solid #dcdcdc; }
|
105 |
-
div.toggle-hdr:hover a{color:#000}
|
106 |
-
|
107 |
-
[data-type="toggle"] > i.fa,
|
108 |
-
i.fa.fa-toggle-empty { min-width: 8px; }
|
109 |
-
div#s1-area-archive-file .ui-widget-header {border: none; border-bottom: 1px solid #D3D3D3 !important; background:#fff}
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
/* ============================
|
112 |
-
|
113 |
============================ */
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
border:1px solid #dfdfdf;
|
119 |
-
border-left: 4px solid #fff;
|
120 |
-
margin: 4px;
|
121 |
-
padding: 5px;
|
122 |
-
border-radius: 2px;
|
123 |
-
font-size: 12px;
|
124 |
}
|
125 |
|
126 |
-
.
|
127 |
-
|
128 |
-
padding-left: 0;
|
129 |
-
padding-right: 0;
|
130 |
-
margin-bottom: 4px;
|
131 |
}
|
132 |
|
133 |
-
.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
margin-top: 5px;
|
135 |
-
padding-top: 5px;
|
136 |
-
border-top: 1px solid lightgray;
|
137 |
}
|
138 |
|
139 |
-
.
|
140 |
-
|
141 |
-
|
142 |
-
overflow: auto;
|
143 |
}
|
144 |
|
145 |
-
.
|
146 |
-
|
|
|
147 |
}
|
148 |
|
149 |
-
.
|
150 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
padding: 10px;
|
152 |
-
|
153 |
-
|
154 |
-
word-wrap: break-word;
|
155 |
}
|
156 |
|
157 |
-
.
|
158 |
-
.
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
.notice.l-fatal {border-left-color: #000000;}
|
163 |
|
164 |
-
.report-
|
165 |
-
|
166 |
-
|
167 |
-
box-shadow: 4px 8px 11px -8px rgba(0,0,0,0.41);
|
168 |
}
|
169 |
|
170 |
-
.report-
|
171 |
-
|
|
|
172 |
padding: 3px;
|
173 |
-
font-weight: bold;
|
174 |
-
text-align: center;
|
175 |
font-size: 14px;
|
176 |
}
|
177 |
|
178 |
-
.report-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
179 |
padding: 5px;
|
|
|
|
|
180 |
}
|
181 |
|
182 |
-
.
|
|
|
|
|
|
|
|
|
183 |
border-radius: 2px;
|
184 |
-
padding: 2px;
|
185 |
-
margin: 1px;
|
186 |
-
font-size: 10px;
|
187 |
-
display: inline-block;
|
188 |
-
color: #FFF;
|
189 |
-
font-weight: bold;
|
190 |
-
min-width:55px;
|
191 |
}
|
192 |
|
193 |
-
.
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
|
|
|
|
|
|
199 |
|
200 |
-
.
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
|
|
206 |
}
|
207 |
-
|
208 |
-
.
|
209 |
-
|
210 |
-
color:
|
|
|
|
|
|
|
|
|
211 |
}
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
}
|
216 |
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
table.dupx-advopts td:first-child{width:125px;}
|
222 |
-
table.dupx-advopts label.radio {width:50px; display:inline-block}
|
223 |
-
table.dupx-advopts label {white-space:nowrap; cursor:pointer}
|
224 |
-
table.dupx-advopts-space {line-height:24px}
|
225 |
-
|
226 |
-
div.error-pane {border:1px solid #efefef; border-left:4px solid #D54E21; padding:0 0 0 10px; margin:2px 0 10px 0}
|
227 |
-
div.dupx-ui-error {padding-top:2px; font-size:13px; line-height: 20px}
|
228 |
-
|
229 |
-
div.footer-buttons {position:absolute; bottom:10px; padding:10px; right:0; width:100%; text-align:right}
|
230 |
-
div.footer-buttons input:hover, button:hover {border:1px solid #000}
|
231 |
-
div.footer-buttons input[disabled=disabled], button[disabled=disabled]{background-color:#F4F4F4; color:silver; border:1px solid silver;}
|
232 |
-
form#form-debug {display:block; margin:10px auto; width:750px;}
|
233 |
-
form#form-debug a {display:inline-block;}
|
234 |
-
form#form-debug pre {margin-top:-2px; display:none}
|
235 |
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
div.dupx-modes {color:#999; font-weight:normal; font-style:italic; font-size:11px; padding:5px 10px 0 0; text-align:right}
|
241 |
|
242 |
-
|
243 |
-
|
244 |
-
============================ */
|
245 |
-
button.pass-toggle {height:26px; width:26px; position:absolute; top:0px; right:0px; border:1px solid silver; border-radius:0 4px 4px 0;padding:2px 0 0 3px;}
|
246 |
-
button.pass-toggle i { padding:0; display:block; margin:-4px 0 0 -5px}
|
247 |
-
div.i1-pass-area {
|
248 |
-
width:100%;
|
249 |
-
text-align:center;
|
250 |
-
max-width: 300px;
|
251 |
margin: auto;
|
252 |
-
|
|
|
|
|
253 |
}
|
254 |
-
|
255 |
-
div.
|
256 |
-
|
257 |
-
margin-bottom: 10px;
|
258 |
-
font-weight:bold;
|
259 |
}
|
260 |
-
div.i1-pass-errmsg {color:maroon; font-weight:bold}
|
261 |
-
div#i1-pass-input {position:relative; margin:2px 0 15px 0}
|
262 |
-
input#secure-pass {border-radius:4px 0 0 4px; width:250px}
|
263 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
|
265 |
-
|
266 |
-
|
267 |
-
============================ */
|
268 |
-
div#s1-area-setup-type label {cursor:pointer}
|
269 |
-
div.s1-setup-type-sub {padding:5px 0 0 25px; display:none}
|
270 |
-
div#s1-area-archive-file .ui-widget.ui-widget-content {border: 0px solid #d3d3d3}
|
271 |
-
table.s1-archive-local {width:100%}
|
272 |
-
table.s1-archive-local td {padding:4px 4px 4px 4px}
|
273 |
-
table.s1-archive-local td:first-child {font-weight:bold; width:55px}
|
274 |
-
div.s1-archive-failed-msg {padding:15px; border:1px dashed maroon; font-size: 12px; border-radius:2px;}
|
275 |
-
div.s1-err-msg {padding:0 0 80px 0; line-height:20px}
|
276 |
-
div.s1-err-msg i {color:maroon}
|
277 |
-
.maroon {color:maroon}
|
278 |
-
.green {color:green}
|
279 |
-
|
280 |
-
div#s1-area-sys-setup div.info-top {text-align:center; font-style:italic; font-size:11px; padding:0 5px 5px 5px}
|
281 |
-
table.s1-checks-area {width:100%; margin:0; padding:0}
|
282 |
-
table.s1-checks-area td.title {font-size:16px; width:100%}
|
283 |
-
table.s1-checks-area td.title small {font-size:11px; font-weight:normal}
|
284 |
-
table.s1-checks-area td.toggle {font-size:11px; margin-right:7px; font-weight:normal}
|
285 |
-
|
286 |
-
div.s1-reqs {background-color:#efefef; border:1px solid silver; border-radius:2px; padding-bottom:4px}
|
287 |
-
div.s1-reqs div.header {background-color:#E0E0E0; color:#000; border-bottom: 1px solid silver; padding:2px; font-weight:bold }
|
288 |
-
div.s1-reqs div.status {float:right; border-radius:2px; color:#fff; padding:0 3px 0 3px; margin:4px 5px 0 0; font-size:11px; min-width:30px; text-align:center;}
|
289 |
-
div.s1-reqs div.pass {background-color:green;}
|
290 |
-
div.s1-reqs div.fail {background-color:maroon;}
|
291 |
-
div.s1-reqs div.title {padding:3px 3px 3px 5px; font-size:13px;}
|
292 |
-
div.s1-reqs div.title:hover {background-color:#dfdfdf; cursor:pointer}
|
293 |
-
div.s1-reqs div.info {padding:8px 8px 20px 8px; background-color:#fff; display:none; line-height:18px; font-size: 12px}
|
294 |
-
div.s1-reqs div.info a {color:#485AA3;}
|
295 |
-
#archive_engine, #archive_action_input {width:90%; cursor:pointer}
|
296 |
-
|
297 |
-
.info > *:first-child {
|
298 |
-
margin-top: 0;
|
299 |
}
|
300 |
|
301 |
-
.
|
302 |
-
|
|
|
|
|
|
|
|
|
|
|
303 |
}
|
304 |
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
.
|
310 |
-
|
311 |
-
width: 17px;
|
312 |
}
|
313 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
314 |
/* ============================
|
315 |
-
STEP
|
316 |
-
============================
|
317 |
-
div.s2-opts label {cursor:pointer}
|
318 |
-
textarea#debug-dbtest-json {width:98%; height:200px}
|
319 |
-
div.php-chuncking-warning {font-style:italic; font-size:11px; color:maroon; white-space:normal; line-height:16px; padding-left:20px}
|
320 |
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
div.s2-btngrp input[type=button]:last-child {border-radius:0 5px 5px 0; margin-left:-4px}
|
326 |
-
div.s2-btngrp input[type=button].active {background-color:#13659C; color:#fff;}
|
327 |
-
div.s2-btngrp input[type=button].in-active {background-color:#E4E4E4; }
|
328 |
-
div.s2-btngrp input[type=button]:hover {border:1px solid #999}
|
329 |
|
330 |
-
|
331 |
-
|
332 |
-
div#s2-dbrefresh-basic {float:right; font-size:12px; display:none; font-weight:bold; margin:5px 5px 1px 0}
|
333 |
-
div#s2-db-basic-overwrite div.warn-text {
|
334 |
-
padding:5px 0 5px 0;
|
335 |
}
|
336 |
-
|
337 |
-
|
338 |
-
|
|
|
|
|
339 |
}
|
340 |
-
|
341 |
-
|
342 |
-
|
|
|
|
|
|
|
343 |
}
|
344 |
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
div.s2-cpanel-off {padding:15px; color:#fff; text-align:center; margin:15px 5px 15px 5px; border:1px solid silver; border-radius:2px; background-color:#b54949; font-size:14px; line-height:22px}
|
352 |
-
div.s2-cpnl-panel-no-support {text-align:center; font-size:18px; font-weight:bold; line-height:30px; margin-top:40px}
|
353 |
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
div.s2-dbtest-area div.success-msg {color:green}
|
362 |
-
div.s2-dbtest-area pre {font-family:Verdana,Arial,sans-serif; font-size:13px; margin:0; white-space:normal;}
|
363 |
-
|
364 |
-
div.s2-reqs-hdr {border-radius:2px 2px 0 0; border-bottom:none}
|
365 |
-
div.s2-notices-hdr {border-radius:0; border-bottom:1px solid #D3D3D3; }
|
366 |
-
div#s2-reqs-all {display:none}
|
367 |
-
div#s2-notices-all {display:none}
|
368 |
-
|
369 |
-
div.s2-reqs {background-color:#efefef; border:1px solid #D3D3D3; border-top:none}
|
370 |
-
div.s2-reqs div.status {float:right; border-radius:2px; color:#fff; padding:0 4px 0 4px; margin:4px 7px 0 0; font-size:12px; min-width:30px; text-align:center;}
|
371 |
-
div.s2-reqs div.title {padding:3px 8px 3px 20px; font-size:13px; background-color:#f1f1f1; border-top: 1px solid #D3D3D3;}
|
372 |
-
div.s2-reqs div.title:hover {background-color:#dfdfdf; cursor:pointer}
|
373 |
-
div.s2-reqs div.info {padding:4px 12px 15px 12px;; background-color:#fff; display:none; line-height:18px; font-size: 12px}
|
374 |
-
div.s2-reqs div.info a {color:#485AA3;}
|
375 |
-
div.s2-reqs div.info ul {padding-left:25px}
|
376 |
-
div.s2-reqs div.info ul li {padding:2px}
|
377 |
-
div.s2-reqs div.info ul.vids {list-style-type: none;}
|
378 |
-
div.s2-reqs div.sub-title{border-bottom: 1px solid #d3d3d3; font-weight:bold; margin:7px 0 3px 0}
|
379 |
-
|
380 |
-
div.s2-reqs10 table {margin-top:5px;}
|
381 |
-
div.s2-reqs10 table td {padding:1px;}
|
382 |
-
div.s2-reqs10 table td:first-child {font-weight:bold; padding-right:10px}
|
383 |
-
div.s2-reqs40 div.db-list {height:70px; width:95%; overflow-y:scroll; padding:2px 5px 5px 5px; border:1px solid #d3d3d3;}
|
384 |
-
div.s2-reqs60 div.tbl-list {padding:2px 5px 5px 5px; border:0 }
|
385 |
-
div.s2-reqs60 div.tbl-list b {display:inline-block; width:55px; }
|
386 |
-
|
387 |
-
div.s2-notice20 table.collation-list table {padding:2px;}
|
388 |
-
div.s2-notice20 table.collation-list td:first-child {font-weight:bold; padding-right:5px }
|
389 |
-
|
390 |
-
textarea[readonly] {background-color: #efefef;}
|
391 |
-
.copy-to-clipboard-block textarea {width: 100%; height: 100px;}
|
392 |
|
393 |
-
.
|
394 |
-
|
|
|
395 |
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
div#s2-tryagain {padding-top:50px; text-align:center; width:100%; font-size:16px; color:#444; font-weight:bold;}
|
401 |
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
table.s3-opts td:first-child{width:90px; font-weight: bold}
|
409 |
-
div#s3-adv-opts {margin-top:5px; }
|
410 |
-
div.s3-allnonelinks {font-size:11px; float:right;}
|
411 |
-
div.s3-manaual-msg {font-style: italic; margin:-2px 0 5px 0}
|
412 |
-
small.s3-warn {color:maroon; font-style:italic}
|
413 |
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
div.s4-final-msg {height:110px; border:1px solid #CDCDCD; padding:8px;font-size:12px; border-radius:2px;box-shadow:0 4px 2px -2px #777;}
|
418 |
-
div.s4-final-title {color:#BE2323; font-size:18px}
|
419 |
-
div.s4-connect {font-size:12px; text-align:center; font-style:italic; position:absolute; bottom:10px; padding:10px; width:100%; margin-top:20px}
|
420 |
-
table.s4-report-results,
|
421 |
-
table.s4-report-errs {border-collapse:collapse; box-shadow: 4px 8px 11px -8px rgba(0,0,0,0.41);}
|
422 |
-
table.s4-report-errs td {text-align:center; width:33%}
|
423 |
-
table.s4-report-results th, table.s4-report-errs th {background-color:#d0d0d0; padding:3px; font-size:14px;}
|
424 |
-
table.s4-report-results td, table.s4-report-errs td {padding:3px; white-space:nowrap; border:1px solid #dfdfdf; text-align:center; font-size:11px}
|
425 |
-
table.s4-report-results td:first-child {text-align:left; font-weight:bold; padding-left:3px}
|
426 |
-
div.s4-err-title {background-color:#dfdfdf; font-weight: bold; margin:-3px 0 15px 0; padding:5px; border-radius:2px; font-size:13px}
|
427 |
-
|
428 |
-
div.s4-err-msg {padding:8px; display:none; border:1px dashed #999; margin:10px 0 20px 0; border-radius:2px;}
|
429 |
-
div.s4-err-msg div.content{padding:5px; font-size:11px; line-height:17px; max-height:125px; overflow-y:scroll; border:1px solid silver; margin:3px; }
|
430 |
-
div.s4-err-msg div.info-error{padding:7px; background-color:#f9c9c9; border:1px solid silver; border-radius:2px; font-size:12px; line-height:16px }
|
431 |
-
div.s4-err-msg div.info-notice{padding:7px; background-color:#FCFEC5; border:1px solid silver; border-radius:2px; font-size:12px; line-height:16px;}
|
432 |
-
table.s4-final-step {width:100%;}
|
433 |
-
table.s4-final-step td {padding:5px 15px 5px 5px;font-size:13px; }
|
434 |
-
table.s4-final-step td:first-child {white-space:nowrap; width:165px}
|
435 |
-
div.s4-go-back {border-top:1px dotted #dfdfdf; margin:auto;font-size:11px; color:#333; padding-top:4px}
|
436 |
-
div.s4-go-back ul {line-height:18px}
|
437 |
-
button.s4-final-btns {cursor:pointer; color:#fff; font-size:16px; border-radius:5px; padding:7px; background-color:#13659C; border:1px solid gray; width:145px;}
|
438 |
-
button.s4-final-btns:hover {background-color: #dfdfdf;}
|
439 |
-
div.s4-gopro-btn {text-align:center; font-size:14px; margin:auto; width:200px; font-style: italic; font-weight:bold}
|
440 |
-
div.s4-gopro-btn a{color:green}
|
441 |
-
div.s4-warn {color:maroon;}
|
442 |
-
pre.s4-diff-viewer {line-height:11px}
|
443 |
-
div#s4-notice-reports div.section-content div.title {cursor:pointer}
|
444 |
|
445 |
-
|
446 |
-
STEP 5 HELP
|
447 |
-
============================ */
|
448 |
-
#body-help div#content {
|
449 |
width: 100%;
|
450 |
-
|
|
|
|
|
451 |
}
|
452 |
-
|
453 |
-
div.help-target a {float:right; font-size:16px; color:#13659C}
|
454 |
-
div#main-help sup {font-size:11px; font-weight:normal; font-style:italic; color:blue}
|
455 |
-
div.help-online {text-align:center; font-size:18px; padding:10px 0 0 0; line-height:24px}
|
456 |
-
div.help {color:#555; font-style:italic; font-size:11px; padding:4px; border-top:1px solid #dfdfdf}
|
457 |
-
div.help-page fieldset {margin-bottom:25px}
|
458 |
-
div#main-help {font-size:13px; line-height:17px}
|
459 |
-
div#main-help h3 {border-bottom:1px solid silver; padding:8px; margin:4px 0 8px 0; font-size:20px}
|
460 |
-
div#main-help span.step {color:#DB4B38}
|
461 |
-
.help-opt {width: 100%; border: none; border-collapse: collapse; margin:5px 0 0 0;}
|
462 |
.help-opt .col-opt {
|
463 |
width: 250px;
|
464 |
}
|
465 |
-
|
466 |
-
.help-opt td
|
467 |
-
|
468 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
469 |
|
470 |
#main-help section {
|
471 |
border: 1px solid silver;
|
472 |
margin-top: 28px;
|
473 |
-
border-radius:2px;
|
474 |
overflow: hidden;
|
475 |
}
|
476 |
|
477 |
#main-help section h2.header {
|
478 |
-
background-color
|
479 |
-
padding:15px;
|
480 |
-
margin:0;
|
481 |
-
font-size:20px;
|
482 |
}
|
483 |
|
484 |
#main-help section .content {
|
485 |
padding: 10px;
|
486 |
}
|
487 |
-
|
488 |
/* ============================
|
489 |
Expandable section
|
490 |
-
============================
|
|
|
491 |
.expandable.close .expand-header {
|
492 |
-
cursor:pointer;
|
493 |
}
|
494 |
|
495 |
.expandable.open .expand-header {
|
496 |
-
cursor:pointer;
|
497 |
}
|
498 |
|
499 |
.expandable .expand-header::before {
|
@@ -516,24 +1790,25 @@
|
|
516 |
.expandable.open .content {
|
517 |
display: block;
|
518 |
}
|
519 |
-
|
520 |
/* ============================
|
521 |
VIEW EXCEPTION
|
522 |
-
============================
|
|
|
523 |
.exception-trace {
|
524 |
overflow: auto;
|
525 |
border: 1px solid lightgray;
|
526 |
padding: 10px;
|
527 |
margin: 0;
|
528 |
}
|
529 |
-
|
530 |
-
|
531 |
/*!
|
532 |
* password indicator
|
533 |
*/
|
534 |
|
535 |
-
.top_testresult{
|
536 |
-
font-weight:bold;
|
|
|
|
|
|
|
537 |
position: absolute;
|
538 |
top: 0;
|
539 |
right: 30px;
|
@@ -545,34 +1820,44 @@
|
|
545 |
line-height: 30px;
|
546 |
}
|
547 |
|
548 |
-
|
549 |
.top_shortPass,
|
550 |
.top_badPass {
|
551 |
-
background
|
552 |
background: transparent linear-gradient(90deg, transparent 20%, #edabab);
|
553 |
-
display:block;
|
554 |
}
|
555 |
-
|
556 |
-
|
|
|
557 |
background: transparent linear-gradient(90deg, transparent 20%, #ffffe0);
|
558 |
-
display:block;
|
559 |
}
|
560 |
-
|
561 |
-
|
|
|
562 |
background: transparent linear-gradient(90deg, transparent 20%, #d3edab);
|
563 |
-
display:block;
|
564 |
}
|
565 |
-
|
566 |
/*================================================
|
567 |
LIB OVERIDES*/
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
572 |
}
|
573 |
-
ul.parsley-errors-list {margin:1px 0 0 -40px; list-style-type:none; font-size:10px}
|
574 |
-
.ui-widget {font-size:13px}
|
575 |
|
|
|
|
|
|
|
576 |
|
577 |
<?php if (DUPX_Log::isLevel(DUPX_Log::LV_DEBUG)): ?>
|
578 |
.dupx-debug {display:block; margin:0 0 25px 0; font-size:11px; background-color:#f5dbda; padding:8px; border:1px solid silver; border-radius:2px}
|
1 |
<?php defined('ABSPATH') || defined('DUPXABSPATH') || exit; ?>
|
2 |
<style>
|
3 |
+
/*******
|
4 |
+
HELPER CALSSES
|
5 |
+
*******/
|
|
|
|
|
6 |
|
7 |
+
.float-right {
|
8 |
+
float: right;
|
9 |
+
}
|
10 |
+
|
11 |
+
.float-left {
|
12 |
+
float: left;
|
13 |
+
}
|
14 |
+
|
15 |
+
.clearfix:before,
|
16 |
+
.clearfix:after {
|
17 |
+
content: " ";
|
18 |
+
/* 1 */
|
19 |
+
display: table;
|
20 |
+
/* 2 */
|
21 |
+
}
|
22 |
+
|
23 |
+
.clearfix:after {
|
24 |
+
clear: both;
|
25 |
+
}
|
26 |
+
|
27 |
+
.no-display {
|
28 |
+
display: none;
|
29 |
+
}
|
30 |
+
|
31 |
+
.transparent {
|
32 |
+
opacity: 0;
|
33 |
+
}
|
34 |
+
|
35 |
+
.monospace {
|
36 |
+
font-family: monospace;
|
37 |
+
}
|
38 |
+
|
39 |
+
.red {
|
40 |
+
color: #AF0000;
|
41 |
+
}
|
42 |
+
|
43 |
+
.orangered {
|
44 |
+
color: orangered;
|
45 |
+
}
|
46 |
+
|
47 |
+
.green {
|
48 |
+
color: #008000;
|
49 |
+
}
|
50 |
+
|
51 |
+
.maroon {
|
52 |
+
color: maroon;
|
53 |
+
}
|
54 |
+
|
55 |
+
.text-center {
|
56 |
+
text-align: center;
|
57 |
+
}
|
58 |
+
|
59 |
+
.text-right {
|
60 |
+
text-align: right;
|
61 |
+
}
|
62 |
+
|
63 |
+
.display-inline {
|
64 |
+
display: inline;
|
65 |
+
}
|
66 |
+
|
67 |
+
.display-inline-block {
|
68 |
+
display: inline-block;
|
69 |
+
}
|
70 |
+
|
71 |
+
.display-block {
|
72 |
+
display: block;
|
73 |
+
}
|
74 |
+
|
75 |
+
.margin-top-0 {
|
76 |
+
margin-top: 0;
|
77 |
+
}
|
78 |
+
|
79 |
+
.margin-top-1 {
|
80 |
+
margin-top: 20px;
|
81 |
+
}
|
82 |
+
|
83 |
+
.margin-top-2 {
|
84 |
+
margin-top: 40px;
|
85 |
+
}
|
86 |
+
|
87 |
+
.margin-top-3 {
|
88 |
+
margin-top: 60px;
|
89 |
+
}
|
90 |
+
|
91 |
+
.margin-top-4 {
|
92 |
+
margin-top: 80px;
|
93 |
+
}
|
94 |
+
|
95 |
+
.margin-bottom-0 {
|
96 |
+
margin-bottom: 0;
|
97 |
+
}
|
98 |
+
|
99 |
+
.margin-bottom-1 {
|
100 |
+
margin-bottom: 20px;
|
101 |
+
}
|
102 |
+
|
103 |
+
.margin-bottom-2 {
|
104 |
+
margin-bottom: 40px;
|
105 |
+
}
|
106 |
+
|
107 |
+
.margin-bottom-3 {
|
108 |
+
margin-bottom: 60px;
|
109 |
+
}
|
110 |
+
|
111 |
+
.margin-bottom-4 {
|
112 |
+
margin-bottom: 80px;
|
113 |
+
}
|
114 |
+
|
115 |
+
.margin-left-0 {
|
116 |
+
margin-left: 0;
|
117 |
+
}
|
118 |
+
|
119 |
+
.margin-left-1 {
|
120 |
+
margin-left: 20px;
|
121 |
+
}
|
122 |
+
|
123 |
+
.margin-left-2 {
|
124 |
+
margin-left: 40px;
|
125 |
+
}
|
126 |
+
|
127 |
+
.margin-right-0 {
|
128 |
+
margin-right: 0;
|
129 |
+
}
|
130 |
+
|
131 |
+
.margin-left-1 {
|
132 |
+
margin-right: 20px;
|
133 |
+
}
|
134 |
+
|
135 |
+
.margin-left-2 {
|
136 |
+
margin-right: 40px;
|
137 |
+
}
|
138 |
+
|
139 |
+
body {
|
140 |
+
font-family: Verdana, Arial, sans-serif;
|
141 |
+
font-size: 13px
|
142 |
+
}
|
143 |
+
|
144 |
+
fieldset {
|
145 |
+
border: 1px solid silver;
|
146 |
+
border-radius: 3px;
|
147 |
+
padding: 10px
|
148 |
+
}
|
149 |
+
|
150 |
+
h3 {
|
151 |
+
margin: 1px;
|
152 |
+
padding: 1px;
|
153 |
+
font-size: 13px;
|
154 |
+
}
|
155 |
+
|
156 |
+
a {
|
157 |
+
color: #222
|
158 |
+
}
|
159 |
+
|
160 |
+
a:hover {
|
161 |
+
color: gray
|
162 |
+
}
|
163 |
+
|
164 |
+
input:not([type=checkbox]):not([type=radio]):not([type=button]),
|
165 |
+
select {
|
166 |
width: 100%;
|
167 |
border-radius: 2px;
|
168 |
border: 1px solid silver;
|
169 |
padding: 4px;
|
170 |
padding-left: 4px;
|
171 |
+
font-family: Verdana, Arial, sans-serif;
|
172 |
line-height: 20px;
|
173 |
height: 30px;
|
174 |
box-sizing: border-box;
|
177 |
border-radius: 4px;
|
178 |
}
|
179 |
|
180 |
+
input[readonly]:not([type="checkbox"]):not([type="radio"]):not([type="button"]),
|
181 |
+
select[readonly],
|
182 |
+
select[readonly] option {
|
183 |
+
background-color: darkgray;
|
184 |
+
color: white;
|
185 |
+
cursor: not-allowed;
|
186 |
+
}
|
187 |
+
|
188 |
+
input:not([type=checkbox]):not([type=radio]):not([type=button]):disabled,
|
189 |
+
select:disabled,
|
190 |
+
select option:disabled,
|
191 |
+
select:disabled option,
|
192 |
+
select:disabled option:focus,
|
193 |
+
select:disabled option:active,
|
194 |
+
select:disabled option:checked {
|
195 |
+
background: #EBEBE4;
|
196 |
+
color: #ccc;
|
197 |
+
cursor: not-allowed;
|
198 |
+
}
|
199 |
+
|
200 |
+
select:disabled,
|
201 |
+
select option:disabled,
|
202 |
+
select:disabled option,
|
203 |
+
select:disabled option:focus,
|
204 |
+
select:disabled option:active,
|
205 |
+
select:disabled option:checked {
|
206 |
+
text-decoration: line-through;
|
207 |
+
}
|
208 |
+
|
209 |
+
select[size] {
|
210 |
+
height: auto;
|
211 |
+
line-height: 25px;
|
212 |
+
}
|
213 |
+
|
214 |
+
select,
|
215 |
+
option {
|
216 |
+
color: black;
|
217 |
+
}
|
218 |
+
|
219 |
+
select {
|
220 |
+
padding-left: 0;
|
221 |
+
}
|
222 |
+
|
223 |
+
select option {
|
224 |
+
padding: 2px 5px;
|
225 |
+
}
|
226 |
+
|
227 |
+
select option:disabled {
|
228 |
+
text-decoration: line-through;
|
229 |
+
cursor: not-allowed;
|
230 |
+
color: #A9A9A9;
|
231 |
+
}
|
232 |
+
|
233 |
+
select:disabled {
|
234 |
+
background: #EBEBE4
|
235 |
+
}
|
236 |
+
|
237 |
+
input.readonly {
|
238 |
+
background-color: #efefef;
|
239 |
+
}
|
240 |
+
/* ============================
|
241 |
+
COMMON VIEWS
|
242 |
+
============================ */
|
243 |
+
|
244 |
+
div#content {
|
245 |
+
border: 1px solid #CDCDCD;
|
246 |
+
width: 850px;
|
247 |
+
min-height: 550px;
|
248 |
+
margin: auto;
|
249 |
+
margin-top: 18px;
|
250 |
+
border-radius: 2px;
|
251 |
+
box-shadow: 0 8px 6px -6px #999;
|
252 |
+
font-size: 13px
|
253 |
+
}
|
254 |
+
|
255 |
+
div#content-inner {
|
256 |
+
padding: 10px 25px;
|
257 |
+
min-height: 550px
|
258 |
+
}
|
259 |
+
|
260 |
+
form.content-form {
|
261 |
+
min-height: 550px;
|
262 |
+
position: relative;
|
263 |
+
line-height: 17px
|
264 |
+
}
|
265 |
+
|
266 |
+
div.logfile-link {
|
267 |
+
float: right;
|
268 |
+
font-weight: normal;
|
269 |
+
font-size: 11px;
|
270 |
+
font-style: italic
|
271 |
+
}
|
272 |
+
|
273 |
+
span.sub-notes {
|
274 |
+
font-size: 10px;
|
275 |
+
}
|
276 |
+
/* Header */
|
277 |
+
|
278 |
+
table.header-wizard {
|
279 |
+
width: 100%;
|
280 |
+
box-shadow: 0 5px 3px -3px #999;
|
281 |
+
background-color: #F1F1F1;
|
282 |
+
font-weight: bold
|
283 |
+
}
|
284 |
+
|
285 |
+
div.dupx-logfile-link {
|
286 |
+
float: right;
|
287 |
+
font-weight: normal;
|
288 |
+
font-style: italic;
|
289 |
+
font-size: 11px;
|
290 |
+
cursor: pointer
|
291 |
+
}
|
292 |
+
|
293 |
+
.wiz-dupx-version {
|
294 |
+
white-space: nowrap;
|
295 |
+
color: #777;
|
296 |
+
font-size: 11px;
|
297 |
+
font-style: italic;
|
298 |
+
text-align: right;
|
299 |
+
padding: 3px 15px 5px 0;
|
300 |
+
line-height: 14px;
|
301 |
+
font-weight: normal
|
302 |
+
}
|
303 |
+
|
304 |
+
.wiz-dupx-version a {
|
305 |
+
color: #777;
|
306 |
+
}
|
307 |
+
|
308 |
+
div.dupx-debug-hdr {
|
309 |
+
padding: 5px 0 5px 0;
|
310 |
+
font-size: 16px;
|
311 |
+
font-weight: bold
|
312 |
+
}
|
313 |
+
|
314 |
+
div.dupx-branding-header {
|
315 |
+
font-size: 26px;
|
316 |
+
padding: 10px 0 7px 15px;
|
317 |
+
}
|
318 |
+
|
319 |
+
.dupx-overwrite {
|
320 |
+
color: #AF0000;
|
321 |
+
}
|
322 |
+
|
323 |
+
.dupx-pass {
|
324 |
+
display: inline-block;
|
325 |
+
color: green;
|
326 |
+
}
|
327 |
+
|
328 |
+
.dupx-fail {
|
329 |
+
display: inline-block;
|
330 |
+
color: #AF0000;
|
331 |
+
}
|
332 |
+
|
333 |
+
.dupx-warn {
|
334 |
+
display: inline-block;
|
335 |
+
color: #555;
|
336 |
+
}
|
337 |
+
|
338 |
+
.dupx-notice {
|
339 |
+
display: inline-block;
|
340 |
+
color: #000;
|
341 |
+
}
|
342 |
+
|
343 |
+
i[data-tooltip].fa-question-circle {
|
344 |
+
cursor: pointer;
|
345 |
+
color: #C3C3C3
|
346 |
+
}
|
347 |
+
|
348 |
+
div.status-badge-pass {
|
349 |
+
background-color: #418446;
|
350 |
+
}
|
351 |
+
|
352 |
+
div.status-badge-fail {
|
353 |
+
background-color: maroon;
|
354 |
+
}
|
355 |
+
|
356 |
+
div.status-badge-warn {
|
357 |
+
background-color: #555;
|
358 |
+
}
|
359 |
+
|
360 |
+
div.status-badge-pass,
|
361 |
+
div.status-badge-fail,
|
362 |
+
div.status-badge-warn {
|
363 |
+
float: right;
|
364 |
+
border-radius: 4px;
|
365 |
+
color: #fff;
|
366 |
+
padding: 0 3px 0 3px;
|
367 |
+
font-size: 11px !important;
|
368 |
+
min-width: 30px;
|
369 |
+
text-align: center;
|
370 |
+
font-weight: normal;
|
371 |
+
}
|
372 |
+
|
373 |
+
button.default-btn,
|
374 |
+
.default-btn,
|
375 |
+
.default-btn:hover {
|
376 |
+
cursor: pointer;
|
377 |
+
color: #fff;
|
378 |
+
font-size: 16px;
|
379 |
+
border-radius: 5px;
|
380 |
+
padding: 7px 25px 5px 25px;
|
381 |
+
background-color: #13659C;
|
382 |
+
border: 1px solid gray;
|
383 |
+
text-decoration: none;
|
384 |
+
}
|
385 |
+
|
386 |
+
button.disabled,
|
387 |
+
input.disabled {
|
388 |
+
background-color: #F4F4F4;
|
389 |
+
color: silver;
|
390 |
+
border: 1px solid silver;
|
391 |
+
}
|
392 |
+
|
393 |
+
div.log-ui-error {
|
394 |
+
padding-top: 2px;
|
395 |
+
font-size: 13px
|
396 |
+
}
|
397 |
+
|
398 |
+
div#progress-area {
|
399 |
+
padding: 5px;
|
400 |
+
margin: 150px 0 0 0;
|
401 |
+
text-align: center;
|
402 |
+
}
|
403 |
+
|
404 |
+
div#ajaxerr-data {
|
405 |
+
padding: 6px;
|
406 |
+
height: 425px;
|
407 |
+
width: 99%;
|
408 |
+
border: 1px solid silver;
|
409 |
+
border-radius: 2px;
|
410 |
+
background-color: #F1F1F1;
|
411 |
+
font-size: 13px;
|
412 |
+
overflow-y: scroll;
|
413 |
+
line-height: 20px
|
414 |
+
}
|
415 |
+
|
416 |
+
div.hdr-main {
|
417 |
+
font-size: 22px;
|
418 |
+
padding: 0 0 5px 0;
|
419 |
+
border-bottom: 1px solid #D3D3D3;
|
420 |
+
font-weight: bold;
|
421 |
+
margin: 15px 0 20px 0;
|
422 |
+
}
|
423 |
+
|
424 |
+
div.hdr-main span.step {
|
425 |
+
color: #DB4B38
|
426 |
+
}
|
427 |
+
|
428 |
+
div.sub-header {
|
429 |
+
font-size: 11px;
|
430 |
+
font-style: italic;
|
431 |
+
font-weight: normal;
|
432 |
+
margin: 5px 0 -1px 0
|
433 |
+
}
|
434 |
+
|
435 |
+
div.hdr-sub1 {
|
436 |
+
font-size: 18px;
|
437 |
+
margin-bottom: 5px;
|
438 |
+
border: 1px solid #D3D3D3;
|
439 |
+
padding: 7px;
|
440 |
+
background-color: #f9f9f9;
|
441 |
+
font-weight: bold;
|
442 |
+
border-radius: 2px
|
443 |
+
}
|
444 |
+
|
445 |
+
div.hdr-sub1 a {
|
446 |
+
cursor: pointer;
|
447 |
+
text-decoration: none !important
|
448 |
+
}
|
449 |
+
|
450 |
+
div.hdr-sub1 i.fa {
|
451 |
+
font-size: 15px;
|
452 |
+
display: inline-block;
|
453 |
+
margin: 2px 5px 0 0;
|
454 |
+
vertical-align: top
|
455 |
+
}
|
456 |
+
|
457 |
+
div.hdr-sub1-area {
|
458 |
+
padding: 5px
|
459 |
+
}
|
460 |
+
|
461 |
+
div.hdr-sub2 {
|
462 |
+
font-size: 15px;
|
463 |
+
padding: 2px 2px 2px 0;
|
464 |
+
font-weight: bold;
|
465 |
+
margin-bottom: 5px;
|
466 |
+
border: none
|
467 |
+
}
|
468 |
+
|
469 |
+
div.hdr-sub3 {
|
470 |
+
font-size: 15px;
|
471 |
+
padding: 2px 2px 2px 0;
|
472 |
+
border-bottom: 1px solid #D3D3D3;
|
473 |
+
font-weight: bold;
|
474 |
+
margin-bottom: 5px;
|
475 |
+
}
|
476 |
+
|
477 |
+
div.hdr-sub4 {
|
478 |
+
font-size: 15px;
|
479 |
+
padding: 7px;
|
480 |
+
border: 1px solid #D3D3D3;
|
481 |
+
;
|
482 |
+
font-weight: bold;
|
483 |
+
background-color: #e9e9e9;
|
484 |
+
}
|
485 |
+
|
486 |
+
div.hdr-sub4:hover {
|
487 |
+
background-color: #dfdfdf;
|
488 |
+
cursor: pointer
|
489 |
+
}
|
490 |
+
|
491 |
+
div.toggle-hdr:hover {
|
492 |
+
cursor: pointer;
|
493 |
+
background-color: #f1f1f1;
|
494 |
+
border: 1px solid #dcdcdc;
|
495 |
+
}
|
496 |
+
|
497 |
+
div.toggle-hdr:hover a {
|
498 |
+
color: #000
|
499 |
+
}
|
500 |
+
|
501 |
+
[data-type="toggle"]>i.fa,
|
502 |
+
i.fa.fa-toggle-empty {
|
503 |
+
min-width: 8px;
|
504 |
+
}
|
505 |
+
|
506 |
+
div#s1-area-archive-file .ui-widget-header {
|
507 |
+
border: none;
|
508 |
+
border-bottom: 1px solid #D3D3D3 !important;
|
509 |
+
background: #fff
|
510 |
+
}
|
511 |
+
/* ============================
|
512 |
+
NOTICES
|
513 |
+
============================ */
|
514 |
+
/* step messages */
|
515 |
+
|
516 |
+
#step-messages {
|
517 |
+
padding: 10px 25px 0;
|
518 |
+
}
|
519 |
+
|
520 |
+
.notice {
|
521 |
+
background: #fff;
|
522 |
+
border: 1px solid #dfdfdf;
|
523 |
+
border-left: 4px solid #fff;
|
524 |
+
margin: 4px;
|
525 |
+
padding: 5px;
|
526 |
+
border-radius: 2px;
|
527 |
+
font-size: 12px;
|
528 |
+
}
|
529 |
+
|
530 |
+
.notice-report {
|
531 |
+
border-left: 4px solid #fff;
|
532 |
+
padding-left: 0;
|
533 |
+
padding-right: 0;
|
534 |
+
margin-bottom: 4px;
|
535 |
+
}
|
536 |
+
|
537 |
+
.next-step .title-separator {
|
538 |
+
margin-top: 5px;
|
539 |
+
padding-top: 5px;
|
540 |
+
border-top: 1px solid lightgray;
|
541 |
+
}
|
542 |
+
|
543 |
+
.notice .info pre {
|
544 |
+
margin: 0;
|
545 |
+
padding: 0;
|
546 |
+
overflow: auto;
|
547 |
+
}
|
548 |
+
|
549 |
+
.notice-report .title {
|
550 |
+
padding: 0 10px;
|
551 |
+
}
|
552 |
+
|
553 |
+
.notice-report .info {
|
554 |
+
border-top: 1px solid #dedede;
|
555 |
+
padding: 10px;
|
556 |
+
font-size: 10px;
|
557 |
+
background: #FAFAFA;
|
558 |
+
word-wrap: break-word;
|
559 |
+
}
|
560 |
+
|
561 |
+
.notice.l-info,
|
562 |
+
.notice.l-notice {
|
563 |
+
border-left-color: #197b19;
|
564 |
+
}
|
565 |
+
|
566 |
+
.notice.l-swarning {
|
567 |
+
border-left-color: #636363;
|
568 |
+
}
|
569 |
+
|
570 |
+
.notice.l-hwarning {
|
571 |
+
border-left-color: #636363;
|
572 |
+
}
|
573 |
+
|
574 |
+
.notice.l-critical {
|
575 |
+
border-left-color: maroon;
|
576 |
+
}
|
577 |
+
|
578 |
+
.notice.l-fatal {
|
579 |
+
border-left-color: #000000;
|
580 |
+
}
|
581 |
+
|
582 |
+
.report-sections-list .section {
|
583 |
+
border: 1px solid #DFDFDF;
|
584 |
+
margin-bottom: 25px;
|
585 |
+
box-shadow: 4px 8px 11px -8px rgba(0, 0, 0, 0.41);
|
586 |
+
}
|
587 |
+
|
588 |
+
.report-sections-list .section>.section-title {
|
589 |
+
background-color: #efefef;
|
590 |
+
padding: 3px;
|
591 |
+
font-weight: bold;
|
592 |
+
text-align: center;
|
593 |
+
font-size: 14px;
|
594 |
+
}
|
595 |
+
|
596 |
+
.report-sections-list .section>.section-content {
|
597 |
+
padding: 5px;
|
598 |
+
}
|
599 |
+
|
600 |
+
.notice-level-status {
|
601 |
+
border-radius: 2px;
|
602 |
+
padding: 2px;
|
603 |
+
margin: 1px;
|
604 |
+
font-size: 10px;
|
605 |
+
display: inline-block;
|
606 |
+
color: #FFF;
|
607 |
+
font-weight: bold;
|
608 |
+
min-width: 55px;
|
609 |
+
}
|
610 |
+
|
611 |
+
.notice-level-status.l-info,
|
612 |
+
.notice-level-status.l-notice {
|
613 |
+
background: #197b19;
|
614 |
+
}
|
615 |
+
|
616 |
+
.notice-level-status.l-swarning {
|
617 |
+
background: #636363;
|
618 |
+
}
|
619 |
+
|
620 |
+
.notice-level-status.l-hwarning {
|
621 |
+
background: #636363;
|
622 |
+
}
|
623 |
+
|
624 |
+
.notice-level-status.l-critical {
|
625 |
+
background: maroon;
|
626 |
+
}
|
627 |
+
|
628 |
+
.notice-level-status.l-fatal {
|
629 |
+
background: #000000;
|
630 |
+
}
|
631 |
+
|
632 |
+
.gray-panel {
|
633 |
+
border: 1px solid silver;
|
634 |
+
margin: 5px 0;
|
635 |
+
padding: 10px;
|
636 |
+
background: #f9f9f9;
|
637 |
+
border-radius: 2px
|
638 |
+
}
|
639 |
+
|
640 |
+
.gray-panel.warn-text,
|
641 |
+
.gray-panel .warn-text {
|
642 |
+
font-size: 12px;
|
643 |
+
color: maroon
|
644 |
+
}
|
645 |
+
|
646 |
+
.gray-panel-overwrite {
|
647 |
+
font-size: 14px !important;
|
648 |
+
line-height: 25px;
|
649 |
+
}
|
650 |
+
/*Adv Opts */
|
651 |
+
|
652 |
+
table.dupx-opts {
|
653 |
+
width: 100%;
|
654 |
+
border: 0px;
|
655 |
+
}
|
656 |
+
|
657 |
+
table.dupx-opts td {
|
658 |
+
padding: 3px;
|
659 |
+
}
|
660 |
+
|
661 |
+
table.dupx-opts td:first-child {
|
662 |
+
width: 125px;
|
663 |
+
font-weight: bold
|
664 |
+
}
|
665 |
+
|
666 |
+
table.dupx-advopts td:first-child {
|
667 |
+
width: 125px;
|
668 |
+
}
|
669 |
+
|
670 |
+
table.dupx-advopts label.radio {
|
671 |
+
width: 50px;
|
672 |
+
display: inline-block
|
673 |
+
}
|
674 |
+
|
675 |
+
table.dupx-advopts label {
|
676 |
+
white-space: nowrap;
|
677 |
+
cursor: pointer
|
678 |
+
}
|
679 |
+
|
680 |
+
table.dupx-advopts-space {
|
681 |
+
line-height: 24px
|
682 |
+
}
|
683 |
+
|
684 |
+
div.error-pane {
|
685 |
+
border: 1px solid #efefef;
|
686 |
+
border-left: 4px solid #D54E21;
|
687 |
+
padding: 0 0 0 10px;
|
688 |
+
margin: 2px 0 10px 0
|
689 |
+
}
|
690 |
+
|
691 |
+
div.dupx-ui-error {
|
692 |
+
padding-top: 2px;
|
693 |
+
font-size: 13px;
|
694 |
+
line-height: 20px
|
695 |
+
}
|
696 |
+
|
697 |
+
div.footer-buttons {
|
698 |
+
position: absolute;
|
699 |
+
bottom: 10px;
|
700 |
+
padding: 10px;
|
701 |
+
right: 0;
|
702 |
+
width: 100%;
|
703 |
+
text-align: right
|
704 |
+
}
|
705 |
+
|
706 |
+
div.footer-buttons input:hover,
|
707 |
+
button:hover {
|
708 |
+
border: 1px solid #000
|
709 |
+
}
|
710 |
+
|
711 |
+
div.footer-buttons input[disabled=disabled],
|
712 |
+
button[disabled=disabled] {
|
713 |
+
background-color: #F4F4F4;
|
714 |
+
color: silver;
|
715 |
+
border: 1px solid silver;
|
716 |
+
}
|
717 |
+
|
718 |
+
form#form-debug {
|
719 |
+
display: block;
|
720 |
+
margin: 10px auto;
|
721 |
+
width: 750px;
|
722 |
+
}
|
723 |
+
|
724 |
+
form#form-debug a {
|
725 |
+
display: inline-block;
|
726 |
+
}
|
727 |
+
|
728 |
+
form#form-debug pre {
|
729 |
+
margin-top: -2px;
|
730 |
+
display: none
|
731 |
+
}
|
732 |
+
/*Dialog Info */
|
733 |
+
|
734 |
+
div.dlg-serv-info {
|
735 |
+
line-height: 22px;
|
736 |
+
font-size: 12px
|
737 |
+
}
|
738 |
+
|
739 |
+
div.dlg-serv-info label {
|
740 |
+
display: inline-block;
|
741 |
+
width: 200px;
|
742 |
+
font-weight: bold
|
743 |
+
}
|
744 |
+
|
745 |
+
div.dlg-serv-info div.hdr {
|
746 |
+
font-weight: bold;
|
747 |
+
margin-top: 5px;
|
748 |
+
padding: 2px 5px 2px 0;
|
749 |
+
border-bottom: 1px solid #777;
|
750 |
+
font-size: 14px
|
751 |
+
}
|
752 |
+
|
753 |
+
div.dupx-modes {
|
754 |
+
color: #999;
|
755 |
+
font-weight: normal;
|
756 |
+
font-style: italic;
|
757 |
+
font-size: 11px;
|
758 |
+
padding: 5px 10px 0 0;
|
759 |
+
text-align: right
|
760 |
+
}
|
761 |
+
/* ============================
|
762 |
+
INIT 1:SECURE PASSWORD
|
763 |
+
============================ */
|
764 |
+
|
765 |
+
button.pass-toggle {
|
766 |
+
height: 26px;
|
767 |
+
width: 26px;
|
768 |
+
position: absolute;
|
769 |
+
top: 0px;
|
770 |
+
right: 0px;
|
771 |
+
border: 1px solid silver;
|
772 |
+
border-radius: 0 4px 4px 0;
|
773 |
+
padding: 2px 0 0 3px;
|
774 |
+
}
|
775 |
+
|
776 |
+
button.pass-toggle i {
|
777 |
+
padding: 0;
|
778 |
+
display: block;
|
779 |
+
margin: -4px 0 0 -5px
|
780 |
+
}
|
781 |
+
|
782 |
+
div.i1-pass-area {
|
783 |
+
width: 100%;
|
784 |
+
text-align: center;
|
785 |
+
max-width: 300px;
|
786 |
+
margin: auto;
|
787 |
+
position: relative;
|
788 |
+
}
|
789 |
+
|
790 |
+
div.i1-pass-data table {
|
791 |
+
width: 100%;
|
792 |
+
border-collapse: collapse;
|
793 |
+
padding: 0
|
794 |
+
}
|
795 |
+
|
796 |
+
div.i1-pass-data label {
|
797 |
+
display: block;
|
798 |
+
margin-bottom: 10px;
|
799 |
+
font-weight: bold;
|
800 |
+
}
|
801 |
+
|
802 |
+
div.i1-pass-errmsg {
|
803 |
+
color: maroon;
|
804 |
+
font-weight: bold
|
805 |
+
}
|
806 |
+
|
807 |
+
div#i1-pass-input {
|
808 |
+
position: relative;
|
809 |
+
margin: 2px 0 15px 0
|
810 |
+
}
|
811 |
+
|
812 |
+
input#secure-pass {
|
813 |
+
border-radius: 4px 0 0 4px;
|
814 |
+
width: 250px
|
815 |
+
}
|
816 |
+
|
817 |
+
#body-secure .param-wrapper {
|
818 |
+
display: flex;
|
819 |
+
}
|
820 |
+
|
821 |
+
#body-secure .param-wrapper > label {
|
822 |
+
min-width: 150px;
|
823 |
+
font-weight: bold;
|
824 |
+
line-height: 27px;
|
825 |
+
}
|
826 |
+
|
827 |
+
#body-secure .param-wrapper > *:nth-child(2) {
|
828 |
+
width: 100%;
|
829 |
+
}
|
830 |
+
|
831 |
+
.param-wrapper .sub-note {
|
832 |
+
display: block;
|
833 |
+
font-size: 11px;
|
834 |
+
margin-top:6px;
|
835 |
+
}
|
836 |
+
|
837 |
+
#body-secure .param-wrapper .sub-note {
|
838 |
+
text-align: right;
|
839 |
+
}
|
840 |
+
|
841 |
+
.box {
|
842 |
+
border: 1px solid silver;
|
843 |
+
padding: 10px;
|
844 |
+
background: #f9f9f9;
|
845 |
+
border-radius:2px;
|
846 |
+
}
|
847 |
+
|
848 |
+
.box *:first-child {
|
849 |
+
margin-top: 0;
|
850 |
+
}
|
851 |
+
|
852 |
+
.box *:last-child {
|
853 |
+
margin-bottom: 0;
|
854 |
+
}
|
855 |
+
|
856 |
+
.box.warning {
|
857 |
+
color: maroon;
|
858 |
+
border-color: maroon;
|
859 |
+
}
|
860 |
+
#pass-quick-help-info {
|
861 |
+
font-size:13px;
|
862 |
+
line-height:22px;
|
863 |
+
}
|
864 |
+
#pass-quick-help-info li {
|
865 |
+
padding:7px 0 7px 0
|
866 |
+
}
|
867 |
+
|
868 |
+
.pass-quick-help-note {
|
869 |
+
text-align:center;
|
870 |
+
font-size:11px;
|
871 |
+
font-style:italic;
|
872 |
+
}
|
873 |
+
|
874 |
+
/* ============================
|
875 |
+
STEP 1 VIEW
|
876 |
+
============================ */
|
877 |
+
|
878 |
+
div#s1-area-setup-type label {
|
879 |
+
cursor: pointer
|
880 |
+
}
|
881 |
+
|
882 |
+
div.s1-setup-type-sub {
|
883 |
+
padding: 5px 0 0 25px;
|
884 |
+
display: none
|
885 |
+
}
|
886 |
+
|
887 |
+
div#s1-area-archive-file .ui-widget.ui-widget-content {
|
888 |
+
border: 0px solid #d3d3d3
|
889 |
+
}
|
890 |
+
|
891 |
+
table.s1-archive-local {
|
892 |
+
width: 100%
|
893 |
+
}
|
894 |
+
|
895 |
+
table.s1-archive-local td {
|
896 |
+
padding: 4px 4px 4px 4px
|
897 |
+
}
|
898 |
+
|
899 |
+
table.s1-archive-local td:first-child {
|
900 |
+
font-weight: bold;
|
901 |
+
width: 55px
|
902 |
+
}
|
903 |
+
|
904 |
+
div.s1-archive-failed-msg {
|
905 |
+
padding: 15px;
|
906 |
+
border: 1px dashed maroon;
|
907 |
+
font-size: 12px;
|
908 |
+
border-radius: 2px;
|
909 |
+
}
|
910 |
+
|
911 |
+
div.s1-err-msg {
|
912 |
+
padding: 0 0 80px 0;
|
913 |
+
line-height: 20px
|
914 |
+
}
|
915 |
+
|
916 |
+
div.s1-err-msg i {
|
917 |
+
color: maroon
|
918 |
+
}
|
919 |
+
|
920 |
+
.maroon {
|
921 |
+
color: maroon
|
922 |
+
}
|
923 |
+
|
924 |
+
.green {
|
925 |
+
color: green
|
926 |
+
}
|
927 |
+
|
928 |
+
div#s1-area-sys-setup div.info-top {
|
929 |
+
text-align: center;
|
930 |
+
font-style: italic;
|
931 |
+
font-size: 11px;
|
932 |
+
padding: 0 5px 5px 5px
|
933 |
+
}
|
934 |
+
|
935 |
+
table.s1-checks-area {
|
936 |
+
width: 100%;
|
937 |
+
margin: 0;
|
938 |
+
padding: 0
|
939 |
+
}
|
940 |
+
|
941 |
+
table.s1-checks-area td.title {
|
942 |
+
font-size: 16px;
|
943 |
+
width: 100%
|
944 |
+
}
|
945 |
+
|
946 |
+
table.s1-checks-area td.title small {
|
947 |
+
font-size: 11px;
|
948 |
+
font-weight: normal
|
949 |
+
}
|
950 |
+
|
951 |
+
table.s1-checks-area td.toggle {
|
952 |
+
font-size: 11px;
|
953 |
+
margin-right: 7px;
|
954 |
+
font-weight: normal
|
955 |
+
}
|
956 |
+
|
957 |
+
div.s1-reqs {
|
958 |
+
background-color: #efefef;
|
959 |
+
border: 1px solid silver;
|
960 |
+
border-radius: 2px;
|
961 |
+
padding-bottom: 4px
|
962 |
+
}
|
963 |
+
|
964 |
+
div.s1-reqs div.header {
|
965 |
+
background-color: #E0E0E0;
|
966 |
+
color: #000;
|
967 |
+
border-bottom: 1px solid silver;
|
968 |
+
padding: 2px;
|
969 |
+
font-weight: bold
|
970 |
+
}
|
971 |
+
|
972 |
+
div.s1-reqs div.status {
|
973 |
+
float: right;
|
974 |
+
border-radius: 2px;
|
975 |
+
color: #fff;
|
976 |
+
padding: 0 3px 0 3px;
|
977 |
+
margin: 4px 5px 0 0;
|
978 |
+
font-size: 11px;
|
979 |
+
min-width: 30px;
|
980 |
+
text-align: center;
|
981 |
+
}
|
982 |
+
|
983 |
+
div.s1-reqs div.pass {
|
984 |
+
background-color: green;
|
985 |
+
}
|
986 |
+
|
987 |
+
div.s1-reqs div.fail {
|
988 |
+
background-color: maroon;
|
989 |
+
}
|
990 |
+
|
991 |
+
div.s1-reqs div.title {
|
992 |
+
padding: 3px 3px 3px 5px;
|
993 |
+
font-size: 13px;
|
994 |
+
}
|
995 |
+
|
996 |
+
div.s1-reqs div.title:hover {
|
997 |
+
background-color: #dfdfdf;
|
998 |
+
cursor: pointer
|
999 |
+
}
|
1000 |
+
|
1001 |
+
div.s1-reqs div.info {
|
1002 |
+
padding: 8px 8px 20px 8px;
|
1003 |
+
background-color: #fff;
|
1004 |
+
display: none;
|
1005 |
+
line-height: 18px;
|
1006 |
+
font-size: 12px
|
1007 |
+
}
|
1008 |
+
|
1009 |
+
div.s1-reqs div.info a {
|
1010 |
+
color: #485AA3;
|
1011 |
+
}
|
1012 |
+
|
1013 |
+
#archive_engine,
|
1014 |
+
#archive_action_input {
|
1015 |
+
width: 90%;
|
1016 |
+
cursor: pointer
|
1017 |
+
}
|
1018 |
+
|
1019 |
+
.info>*:first-child {
|
1020 |
+
margin-top: 0;
|
1021 |
+
}
|
1022 |
+
|
1023 |
+
.info>*:last-child {
|
1024 |
+
margin-bottom: 0;
|
1025 |
+
}
|
1026 |
+
/*Terms and Notices*/
|
1027 |
+
|
1028 |
+
div#s1-warning-check label {
|
1029 |
+
cursor: pointer;
|
1030 |
+
}
|
1031 |
+
|
1032 |
+
div#s1-warning-msg {
|
1033 |
+
padding: 5px;
|
1034 |
+
font-size: 12px;
|
1035 |
+
color: #333;
|
1036 |
+
line-height: 14px;
|
1037 |
+
font-style: italic;
|
1038 |
+
overflow-y: scroll;
|
1039 |
+
height: 460px;
|
1040 |
+
border: 1px solid #dfdfdf;
|
1041 |
+
background: #fff;
|
1042 |
+
border-radius: 2px
|
1043 |
+
}
|
1044 |
+
|
1045 |
+
div#s1-warning-check {
|
1046 |
+
padding: 3px;
|
1047 |
+
font-size: 14px;
|
1048 |
+
font-weight: normal;
|
1049 |
+
}
|
1050 |
+
|
1051 |
+
.s1-warning-check [type=checkbox] {
|
1052 |
+
height: 17px;
|
1053 |
+
width: 17px;
|
1054 |
+
}
|
1055 |
+
/* ============================
|
1056 |
+
STEP 2 VIEW
|
1057 |
+
============================ */
|
1058 |
+
|
1059 |
+
div.s2-opts label {
|
1060 |
+
cursor: pointer
|
1061 |
+
}
|
1062 |
+
|
1063 |
+
textarea#debug-dbtest-json {
|
1064 |
+
width: 98%;
|
1065 |
+
height: 200px
|
1066 |
+
}
|
1067 |
+
|
1068 |
+
div.php-chuncking-warning {
|
1069 |
+
font-style: italic;
|
1070 |
+
font-size: 11px;
|
1071 |
+
color: maroon;
|
1072 |
+
white-space: normal;
|
1073 |
+
line-height: 16px;
|
1074 |
+
padding-left: 20px
|
1075 |
+
}
|
1076 |
+
/*Toggle Buttons */
|
1077 |
+
|
1078 |
+
div.s2-btngrp {
|
1079 |
+
text-align: center;
|
1080 |
+
margin: 0 auto 10px auto
|
1081 |
+
}
|
1082 |
+
|
1083 |
+
div.s2-btngrp input[type=button] {
|
1084 |
+
font-size: 14px;
|
1085 |
+
padding: 6px;
|
1086 |
+
width: 120px;
|
1087 |
+
border: 1px solid silver;
|
1088 |
+
cursor: pointer
|
1089 |
+
}
|
1090 |
+
|
1091 |
+
div.s2-btngrp input[type=button]:first-child {
|
1092 |
+
border-radius: 5px 0 0 5px;
|
1093 |
+
margin-right: -2px
|
1094 |
+
}
|
1095 |
+
|
1096 |
+
div.s2-btngrp input[type=button]:last-child {
|
1097 |
+
border-radius: 0 5px 5px 0;
|
1098 |
+
margin-left: -4px
|
1099 |
+
}
|
1100 |
+
|
1101 |
+
div.s2-btngrp input[type=button].active {
|
1102 |
+
background-color: #13659C;
|
1103 |
+
color: #fff;
|
1104 |
+
}
|
1105 |
+
|
1106 |
+
div.s2-btngrp input[type=button].in-active {
|
1107 |
+
background-color: #E4E4E4;
|
1108 |
+
}
|
1109 |
+
|
1110 |
+
div.s2-btngrp input[type=button]:hover {
|
1111 |
+
border: 1px solid #999
|
1112 |
+
}
|
1113 |
+
/*Basic DB */
|
1114 |
+
|
1115 |
+
select#dbname-select {
|
1116 |
+
width: 100%;
|
1117 |
+
border-radius: 3px;
|
1118 |
+
height: 20px;
|
1119 |
+
font-size: 12px;
|
1120 |
+
border: 1px solid silver;
|
1121 |
+
}
|
1122 |
+
|
1123 |
+
div#s2-dbrefresh-basic {
|
1124 |
+
float: right;
|
1125 |
+
font-size: 12px;
|
1126 |
+
display: none;
|
1127 |
+
font-weight: bold;
|
1128 |
+
margin: 5px 5px 1px 0
|
1129 |
+
}
|
1130 |
+
|
1131 |
+
div#s2-db-basic-overwrite div.warn-text {
|
1132 |
+
padding: 5px 0 5px 0;
|
1133 |
+
}
|
1134 |
+
|
1135 |
+
div#s2-db-basic-overwrite div.btn-area {
|
1136 |
+
text-align: right;
|
1137 |
+
margin: 5px 0
|
1138 |
+
}
|
1139 |
+
|
1140 |
+
div.s2-db-basic-title {
|
1141 |
+
margin: 4px;
|
1142 |
+
padding: 2px 0 2px 0;
|
1143 |
+
font-weight: bold;
|
1144 |
+
border-bottom: 1px solid silver
|
1145 |
+
}
|
1146 |
+
|
1147 |
+
input.overwrite-btn {
|
1148 |
+
cursor: pointer;
|
1149 |
+
color: #fff;
|
1150 |
+
font-size: 13px;
|
1151 |
+
border-radius: 5px;
|
1152 |
+
padding: 5px 20px 4px 20px;
|
1153 |
+
background-color: #989898;
|
1154 |
+
border: 1px solid #777;
|
1155 |
+
}
|
1156 |
+
/*cPanel DB */
|
1157 |
+
|
1158 |
+
div.s2-cpnl-pane {
|
1159 |
+
margin-top: 5px
|
1160 |
+
}
|
1161 |
+
|
1162 |
+
div.s2-gopro {
|
1163 |
+
color: black;
|
1164 |
+
margin-top: 10px;
|
1165 |
+
padding: 0 20px 10px 20px;
|
1166 |
+
border: 1px solid silver;
|
1167 |
+
background-color: #F6F6F6;
|
1168 |
+
border-radius: 2px
|
1169 |
+
}
|
1170 |
+
|
1171 |
+
div.s2-gopro h2 {
|
1172 |
+
text-align: center;
|
1173 |
+
margin: 10px
|
1174 |
+
}
|
1175 |
+
|
1176 |
+
div.s2-gopro small {
|
1177 |
+
font-style: italic
|
1178 |
+
}
|
1179 |
+
|
1180 |
+
div.s2-cpanel-login {
|
1181 |
+
padding: 15px;
|
1182 |
+
color: #fff;
|
1183 |
+
text-align: center;
|
1184 |
+
margin: 15px 5px 15px 5px;
|
1185 |
+
border: 1px solid silver;
|
1186 |
+
border-radius: 2px;
|
1187 |
+
background-color: #13659C;
|
1188 |
+
font-size: 14px;
|
1189 |
+
line-height: 22px
|
1190 |
+
}
|
1191 |
+
|
1192 |
+
div.s2-cpanel-off {
|
1193 |
+
padding: 15px;
|
1194 |
+
color: #fff;
|
1195 |
+
text-align: center;
|
1196 |
+
margin: 15px 5px 15px 5px;
|
1197 |
+
border: 1px solid silver;
|
1198 |
+
border-radius: 2px;
|
1199 |
+
background-color: #b54949;
|
1200 |
+
font-size: 14px;
|
1201 |
+
line-height: 22px
|
1202 |
+
}
|
1203 |
+
|
1204 |
+
div.s2-cpnl-panel-no-support {
|
1205 |
+
text-align: center;
|
1206 |
+
font-size: 18px;
|
1207 |
+
font-weight: bold;
|
1208 |
+
line-height: 30px;
|
1209 |
+
margin-top: 40px
|
1210 |
+
}
|
1211 |
+
/*DATABASE CHECKS */
|
1212 |
+
|
1213 |
+
div.s2-dbtest-area {
|
1214 |
+
margin: auto;
|
1215 |
+
margin: 5px 0 15px 0;
|
1216 |
+
min-height: 110px
|
1217 |
+
}
|
1218 |
+
|
1219 |
+
div.s2-dbtest-area input[type=button] {
|
1220 |
+
font-size: 11px;
|
1221 |
+
height: 20px;
|
1222 |
+
border: 1px solid gray;
|
1223 |
+
border-radius: 3px;
|
1224 |
+
cursor: pointer
|
1225 |
+
}
|
1226 |
+
|
1227 |
+
div.s2-dbtest-area small.db-check {
|
1228 |
+
color: #000;
|
1229 |
+
text-align: center;
|
1230 |
+
padding: 3px;
|
1231 |
+
font-size: 11px;
|
1232 |
+
font-weight: normal
|
1233 |
+
}
|
1234 |
+
|
1235 |
+
div.s2-dbtest-area div.message {
|
1236 |
+
padding: 10px 10px 10px 10px;
|
1237 |
+
margin: 5px auto 5px auto;
|
1238 |
+
text-align: center;
|
1239 |
+
font-style: italic;
|
1240 |
+
font-size: 15px;
|
1241 |
+
line-height: 22px;
|
1242 |
+
width: 100%;
|
1243 |
+
}
|
1244 |
+
|
1245 |
+
div.s2-dbtest-area div.sub-message {
|
1246 |
+
padding: 5px;
|
1247 |
+
text-align: center;
|
1248 |
+
font-style: italic;
|
1249 |
+
color: maroon
|
1250 |
+
}
|
1251 |
+
|
1252 |
+
div.s2-dbtest-area div.error-msg {
|
1253 |
+
color: maroon
|
1254 |
+
}
|
1255 |
+
|
1256 |
+
div.s2-dbtest-area div.success-msg {
|
1257 |
+
color: green
|
1258 |
+
}
|
1259 |
+
|
1260 |
+
div.s2-dbtest-area pre {
|
1261 |
+
font-family: Verdana, Arial, sans-serif;
|
1262 |
+
font-size: 13px;
|
1263 |
+
margin: 0;
|
1264 |
+
white-space: normal;
|
1265 |
+
}
|
1266 |
+
|
1267 |
+
div.s2-reqs-hdr {
|
1268 |
+
border-radius: 2px 2px 0 0;
|
1269 |
+
border-bottom: none
|
1270 |
+
}
|
1271 |
+
|
1272 |
+
div.s2-notices-hdr {
|
1273 |
+
border-radius: 0;
|
1274 |
+
border-bottom: 1px solid #D3D3D3;
|
1275 |
+
}
|
1276 |
+
|
1277 |
+
div#s2-reqs-all {
|
1278 |
+
display: none
|
1279 |
+
}
|
1280 |
+
|
1281 |
+
div#s2-notices-all {
|
1282 |
+
display: none
|
1283 |
+
}
|
1284 |
+
|
1285 |
+
div.s2-reqs {
|
1286 |
+
background-color: #efefef;
|
1287 |
+
border: 1px solid #D3D3D3;
|
1288 |
+
border-top: none
|
1289 |
+
}
|
1290 |
+
|
1291 |
+
div.s2-reqs div.status {
|
1292 |
+
float: right;
|
1293 |
+
border-radius: 2px;
|
1294 |
+
color: #fff;
|
1295 |
+
padding: 0 4px 0 4px;
|
1296 |
+
margin: 4px 7px 0 0;
|
1297 |
+
font-size: 12px;
|
1298 |
+
min-width: 30px;
|
1299 |
+
text-align: center;
|
1300 |
+
}
|
1301 |
+
|
1302 |
+
div.s2-reqs div.title {
|
1303 |
+
padding: 3px 8px 3px 20px;
|
1304 |
+
font-size: 13px;
|
1305 |
+
background-color: #f1f1f1;
|
1306 |
+
border-top: 1px solid #D3D3D3;
|
1307 |
+
}
|
1308 |
+
|
1309 |
+
div.s2-reqs div.title:hover {
|
1310 |
+
background-color: #dfdfdf;
|
1311 |
+
cursor: pointer
|
1312 |
+
}
|
1313 |
+
|
1314 |
+
div.s2-reqs div.info {
|
1315 |
+
padding: 4px 12px 15px 12px;
|
1316 |
+
;
|
1317 |
+
background-color: #fff;
|
1318 |
+
display: none;
|
1319 |
+
line-height: 18px;
|
1320 |
+
font-size: 12px
|
1321 |
+
}
|
1322 |
+
|
1323 |
+
div.s2-reqs div.info a {
|
1324 |
+
color: #485AA3;
|
1325 |
+
}
|
1326 |
+
|
1327 |
+
div.s2-reqs div.info ul {
|
1328 |
+
padding-left: 25px
|
1329 |
+
}
|
1330 |
+
|
1331 |
+
div.s2-reqs div.info ul li {
|
1332 |
+
padding: 2px
|
1333 |
}
|
1334 |
|
1335 |
+
div.s2-reqs div.info ul.vids {
|
1336 |
+
list-style-type: none;
|
|
|
1337 |
}
|
1338 |
|
1339 |
+
div.s2-reqs div.sub-title {
|
1340 |
+
border-bottom: 1px solid #d3d3d3;
|
1341 |
+
font-weight: bold;
|
1342 |
+
margin: 7px 0 3px 0
|
1343 |
}
|
1344 |
+
|
1345 |
+
div.s2-reqs10 table {
|
1346 |
+
margin-top: 5px;
|
1347 |
}
|
1348 |
+
|
1349 |
+
div.s2-reqs10 table td {
|
1350 |
+
padding: 1px;
|
1351 |
}
|
1352 |
+
|
1353 |
+
div.s2-reqs10 table td:first-child {
|
1354 |
+
font-weight: bold;
|
1355 |
+
padding-right: 10px
|
1356 |
+
}
|
1357 |
+
|
1358 |
+
div.s2-reqs40 div.db-list {
|
1359 |
+
height: 70px;
|
1360 |
+
width: 95%;
|
1361 |
+
overflow-y: scroll;
|
1362 |
+
padding: 2px 5px 5px 5px;
|
1363 |
+
border: 1px solid #d3d3d3;
|
1364 |
}
|
1365 |
|
1366 |
+
div.s2-reqs60 div.tbl-list {
|
1367 |
+
padding: 2px 5px 5px 5px;
|
1368 |
+
border: 0
|
1369 |
+
}
|
1370 |
|
1371 |
+
div.s2-reqs60 div.tbl-list b {
|
1372 |
+
display: inline-block;
|
1373 |
+
width: 55px;
|
1374 |
+
}
|
|
|
|
|
|
|
|
|
1375 |
|
1376 |
+
div.s2-notice20 table.collation-list table {
|
1377 |
+
padding: 2px;
|
1378 |
+
}
|
1379 |
+
|
1380 |
+
div.s2-notice20 table.collation-list td:first-child {
|
1381 |
+
font-weight: bold;
|
1382 |
+
padding-right: 5px
|
1383 |
+
}
|
1384 |
+
|
1385 |
+
textarea[readonly] {
|
1386 |
+
background-color: #efefef;
|
1387 |
+
}
|
1388 |
+
|
1389 |
+
.copy-to-clipboard-block textarea {
|
1390 |
+
width: 100%;
|
1391 |
+
height: 100px;
|
1392 |
+
}
|
1393 |
+
|
1394 |
+
.copy-to-clipboard-block button,
|
1395 |
+
.copy-to-clipboard-block button:hover {
|
1396 |
+
font-size: 14px;
|
1397 |
+
padding: 5px 8px;
|
1398 |
+
margin-bottom: 15px;
|
1399 |
+
}
|
1400 |
+
/*Warning Area and Message */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1401 |
|
1402 |
+
div.s2-warning-emptydb {
|
1403 |
+
color: maroon;
|
1404 |
+
margin: 2px 0 0 0;
|
1405 |
+
font-size: 11px;
|
1406 |
+
display: none;
|
1407 |
+
white-space: normal;
|
1408 |
+
width: 550px
|
1409 |
+
}
|
1410 |
+
|
1411 |
+
div.s2-warning-manualdb {
|
1412 |
+
color: #1B67FF;
|
1413 |
+
margin: 2px 0 0 0;
|
1414 |
+
font-size: 11px;
|
1415 |
+
display: none;
|
1416 |
+
white-space: normal;
|
1417 |
+
width: 550px
|
1418 |
+
}
|
1419 |
+
|
1420 |
+
div.s2-warning-renamedb {
|
1421 |
+
color: #1B67FF;
|
1422 |
+
margin: 2px 0 0 0;
|
1423 |
+
font-size: 11px;
|
1424 |
+
display: none;
|
1425 |
+
white-space: normal;
|
1426 |
+
width: 550px
|
1427 |
+
}
|
1428 |
+
|
1429 |
+
div#s2-tryagain {
|
1430 |
+
padding-top: 50px;
|
1431 |
+
text-align: center;
|
1432 |
+
width: 100%;
|
1433 |
+
font-size: 16px;
|
1434 |
+
color: #444;
|
1435 |
+
font-weight: bold;
|
1436 |
+
}
|
1437 |
/* ============================
|
1438 |
+
STEP 3 VIEW
|
1439 |
============================ */
|
1440 |
+
|
1441 |
+
table.s3-opts {
|
1442 |
+
width: 96%;
|
1443 |
+
border: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
1444 |
}
|
1445 |
|
1446 |
+
table.s3-opts i.fa {
|
1447 |
+
font-size: 16px
|
|
|
|
|
|
|
1448 |
}
|
1449 |
|
1450 |
+
table.s3-opts td {
|
1451 |
+
white-space: nowrap;
|
1452 |
+
padding: 3px;
|
1453 |
+
}
|
1454 |
+
|
1455 |
+
table.s3-opts td:first-child {
|
1456 |
+
width: 90px;
|
1457 |
+
font-weight: bold
|
1458 |
+
}
|
1459 |
+
|
1460 |
+
div#s3-adv-opts {
|
1461 |
margin-top: 5px;
|
|
|
|
|
1462 |
}
|
1463 |
|
1464 |
+
div.s3-allnonelinks {
|
1465 |
+
font-size: 11px;
|
1466 |
+
float: right;
|
|
|
1467 |
}
|
1468 |
|
1469 |
+
div.s3-manaual-msg {
|
1470 |
+
font-style: italic;
|
1471 |
+
margin: -2px 0 5px 0
|
1472 |
}
|
1473 |
|
1474 |
+
small.s3-warn {
|
1475 |
+
color: maroon;
|
1476 |
+
font-style: italic
|
1477 |
+
}
|
1478 |
+
/* ============================
|
1479 |
+
STEP 4 VIEW
|
1480 |
+
============================ */
|
1481 |
+
|
1482 |
+
div.s4-final-msg {
|
1483 |
+
height: 110px;
|
1484 |
+
border: 1px solid #CDCDCD;
|
1485 |
+
padding: 8px;
|
1486 |
+
font-size: 12px;
|
1487 |
+
border-radius: 2px;
|
1488 |
+
box-shadow: 0 4px 2px -2px #777;
|
1489 |
+
}
|
1490 |
+
|
1491 |
+
div.s4-final-title {
|
1492 |
+
color: #BE2323;
|
1493 |
+
font-size: 18px
|
1494 |
+
}
|
1495 |
+
|
1496 |
+
div.s4-connect {
|
1497 |
+
font-size: 12px;
|
1498 |
+
text-align: center;
|
1499 |
+
font-style: italic;
|
1500 |
+
position: absolute;
|
1501 |
+
bottom: 10px;
|
1502 |
padding: 10px;
|
1503 |
+
width: 100%;
|
1504 |
+
margin-top: 20px
|
|
|
1505 |
}
|
1506 |
|
1507 |
+
table.s4-report-results,
|
1508 |
+
table.s4-report-errs {
|
1509 |
+
border-collapse: collapse;
|
1510 |
+
box-shadow: 4px 8px 11px -8px rgba(0, 0, 0, 0.41);
|
1511 |
+
}
|
|
|
1512 |
|
1513 |
+
table.s4-report-errs td {
|
1514 |
+
text-align: center;
|
1515 |
+
width: 33%
|
|
|
1516 |
}
|
1517 |
|
1518 |
+
table.s4-report-results th,
|
1519 |
+
table.s4-report-errs th {
|
1520 |
+
background-color: #d0d0d0;
|
1521 |
padding: 3px;
|
|
|
|
|
1522 |
font-size: 14px;
|
1523 |
}
|
1524 |
|
1525 |
+
table.s4-report-results td,
|
1526 |
+
table.s4-report-errs td {
|
1527 |
+
padding: 3px;
|
1528 |
+
white-space: nowrap;
|
1529 |
+
border: 1px solid #dfdfdf;
|
1530 |
+
text-align: center;
|
1531 |
+
font-size: 11px
|
1532 |
+
}
|
1533 |
+
|
1534 |
+
table.s4-report-results td:first-child {
|
1535 |
+
text-align: left;
|
1536 |
+
font-weight: bold;
|
1537 |
+
padding-left: 3px
|
1538 |
+
}
|
1539 |
+
|
1540 |
+
div.s4-err-title {
|
1541 |
+
background-color: #dfdfdf;
|
1542 |
+
font-weight: bold;
|
1543 |
+
margin: -3px 0 15px 0;
|
1544 |
padding: 5px;
|
1545 |
+
border-radius: 2px;
|
1546 |
+
font-size: 13px
|
1547 |
}
|
1548 |
|
1549 |
+
div.s4-err-msg {
|
1550 |
+
padding: 8px;
|
1551 |
+
display: none;
|
1552 |
+
border: 1px dashed #999;
|
1553 |
+
margin: 10px 0 20px 0;
|
1554 |
border-radius: 2px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1555 |
}
|
1556 |
|
1557 |
+
div.s4-err-msg div.content {
|
1558 |
+
padding: 5px;
|
1559 |
+
font-size: 11px;
|
1560 |
+
line-height: 17px;
|
1561 |
+
max-height: 125px;
|
1562 |
+
overflow-y: scroll;
|
1563 |
+
border: 1px solid silver;
|
1564 |
+
margin: 3px;
|
1565 |
+
}
|
1566 |
|
1567 |
+
div.s4-err-msg div.info-error {
|
1568 |
+
padding: 7px;
|
1569 |
+
background-color: #f9c9c9;
|
1570 |
+
border: 1px solid silver;
|
1571 |
+
border-radius: 2px;
|
1572 |
+
font-size: 12px;
|
1573 |
+
line-height: 16px
|
1574 |
}
|
1575 |
+
|
1576 |
+
div.s4-err-msg div.info-notice {
|
1577 |
+
padding: 7px;
|
1578 |
+
background-color: #FCFEC5;
|
1579 |
+
border: 1px solid silver;
|
1580 |
+
border-radius: 2px;
|
1581 |
+
font-size: 12px;
|
1582 |
+
line-height: 16px;
|
1583 |
}
|
1584 |
+
|
1585 |
+
table.s4-final-step {
|
1586 |
+
width: 100%;
|
1587 |
}
|
1588 |
|
1589 |
+
table.s4-final-step td {
|
1590 |
+
padding: 5px 15px 5px 5px;
|
1591 |
+
font-size: 13px;
|
1592 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1593 |
|
1594 |
+
table.s4-final-step td:first-child {
|
1595 |
+
white-space: nowrap;
|
1596 |
+
width: 165px
|
1597 |
+
}
|
|
|
1598 |
|
1599 |
+
div.s4-go-back {
|
1600 |
+
border-top: 1px dotted #dfdfdf;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1601 |
margin: auto;
|
1602 |
+
font-size: 11px;
|
1603 |
+
color: #333;
|
1604 |
+
padding-top: 4px
|
1605 |
}
|
1606 |
+
|
1607 |
+
div.s4-go-back ul {
|
1608 |
+
line-height: 18px
|
|
|
|
|
1609 |
}
|
|
|
|
|
|
|
1610 |
|
1611 |
+
button.s4-final-btns {
|
1612 |
+
cursor: pointer;
|
1613 |
+
color: #fff;
|
1614 |
+
font-size: 16px;
|
1615 |
+
border-radius: 5px;
|
1616 |
+
padding: 7px;
|
1617 |
+
background-color: #13659C;
|
1618 |
+
border: 1px solid gray;
|
1619 |
+
width: 145px;
|
1620 |
+
}
|
1621 |
|
1622 |
+
button.s4-final-btns:hover {
|
1623 |
+
background-color: #dfdfdf;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1624 |
}
|
1625 |
|
1626 |
+
div.s4-gopro-btn {
|
1627 |
+
text-align: center;
|
1628 |
+
font-size: 14px;
|
1629 |
+
margin: auto;
|
1630 |
+
width: 200px;
|
1631 |
+
font-style: italic;
|
1632 |
+
font-weight: bold
|
1633 |
}
|
1634 |
|
1635 |
+
div.s4-gopro-btn a {
|
1636 |
+
color: green
|
1637 |
+
}
|
1638 |
+
|
1639 |
+
div.s4-warn {
|
1640 |
+
color: maroon;
|
|
|
1641 |
}
|
1642 |
|
1643 |
+
pre.s4-diff-viewer {
|
1644 |
+
line-height: 11px
|
1645 |
+
}
|
1646 |
+
|
1647 |
+
div#s4-notice-reports div.section-content div.title {
|
1648 |
+
cursor: pointer
|
1649 |
+
}
|
1650 |
/* ============================
|
1651 |
+
STEP 5 HELP
|
1652 |
+
============================ */
|
|
|
|
|
|
|
1653 |
|
1654 |
+
#body-help div#content {
|
1655 |
+
width: 100%;
|
1656 |
+
max-width: 1024px;
|
1657 |
+
}
|
|
|
|
|
|
|
|
|
1658 |
|
1659 |
+
div.help-target {
|
1660 |
+
float: right;
|
|
|
|
|
|
|
1661 |
}
|
1662 |
+
|
1663 |
+
div.help-target a {
|
1664 |
+
float: right;
|
1665 |
+
font-size: 16px;
|
1666 |
+
color: #13659C
|
1667 |
}
|
1668 |
+
|
1669 |
+
div#main-help sup {
|
1670 |
+
font-size: 11px;
|
1671 |
+
font-weight: normal;
|
1672 |
+
font-style: italic;
|
1673 |
+
color: blue
|
1674 |
}
|
1675 |
|
1676 |
+
div.help-online {
|
1677 |
+
text-align: center;
|
1678 |
+
font-size: 18px;
|
1679 |
+
padding: 10px 0 0 0;
|
1680 |
+
line-height: 24px
|
1681 |
+
}
|
|
|
|
|
1682 |
|
1683 |
+
div.help {
|
1684 |
+
color: #555;
|
1685 |
+
font-style: italic;
|
1686 |
+
font-size: 11px;
|
1687 |
+
padding: 4px;
|
1688 |
+
border-top: 1px solid #dfdfdf
|
1689 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1690 |
|
1691 |
+
div.help-page fieldset {
|
1692 |
+
margin-bottom: 25px
|
1693 |
+
}
|
1694 |
|
1695 |
+
div#main-help {
|
1696 |
+
font-size: 13px;
|
1697 |
+
line-height: 17px
|
1698 |
+
}
|
|
|
1699 |
|
1700 |
+
div#main-help h3 {
|
1701 |
+
border-bottom: 1px solid silver;
|
1702 |
+
padding: 8px;
|
1703 |
+
margin: 4px 0 8px 0;
|
1704 |
+
font-size: 20px
|
1705 |
+
}
|
|
|
|
|
|
|
|
|
|
|
1706 |
|
1707 |
+
div#main-help span.step {
|
1708 |
+
color: #DB4B38
|
1709 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1710 |
|
1711 |
+
.help-opt {
|
|
|
|
|
|
|
1712 |
width: 100%;
|
1713 |
+
border: none;
|
1714 |
+
border-collapse: collapse;
|
1715 |
+
margin: 5px 0 0 0;
|
1716 |
}
|
1717 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1718 |
.help-opt .col-opt {
|
1719 |
width: 250px;
|
1720 |
}
|
1721 |
+
|
1722 |
+
.help-opt td.section {
|
1723 |
+
background-color: #dfdfdf;
|
1724 |
+
}
|
1725 |
+
|
1726 |
+
.help-opt td,
|
1727 |
+
.help-opt th {
|
1728 |
+
padding: 15px 10px;
|
1729 |
+
border: 1px solid silver;
|
1730 |
+
}
|
1731 |
+
|
1732 |
+
.help-opt td:first-child {
|
1733 |
+
font-weight: bold;
|
1734 |
+
padding-right: 10px;
|
1735 |
+
white-space: nowrap
|
1736 |
+
}
|
1737 |
+
|
1738 |
+
.help-opt th {
|
1739 |
+
background: #333;
|
1740 |
+
color: #fff;
|
1741 |
+
border: 1px solid #333
|
1742 |
+
}
|
1743 |
|
1744 |
#main-help section {
|
1745 |
border: 1px solid silver;
|
1746 |
margin-top: 28px;
|
1747 |
+
border-radius: 2px;
|
1748 |
overflow: hidden;
|
1749 |
}
|
1750 |
|
1751 |
#main-help section h2.header {
|
1752 |
+
background-color: #F1F1F1;
|
1753 |
+
padding: 15px;
|
1754 |
+
margin: 0;
|
1755 |
+
font-size: 20px;
|
1756 |
}
|
1757 |
|
1758 |
#main-help section .content {
|
1759 |
padding: 10px;
|
1760 |
}
|
|
|
1761 |
/* ============================
|
1762 |
Expandable section
|
1763 |
+
============================ */
|
1764 |
+
|
1765 |
.expandable.close .expand-header {
|
1766 |
+
cursor: pointer;
|
1767 |
}
|
1768 |
|
1769 |
.expandable.open .expand-header {
|
1770 |
+
cursor: pointer;
|
1771 |
}
|
1772 |
|
1773 |
.expandable .expand-header::before {
|
1790 |
.expandable.open .content {
|
1791 |
display: block;
|
1792 |
}
|
|
|
1793 |
/* ============================
|
1794 |
VIEW EXCEPTION
|
1795 |
+
============================ */
|
1796 |
+
|
1797 |
.exception-trace {
|
1798 |
overflow: auto;
|
1799 |
border: 1px solid lightgray;
|
1800 |
padding: 10px;
|
1801 |
margin: 0;
|
1802 |
}
|
|
|
|
|
1803 |
/*!
|
1804 |
* password indicator
|
1805 |
*/
|
1806 |
|
1807 |
+
.top_testresult {
|
1808 |
+
font-weight: bold;
|
1809 |
+
font-size: 11px;
|
1810 |
+
color: #222;
|
1811 |
+
display: block;
|
1812 |
position: absolute;
|
1813 |
top: 0;
|
1814 |
right: 30px;
|
1820 |
line-height: 30px;
|
1821 |
}
|
1822 |
|
|
|
1823 |
.top_shortPass,
|
1824 |
.top_badPass {
|
1825 |
+
background: #edabab;
|
1826 |
background: transparent linear-gradient(90deg, transparent 20%, #edabab);
|
1827 |
+
display: block;
|
1828 |
}
|
1829 |
+
|
1830 |
+
.top_goodPass {
|
1831 |
+
background: #ffffe0;
|
1832 |
background: transparent linear-gradient(90deg, transparent 20%, #ffffe0);
|
1833 |
+
display: block;
|
1834 |
}
|
1835 |
+
|
1836 |
+
.top_strongPass {
|
1837 |
+
background: #d3edab;
|
1838 |
background: transparent linear-gradient(90deg, transparent 20%, #d3edab);
|
1839 |
+
display: block;
|
1840 |
}
|
|
|
1841 |
/*================================================
|
1842 |
LIB OVERIDES*/
|
1843 |
+
|
1844 |
+
input.parsley-error,
|
1845 |
+
textarea.parsley-error,
|
1846 |
+
select.parsley-error {
|
1847 |
+
color: #B94A48 !important;
|
1848 |
+
background-color: #F2DEDE !important;
|
1849 |
+
border: 1px solid #EED3D7 !important;
|
1850 |
+
}
|
1851 |
+
|
1852 |
+
ul.parsley-errors-list {
|
1853 |
+
margin: 1px 0 0 -40px;
|
1854 |
+
list-style-type: none;
|
1855 |
+
font-size: 10px
|
1856 |
}
|
|
|
|
|
1857 |
|
1858 |
+
.ui-widget {
|
1859 |
+
font-size: 13px
|
1860 |
+
}
|
1861 |
|
1862 |
<?php if (DUPX_Log::isLevel(DUPX_Log::LV_DEBUG)): ?>
|
1863 |
.dupx-debug {display:block; margin:0 0 25px 0; font-size:11px; background-color:#f5dbda; padding:8px; border:1px solid silver; border-radius:2px}
|
installer/dup-installer/classes/class.csrf.php
CHANGED
@@ -1,182 +1,206 @@
|
|
1 |
<?php
|
|
|
2 |
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
|
4 |
-
class DUPX_CSRF {
|
5 |
-
|
6 |
-
/**
|
7 |
-
* Session var name prefix
|
8 |
-
* @var string
|
9 |
-
*/
|
10 |
-
public static $prefix = '_DUPX_CSRF';
|
11 |
-
|
12 |
-
/**
|
13 |
-
* Stores all CSRF values: Key as CSRF name and Val as CRF value
|
14 |
-
* @var array
|
15 |
-
*/
|
16 |
-
private static $CSRFVars;
|
17 |
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
*
|
24 |
-
* @return Void
|
25 |
-
*/
|
26 |
-
public static function setKeyVal($key, $val) {
|
27 |
-
$CSRFVars = self::getCSRFVars();
|
28 |
-
$CSRFVars[$key] = $val;
|
29 |
-
self::saveCSRFVars($CSRFVars);
|
30 |
-
self::$CSRFVars = false;
|
31 |
-
}
|
32 |
|
33 |
/**
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
* @return string|boolean If CSRF value set for give n Key, It returns CRF value otherise returns false
|
39 |
-
*/
|
40 |
-
public static function getVal($key) {
|
41 |
-
$CSRFVars = self::getCSRFVars();
|
42 |
-
if (isset($CSRFVars[$key])) {
|
43 |
-
return $CSRFVars[$key];
|
44 |
-
} else {
|
45 |
-
return false;
|
46 |
-
}
|
47 |
-
}
|
48 |
-
|
49 |
-
/** Generate DUPX_CSRF value for form
|
50 |
-
*
|
51 |
-
* @param string $form - Form name as session key
|
52 |
-
* @return string - token
|
53 |
-
*/
|
54 |
-
public static function generate($form = NULL) {
|
55 |
-
$keyName = self::getKeyName($form);
|
56 |
-
|
57 |
-
$existingToken = self::getVal($keyName);
|
58 |
-
if (false !== $existingToken) {
|
59 |
-
$token = $existingToken;
|
60 |
-
} else {
|
61 |
-
$token = DUPX_CSRF::token() . DUPX_CSRF::fingerprint();
|
62 |
-
}
|
63 |
-
|
64 |
-
self::setKeyVal($keyName, $token);
|
65 |
-
return $token;
|
66 |
-
}
|
67 |
|
68 |
-
/**
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
* @return boolean
|
74 |
-
*/
|
75 |
-
public static function check($token, $form = NULL) {
|
76 |
-
$keyName = self::getKeyName($form);
|
77 |
-
$CSRFVars = self::getCSRFVars();
|
78 |
-
if (isset($CSRFVars[$keyName]) && $CSRFVars[$keyName] == $token) { // token OK
|
79 |
-
return true;
|
80 |
-
}
|
81 |
-
return false;
|
82 |
-
}
|
83 |
-
|
84 |
-
/** Generate token
|
85 |
-
* @param void
|
86 |
-
* @return string
|
87 |
-
*/
|
88 |
-
protected static function token() {
|
89 |
-
mt_srand((double) microtime() * 10000);
|
90 |
-
$charid = strtoupper(md5(uniqid(rand(), TRUE)));
|
91 |
-
return substr($charid, 0, 8) . substr($charid, 8, 4) . substr($charid, 12, 4) . substr($charid, 16, 4) . substr($charid, 20, 12);
|
92 |
-
}
|
93 |
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
}
|
101 |
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
|
|
|
|
|
|
|
|
124 |
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
* @return array Key as CSRF name and value as CSRF value
|
146 |
-
*/
|
147 |
-
private static function getCSRFVars() {
|
148 |
-
if (!isset(self::$CSRFVars) || false === self::$CSRFVars) {
|
149 |
-
$filePath = self::getFilePath();
|
150 |
-
if (file_exists($filePath)) {
|
151 |
-
if (!($contents = file_get_contents($filePath))) {
|
152 |
-
throw new Exception('Fail to read the CSRF file.');
|
153 |
-
}
|
154 |
-
if (empty($contents)) {
|
155 |
-
self::$CSRFVars = array();
|
156 |
-
} else {
|
157 |
-
$CSRFobjs = json_decode($contents);
|
158 |
-
foreach ($CSRFobjs as $key => $value) {
|
159 |
-
self::$CSRFVars[$key] = $value;
|
160 |
-
}
|
161 |
-
}
|
162 |
-
} else {
|
163 |
-
self::$CSRFVars = array();
|
164 |
-
}
|
165 |
-
}
|
166 |
-
return self::$CSRFVars;
|
167 |
-
}
|
168 |
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
|
3 |
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
+
class DUPX_CSRF
|
7 |
+
{
|
8 |
+
|
9 |
+
private static $packagHash = null;
|
10 |
+
private static $mainFolder = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
/**
|
13 |
+
* Session var name prefix
|
14 |
+
* @var string
|
15 |
+
*/
|
16 |
+
public static $prefix = '_DUPX_CSRF';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
+
/**
|
19 |
+
* Stores all CSRF values: Key as CSRF name and Val as CRF value
|
20 |
+
* @var array
|
21 |
+
*/
|
22 |
+
private static $CSRFVars = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
24 |
+
public static function init($mainFolderm, $packageHash)
|
25 |
+
{
|
26 |
+
self::$mainFolder = $mainFolderm;
|
27 |
+
self::$packagHash = $packageHash;
|
28 |
+
self::$CSRFVars = null;
|
29 |
+
}
|
|
|
30 |
|
31 |
+
/**
|
32 |
+
* Set new CSRF
|
33 |
+
*
|
34 |
+
* @param string $key CSRF Key
|
35 |
+
* @param string $val CSRF Val
|
36 |
+
*
|
37 |
+
* @return Void
|
38 |
+
*/
|
39 |
+
public static function setKeyVal($key, $val)
|
40 |
+
{
|
41 |
+
$CSRFVars = self::getCSRFVars();
|
42 |
+
$CSRFVars[$key] = $val;
|
43 |
+
self::saveCSRFVars($CSRFVars);
|
44 |
+
self::$CSRFVars = null;
|
45 |
+
}
|
46 |
|
47 |
+
/**
|
48 |
+
* Get CSRF value by passing CSRF key
|
49 |
+
*
|
50 |
+
* @param string $key CSRF key
|
51 |
+
*
|
52 |
+
* @return string|boolean If CSRF value set for give n Key, It returns CRF value otherise returns false
|
53 |
+
*/
|
54 |
+
public static function getVal($key)
|
55 |
+
{
|
56 |
+
$CSRFVars = self::getCSRFVars();
|
57 |
+
if (isset($CSRFVars[$key])) {
|
58 |
+
return $CSRFVars[$key];
|
59 |
+
} else {
|
60 |
+
return false;
|
61 |
+
}
|
62 |
+
}
|
63 |
|
64 |
+
/**
|
65 |
+
* Generate DUPX_CSRF value for form
|
66 |
+
*
|
67 |
+
* @param string $form // Form name as session key
|
68 |
+
*
|
69 |
+
* @return string // token
|
70 |
+
*/
|
71 |
+
public static function generate($form = null)
|
72 |
+
{
|
73 |
+
$keyName = self::getKeyName($form);
|
74 |
+
$existingToken = self::getVal($keyName);
|
75 |
+
if (false !== $existingToken) {
|
76 |
+
$token = $existingToken;
|
77 |
+
} else {
|
78 |
+
$token = DUPX_CSRF::token() . DUPX_CSRF::fingerprint();
|
79 |
+
}
|
80 |
|
81 |
+
self::setKeyVal($keyName, $token);
|
82 |
+
return $token;
|
83 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
|
85 |
+
/**
|
86 |
+
* Check DUPX_CSRF value of form
|
87 |
+
*
|
88 |
+
* @param string $token - Token
|
89 |
+
* @param string $form - Form name as session key
|
90 |
+
* @return boolean
|
91 |
+
*/
|
92 |
+
public static function check($token, $form = null)
|
93 |
+
{
|
94 |
+
if (empty($form)) {
|
95 |
+
return false;
|
96 |
+
}
|
97 |
+
|
98 |
+
$keyName = self::getKeyName($form);
|
99 |
+
$CSRFVars = self::getCSRFVars();
|
100 |
+
if (isset($CSRFVars[$keyName]) && $CSRFVars[$keyName] == $token) {
|
101 |
+
// token OK
|
102 |
+
return true;
|
103 |
+
}
|
104 |
+
return false;
|
105 |
+
}
|
106 |
+
|
107 |
+
/** Generate token
|
108 |
+
*
|
109 |
+
* @return string
|
110 |
+
*/
|
111 |
+
protected static function token()
|
112 |
+
{
|
113 |
+
mt_srand((double) microtime() * 10000);
|
114 |
+
$charid = strtoupper(md5(uniqid(rand(), true)));
|
115 |
+
return substr($charid, 0, 8) . substr($charid, 8, 4) . substr($charid, 12, 4) . substr($charid, 16, 4) . substr($charid, 20, 12);
|
116 |
+
}
|
117 |
+
|
118 |
+
/** Returns "digital fingerprint" of user
|
119 |
+
*
|
120 |
+
* @return string - MD5 hashed data
|
121 |
+
*/
|
122 |
+
protected static function fingerprint()
|
123 |
+
{
|
124 |
+
return strtoupper(md5(implode('|', array($_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT']))));
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* Generate CSRF Key name
|
129 |
+
*
|
130 |
+
* @param string $form the form name for which CSRF key need to generate
|
131 |
+
* @return string CSRF key
|
132 |
+
*/
|
133 |
+
private static function getKeyName($form)
|
134 |
+
{
|
135 |
+
return DUPX_CSRF::$prefix . '_' . $form;
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Get Package hash
|
140 |
+
*
|
141 |
+
* @return string Package hash
|
142 |
+
*/
|
143 |
+
private static function getPackageHash()
|
144 |
+
{
|
145 |
+
if (is_null(self::$packagHash)) {
|
146 |
+
throw new Exception('Not init CSFR CLASS');
|
147 |
+
}
|
148 |
+
return self::$packagHash;
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Get file path where CSRF tokens are stored in JSON encoded format
|
153 |
+
*
|
154 |
+
* @return string file path where CSRF token stored
|
155 |
+
*/
|
156 |
+
public static function getFilePath()
|
157 |
+
{
|
158 |
+
if (is_null(self::$mainFolder)) {
|
159 |
+
throw new Exception('Not init CSFR CLASS');
|
160 |
+
}
|
161 |
+
$dupInstallerfolderPath = self::$mainFolder;
|
162 |
+
$packageHash = self::getPackageHash();
|
163 |
+
$fileName = 'dup-installer-csrf__' . $packageHash . '.txt';
|
164 |
+
$filePath = $dupInstallerfolderPath . '/' . $fileName;
|
165 |
+
return $filePath;
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Get all CSRF vars in array format
|
170 |
+
*
|
171 |
+
* @return array Key as CSRF name and value as CSRF value
|
172 |
+
*/
|
173 |
+
private static function getCSRFVars()
|
174 |
+
{
|
175 |
+
if (is_null(self::$CSRFVars)) {
|
176 |
+
$filePath = self::getFilePath();
|
177 |
+
if (file_exists($filePath)) {
|
178 |
+
$contents = file_get_contents($filePath);
|
179 |
+
if (empty($contents)) {
|
180 |
+
self::$CSRFVars = array();
|
181 |
+
} else {
|
182 |
+
$CSRFobjs = json_decode($contents);
|
183 |
+
foreach ($CSRFobjs as $key => $value) {
|
184 |
+
self::$CSRFVars[$key] = $value;
|
185 |
+
}
|
186 |
+
}
|
187 |
+
} else {
|
188 |
+
self::$CSRFVars = array();
|
189 |
+
}
|
190 |
+
}
|
191 |
+
return self::$CSRFVars;
|
192 |
+
}
|
193 |
+
|
194 |
+
/**
|
195 |
+
* Stores all CSRF vars
|
196 |
+
*
|
197 |
+
* @param array $CSRFVars holds all CSRF key val
|
198 |
+
* @return void
|
199 |
+
*/
|
200 |
+
private static function saveCSRFVars($CSRFVars)
|
201 |
+
{
|
202 |
+
$contents = DupLiteSnapJsonU::wp_json_encode($CSRFVars);
|
203 |
+
$filePath = self::getFilePath();
|
204 |
+
file_put_contents($filePath, $contents);
|
205 |
+
}
|
206 |
+
}
|
installer/dup-installer/classes/config/class.boot.php
CHANGED
@@ -55,6 +55,7 @@ class DUPX_Boot
|
|
55 |
// set all PHP.INI settings
|
56 |
self::phpIni();
|
57 |
self::initParamsBase();
|
|
|
58 |
|
59 |
/*
|
60 |
* INIZIALIZE
|
@@ -153,6 +154,7 @@ class DUPX_Boot
|
|
153 |
require_once($GLOBALS['DUPX_INIT'].'/classes/class.package.php');
|
154 |
require_once($GLOBALS['DUPX_INIT'].'/ctrls/ctrl.base.php');
|
155 |
require_once($GLOBALS['DUPX_INIT'].'/classes/config/class.archive.config.php');
|
|
|
156 |
require_once($GLOBALS['DUPX_INIT'].'/classes/class.logging.php');
|
157 |
require_once($GLOBALS['DUPX_INIT'].'/classes/host/class.custom.host.manager.php');
|
158 |
}
|
55 |
// set all PHP.INI settings
|
56 |
self::phpIni();
|
57 |
self::initParamsBase();
|
58 |
+
DUPX_Security::getInstance();
|
59 |
|
60 |
/*
|
61 |
* INIZIALIZE
|
154 |
require_once($GLOBALS['DUPX_INIT'].'/classes/class.package.php');
|
155 |
require_once($GLOBALS['DUPX_INIT'].'/ctrls/ctrl.base.php');
|
156 |
require_once($GLOBALS['DUPX_INIT'].'/classes/config/class.archive.config.php');
|
157 |
+
require_once($GLOBALS['DUPX_INIT'].'/classes/config/class.security.php');
|
158 |
require_once($GLOBALS['DUPX_INIT'].'/classes/class.logging.php');
|
159 |
require_once($GLOBALS['DUPX_INIT'].'/classes/host/class.custom.host.manager.php');
|
160 |
}
|
installer/dup-installer/classes/config/class.security.php
ADDED
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Security class
|
5 |
+
*
|
6 |
+
* Standard: PSR-2
|
7 |
+
* @link http://www.php-fig.org/psr/psr-2 Full Documentation
|
8 |
+
*
|
9 |
+
* @package SC\DUPX\Constants
|
10 |
+
*
|
11 |
+
*/
|
12 |
+
|
13 |
+
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* singleton class
|
17 |
+
*
|
18 |
+
*
|
19 |
+
* In this class all installer security checks are performed. If the security checks are not passed, an exception is thrown and the installer is stopped.
|
20 |
+
* This happens before anything else so the class must work without the initialization of all global duplicator variables.
|
21 |
+
*/
|
22 |
+
class DUPX_Security
|
23 |
+
{
|
24 |
+
const SECURITY_NONE = 'none';
|
25 |
+
const SECURITY_PASSWORD = 'pwd';
|
26 |
+
const SECURITY_ARCHIVE = 'archive';
|
27 |
+
|
28 |
+
/**
|
29 |
+
*
|
30 |
+
* @var self
|
31 |
+
*/
|
32 |
+
private static $instance = null;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* archive path read from csrf file
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
private $archivePath = null;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* installer name read from csrf file
|
42 |
+
* @var string
|
43 |
+
*/
|
44 |
+
private $bootloader = null;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* installer url path read from csrf file
|
48 |
+
* @var string
|
49 |
+
*/
|
50 |
+
private $bootUrl = null;
|
51 |
+
|
52 |
+
/**
|
53 |
+
* boot log file full path read from csrf file
|
54 |
+
* @var string
|
55 |
+
*/
|
56 |
+
private $bootFilePath = null;
|
57 |
+
|
58 |
+
/**
|
59 |
+
* boot log file full path read from csrf file
|
60 |
+
* @var string
|
61 |
+
*/
|
62 |
+
private $bootLogFile = null;
|
63 |
+
|
64 |
+
/**
|
65 |
+
* package hash read from csrf file
|
66 |
+
* @var string
|
67 |
+
*/
|
68 |
+
private $packageHash = null;
|
69 |
+
|
70 |
+
/**
|
71 |
+
* public package hash read from csrf file
|
72 |
+
* @var string
|
73 |
+
*/
|
74 |
+
private $secondaryPackageHash = null;
|
75 |
+
|
76 |
+
/**
|
77 |
+
*
|
78 |
+
* @return self
|
79 |
+
*/
|
80 |
+
public static function getInstance()
|
81 |
+
{
|
82 |
+
if (is_null(self::$instance)) {
|
83 |
+
self::$instance = new self();
|
84 |
+
}
|
85 |
+
|
86 |
+
return self::$instance;
|
87 |
+
}
|
88 |
+
|
89 |
+
private function __construct()
|
90 |
+
{
|
91 |
+
DUPX_CSRF::init($GLOBALS['DUPX_INIT'], DUPX_Boot::getPackageHash());
|
92 |
+
|
93 |
+
if (!file_exists(DUPX_CSRF::getFilePath())) {
|
94 |
+
throw new Exception("CSRF FILE NOT FOUND\n"
|
95 |
+
. "Please, check webroot file permsission and dup-installer folder permission");
|
96 |
+
}
|
97 |
+
|
98 |
+
$this->bootloader = DUPX_CSRF::getVal('bootloader');
|
99 |
+
$this->bootUrl = DUPX_CSRF::getVal('booturl');
|
100 |
+
$this->bootLogFile = DupLiteSnapLibIOU::safePath(DUPX_CSRF::getVal('bootLogFile'));
|
101 |
+
$this->bootFilePath = DupLiteSnapLibIOU::safePath(DUPX_CSRF::getVal('installerOrigPath'));
|
102 |
+
$this->archivePath = DupLiteSnapLibIOU::safePath(DUPX_CSRF::getVal('archive'));
|
103 |
+
$this->packageHash = DUPX_CSRF::getVal('package_hash');
|
104 |
+
$this->secondaryPackageHash = DUPX_CSRF::getVal('secondaryHash');
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* archive path read from installer.php passed by DUPX_CSFR
|
109 |
+
*
|
110 |
+
* @return string
|
111 |
+
*/
|
112 |
+
public function getArchivePath()
|
113 |
+
{
|
114 |
+
return $this->archivePath;
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* installer full path read from installer.php passed by DUPX_CSFR
|
119 |
+
*
|
120 |
+
* @return string
|
121 |
+
*/
|
122 |
+
public function getBootFilePath()
|
123 |
+
{
|
124 |
+
return $this->bootFilePath;
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* boot log file full path read from installer.php passed by DUPX_CSFR
|
129 |
+
*
|
130 |
+
* @return string
|
131 |
+
*/
|
132 |
+
public function getBootLogFile()
|
133 |
+
{
|
134 |
+
return $this->bootLogFile;
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* bootloader path read from installer.php passed by DUPX_CSFR
|
139 |
+
*
|
140 |
+
* @return string
|
141 |
+
*/
|
142 |
+
public function getBootloader()
|
143 |
+
{
|
144 |
+
return $this->bootloader;
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* bootloader path read from installer.php passed by DUPX_CSFR
|
149 |
+
*
|
150 |
+
* @return string
|
151 |
+
*/
|
152 |
+
public function getBootUrl()
|
153 |
+
{
|
154 |
+
return $this->bootUrl;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* package hash read from installer.php passed by DUPX_CSFR
|
159 |
+
*
|
160 |
+
* @return string
|
161 |
+
*/
|
162 |
+
public function getPackageHash()
|
163 |
+
{
|
164 |
+
return $this->packageHash;
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* package public hash read from installer.php passed by DUPX_CSFR
|
169 |
+
*
|
170 |
+
* @return string
|
171 |
+
*/
|
172 |
+
public function getSecondaryPackageHash()
|
173 |
+
{
|
174 |
+
return $this->secondaryPackageHash;
|
175 |
+
}
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Get security tipe (NONE, PASSWORD, ARCHIVE)
|
179 |
+
*
|
180 |
+
* @return string enum type
|
181 |
+
*/
|
182 |
+
public function getSecurityType()
|
183 |
+
{
|
184 |
+
if ($GLOBALS['DUPX_AC']->secure_on == true) {
|
185 |
+
return self::SECURITY_PASSWORD;
|
186 |
+
}
|
187 |
+
|
188 |
+
if (
|
189 |
+
DUPX_InstallerState::getInstance()->mode == DUPX_InstallerMode::OverwriteInstall &&
|
190 |
+
basename($this->bootFilePath) == 'installer.php' &&
|
191 |
+
!in_array($_SERVER['REMOTE_ADDR'], self::getSecurityAddrWhitelist())
|
192 |
+
) {
|
193 |
+
return self::SECURITY_ARCHIVE;
|
194 |
+
}
|
195 |
+
|
196 |
+
return self::SECURITY_NONE;
|
197 |
+
}
|
198 |
+
|
199 |
+
/**
|
200 |
+
* Get IPs white list for remote requests
|
201 |
+
*
|
202 |
+
* @return string[]
|
203 |
+
*/
|
204 |
+
private static function getSecurityAddrWhitelist()
|
205 |
+
{
|
206 |
+
// uncomment this to test security archive on localhost
|
207 |
+
// return array();
|
208 |
+
// -------
|
209 |
+
return array(
|
210 |
+
'127.0.0.1',
|
211 |
+
'::1'
|
212 |
+
);
|
213 |
+
}
|
214 |
+
|
215 |
+
/**
|
216 |
+
* return true if security check is passed
|
217 |
+
*
|
218 |
+
* @return bool
|
219 |
+
*/
|
220 |
+
public function securityCheck()
|
221 |
+
{
|
222 |
+
$archiveConfig = DUPX_ArchiveConfig::getInstance();
|
223 |
+
$result = false;
|
224 |
+
switch ($this->getSecurityType()) {
|
225 |
+
case self::SECURITY_NONE:
|
226 |
+
$result = true;
|
227 |
+
break;
|
228 |
+
case self::SECURITY_PASSWORD:
|
229 |
+
$securePass = isset($_POST['secure-pass']) ? DupLiteSnapLibUtil::sanitize_non_stamp_chars_and_newline($_POST['secure-pass']) : '';
|
230 |
+
$pass_hasher = new DUPX_PasswordHash(8, false);
|
231 |
+
$base64Pass = base64_encode($securePass);
|
232 |
+
$result = $pass_hasher->CheckPassword($base64Pass, $archiveConfig->secure_pass);
|
233 |
+
break;
|
234 |
+
case self::SECURITY_ARCHIVE:
|
235 |
+
$secureArchive = isset($_POST['secure-archive']) ? DupLiteSnapLibUtil::sanitize_non_stamp_chars_newline_and_trim($_POST['secure-archive']) : '';
|
236 |
+
$result = (strcmp(basename($this->archivePath), $secureArchive) == 0);
|
237 |
+
break;
|
238 |
+
default:
|
239 |
+
throw new Exception('Security type not valid ' . $this->getSecurityType());
|
240 |
+
break;
|
241 |
+
}
|
242 |
+
return $result;
|
243 |
+
}
|
244 |
+
}
|
installer/dup-installer/main.installer.php
CHANGED
@@ -59,7 +59,6 @@ try {
|
|
59 |
DUPX_Log::setThrowExceptionOnError(true);
|
60 |
|
61 |
// DUPX_Boot::initArchiveAndLog();
|
62 |
-
|
63 |
require_once($GLOBALS['DUPX_INIT'].'/classes/class.installer.state.php');
|
64 |
require_once($GLOBALS['DUPX_INIT'].'/classes/class.password.php');
|
65 |
require_once($GLOBALS['DUPX_INIT'].'/classes/class.db.php');
|
@@ -79,7 +78,7 @@ try {
|
|
79 |
|
80 |
// ?view=help
|
81 |
if (!empty($_GET['view']) && 'help' == $_GET['view']) {
|
82 |
-
|
83 |
} else if (isset($_GET['is_daws']) && 1 == $_GET['is_daws']) { // For daws action
|
84 |
$post_ctrl_csrf_token = isset($_GET['daws_csrf_token']) ? DUPX_U::sanitize_text_field($_GET['daws_csrf_token']) : '';
|
85 |
if (DUPX_CSRF::check($post_ctrl_csrf_token, 'daws')) {
|
@@ -159,13 +158,8 @@ try {
|
|
159 |
}
|
160 |
|
161 |
//Password Check
|
162 |
-
|
163 |
-
|
164 |
-
$pass_hasher = new DUPX_PasswordHash(8, FALSE);
|
165 |
-
$pass_check = $pass_hasher->CheckPassword(base64_encode($_POST['secure-pass']), $GLOBALS['DUPX_AC']->secure_pass);
|
166 |
-
if (! $pass_check) {
|
167 |
-
$GLOBALS['VIEW'] = 'secure';
|
168 |
-
}
|
169 |
}
|
170 |
|
171 |
// Constants which are dependent on the $GLOBALS['DUPX_AC']
|
@@ -231,12 +225,8 @@ try {
|
|
231 |
die();
|
232 |
}
|
233 |
//PASSWORD CHECK
|
234 |
-
if (
|
235 |
-
|
236 |
-
$pass_check = $pass_hasher->CheckPassword(base64_encode($_POST['secure-pass']), $GLOBALS['DUPX_AC']->secure_pass);
|
237 |
-
if (! $pass_check) {
|
238 |
-
DUPX_Log::error("Unauthorized Access: Please provide a password!");
|
239 |
-
}
|
240 |
}
|
241 |
|
242 |
// the controllers must die in case of error
|
@@ -265,6 +255,8 @@ try {
|
|
265 |
}
|
266 |
} catch (Exception $e) {
|
267 |
$exceptionError = $e;
|
|
|
|
|
268 |
}
|
269 |
|
270 |
/**
|
@@ -276,6 +268,15 @@ if (!empty($unespectOutput)) {
|
|
276 |
DUPX_Log::info('ERROR: Unespect output '.DUPX_Log::varToString($unespectOutput));
|
277 |
$exceptionError = new Exception('Unespected output '.DUPX_Log::varToString($unespectOutput));
|
278 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
279 |
?><!DOCTYPE html>
|
280 |
<html>
|
281 |
<head>
|
@@ -288,7 +289,7 @@ if (!empty($unespectOutput)) {
|
|
288 |
<link rel="icon" type="image/png" sizes="32x32" href="favicon/lite01_favicon-32x32.png">
|
289 |
<link rel="icon" type="image/png" sizes="16x16" href="favicon/lite01_favicon-16x16.png">
|
290 |
<link rel="manifest" href="favicon/site.webmanifest">
|
291 |
-
<link rel="mask-icon" href="favicon/lite01_safari-pinned-tab.svg"
|
292 |
<link rel="shortcut icon" href="favicon/lite01_favicon.ico">
|
293 |
<meta name="msapplication-TileColor" content="#da532c">
|
294 |
<meta name="msapplication-config" content="favicon/browserconfig.xml">
|
@@ -399,10 +400,7 @@ FORM DATA: User-Interface views -->
|
|
399 |
|
400 |
/** flush view output **/
|
401 |
ob_end_flush();
|
402 |
-
|
403 |
-
}
|
404 |
-
|
405 |
-
if ($exceptionError !== false) {
|
406 |
DUPX_Log::info("--------------------------------------");
|
407 |
DUPX_Log::info('EXCEPTION: '.$exceptionError->getMessage());
|
408 |
DUPX_Log::info('TRACE:');
|
59 |
DUPX_Log::setThrowExceptionOnError(true);
|
60 |
|
61 |
// DUPX_Boot::initArchiveAndLog();
|
|
|
62 |
require_once($GLOBALS['DUPX_INIT'].'/classes/class.installer.state.php');
|
63 |
require_once($GLOBALS['DUPX_INIT'].'/classes/class.password.php');
|
64 |
require_once($GLOBALS['DUPX_INIT'].'/classes/class.db.php');
|
78 |
|
79 |
// ?view=help
|
80 |
if (!empty($_GET['view']) && 'help' == $_GET['view']) {
|
81 |
+
$GLOBALS['VIEW'] = 'help';
|
82 |
} else if (isset($_GET['is_daws']) && 1 == $_GET['is_daws']) { // For daws action
|
83 |
$post_ctrl_csrf_token = isset($_GET['daws_csrf_token']) ? DUPX_U::sanitize_text_field($_GET['daws_csrf_token']) : '';
|
84 |
if (DUPX_CSRF::check($post_ctrl_csrf_token, 'daws')) {
|
158 |
}
|
159 |
|
160 |
//Password Check
|
161 |
+
if ($GLOBALS['VIEW'] !== 'help' && !DUPX_Security::getInstance()->securityCheck()) {
|
162 |
+
$GLOBALS['VIEW'] = 'secure';
|
|
|
|
|
|
|
|
|
|
|
163 |
}
|
164 |
|
165 |
// Constants which are dependent on the $GLOBALS['DUPX_AC']
|
225 |
die();
|
226 |
}
|
227 |
//PASSWORD CHECK
|
228 |
+
if (!DUPX_Security::getInstance()->securityCheck()) {
|
229 |
+
DUPX_Log::error("Unauthorized Access: Please provide a password!");
|
|
|
|
|
|
|
|
|
230 |
}
|
231 |
|
232 |
// the controllers must die in case of error
|
255 |
}
|
256 |
} catch (Exception $e) {
|
257 |
$exceptionError = $e;
|
258 |
+
} catch (Error $e) {
|
259 |
+
$exceptionError = $e;
|
260 |
}
|
261 |
|
262 |
/**
|
268 |
DUPX_Log::info('ERROR: Unespect output '.DUPX_Log::varToString($unespectOutput));
|
269 |
$exceptionError = new Exception('Unespected output '.DUPX_Log::varToString($unespectOutput));
|
270 |
}
|
271 |
+
|
272 |
+
if ($exceptionError != false) {
|
273 |
+
$GLOBALS["VIEW"] = 'exception';
|
274 |
+
echo '<pre>'.$exceptionError->getMessage()."\n";
|
275 |
+
echo "\tFILE:".$exceptionError->getFile().'['.$exceptionError->getLIne().']'."\n";
|
276 |
+
echo "\tTRACE:\n".$exceptionError->getTraceAsString()."</pre>";
|
277 |
+
die;
|
278 |
+
}
|
279 |
+
|
280 |
?><!DOCTYPE html>
|
281 |
<html>
|
282 |
<head>
|
289 |
<link rel="icon" type="image/png" sizes="32x32" href="favicon/lite01_favicon-32x32.png">
|
290 |
<link rel="icon" type="image/png" sizes="16x16" href="favicon/lite01_favicon-16x16.png">
|
291 |
<link rel="manifest" href="favicon/site.webmanifest">
|
292 |
+
<link rel="mask-icon" href="favicon/lite01_safari-pinned-tab.svg">
|
293 |
<link rel="shortcut icon" href="favicon/lite01_favicon.ico">
|
294 |
<meta name="msapplication-TileColor" content="#da532c">
|
295 |
<meta name="msapplication-config" content="favicon/browserconfig.xml">
|
400 |
|
401 |
/** flush view output **/
|
402 |
ob_end_flush();
|
403 |
+
} else {
|
|
|
|
|
|
|
404 |
DUPX_Log::info("--------------------------------------");
|
405 |
DUPX_Log::info('EXCEPTION: '.$exceptionError->getMessage());
|
406 |
DUPX_Log::info('TRACE:');
|
installer/dup-installer/views/view.help.php
CHANGED
@@ -28,13 +28,31 @@ $expandClass = $sectionId == $open_section ? 'open' : 'close';
|
|
28 |
<div class="content" >
|
29 |
<a name="help-s1-init"></a>
|
30 |
<div id="dup-help-installer" class="help-page">
|
31 |
-
The installer
|
32 |
-
input on this screen must be entered before proceeding with an install. This setting is optional and can be turned on/off via the package creation screens.
|
33 |
-
<br/><br/>
|
34 |
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
<a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-030-q" target="_blankopen_section">more details</a>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
|
39 |
<table class="help-opt">
|
40 |
<tr>
|
@@ -543,7 +561,7 @@ $expandClass = $sectionId == $open_section ? 'open' : 'close';
|
|
543 |
</tr>
|
544 |
<tr>
|
545 |
<td class="col-opt">Post GUID</td>
|
546 |
-
<td>If your moving a site keep this value checked. For more details see the <a href="
|
547 |
</tr>
|
548 |
<tr>
|
549 |
<td class="col-opt">Cross search <sup>pro</sup></td>
|
28 |
<div class="content" >
|
29 |
<a name="help-s1-init"></a>
|
30 |
<div id="dup-help-installer" class="help-page">
|
31 |
+
The installer allows for two basic types of security: password and filename-based.<br/><br/>
|
|
|
|
|
32 |
|
33 |
+
<b>Password Security</b><br/>
|
34 |
+
The installer can provide basic password protection, with the password being set at package creation time. The password input on this screen
|
35 |
+
must be entered before proceeding with an install. This setting is optional and can be turned on/off via the package creation screens.
|
36 |
+
<br/>
|
37 |
+
<small>
|
38 |
+
Note: If you do not recall the password then login to the site where the package was created and click the details of the package to view the
|
39 |
+
original password. To validate the password just typed you can toggle the view by clicking on the lock icon. For detail on how to override
|
40 |
+
this setting visit the online FAQ for
|
41 |
<a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-030-q" target="_blankopen_section">more details</a>.
|
42 |
+
</small>
|
43 |
+
<br/><br/>
|
44 |
+
|
45 |
+
<b>Filename Security</b><br/>
|
46 |
+
When you attempt an <i class="maroon">"Overwrite Install"</i> using the "installer.php" filename on a public server (non localhost) and have
|
47 |
+
not set a password, the installer will prompt for the filename of the associated archive.zip/daf file. This is to prevent an outside entity
|
48 |
+
from executing the installer. To complete the install, simply copy the filename of the archive and paste (or type) it into the
|
49 |
+
archive filename box.<br/>
|
50 |
+
|
51 |
+
<small>
|
52 |
+
Note: Using a hashed installer name (Settings ❯ Packages), renaming the installer to something unique (e.g. installer_932fe.php), setting
|
53 |
+
a password or installing from localhost will cause the archive filename to no longer be required.
|
54 |
+
</small>
|
55 |
+
<br/><br/>
|
56 |
|
57 |
<table class="help-opt">
|
58 |
<tr>
|
561 |
</tr>
|
562 |
<tr>
|
563 |
<td class="col-opt">Post GUID</td>
|
564 |
+
<td>If your moving a site keep this value checked. For more details see the <a href="https://wordpress.org/support/article/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>
|
565 |
</tr>
|
566 |
<tr>
|
567 |
<td class="col-opt">Cross search <sup>pro</sup></td>
|
installer/dup-installer/views/view.init1.php
CHANGED
@@ -3,77 +3,136 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
|
3 |
/** IDE HELPERS */
|
4 |
/* @var $GLOBALS['DUPX_AC'] DUPX_ArchiveConfig */
|
5 |
|
6 |
-
$_POST['secure-pass'] = isset($_POST['secure-pass']) ? DUPX_U::sanitize_text_field($_POST['secure-pass']) : '' ;
|
7 |
-
$_POST['secure-try'] = isset($_POST['secure-try']) ? 1 : 0 ;
|
8 |
-
$_GET['debug'] = isset($_GET['debug']) ? $_GET['debug'] : 0;
|
9 |
$page_url = DUPX_HTTP::get_request_uri();
|
10 |
-
|
11 |
-
$
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
));
|
20 |
-
exit;
|
21 |
}
|
22 |
|
23 |
-
//POSTBACK: valid
|
24 |
-
if ($
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
|
|
32 |
}
|
|
|
33 |
|
34 |
-
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
|
|
|
|
|
|
|
|
38 |
?>
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
<!-- =========================================
|
41 |
VIEW: STEP 0 - PASSWORD -->
|
42 |
-
<form method="post" id="i1-pass-form" class="content-form" data-parsley-validate="" autocomplete="off"
|
43 |
<input type="hidden" name="view" value="secure" />
|
44 |
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('secure'); ?>">
|
45 |
<input type="hidden" name="secure-try" value="1" />
|
46 |
|
47 |
<div class="hdr-main">
|
48 |
-
Installer
|
49 |
</div>
|
50 |
|
51 |
-
<?php if ($page_err) : ?>
|
52 |
<div class="error-pane">
|
53 |
-
<p
|
54 |
</div>
|
55 |
-
<?php endif; ?>
|
56 |
|
57 |
-
<div
|
58 |
-
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
</div>
|
62 |
|
63 |
-
<div
|
64 |
-
<
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
</div>
|
76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
</form>
|
78 |
|
79 |
<script>
|
@@ -89,5 +148,12 @@ VIEW: STEP 0 - PASSWORD -->
|
|
89 |
}
|
90 |
$form.submit();
|
91 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
</script>
|
93 |
<!-- END OF VIEW INIT 1 -->
|
3 |
/** IDE HELPERS */
|
4 |
/* @var $GLOBALS['DUPX_AC'] DUPX_ArchiveConfig */
|
5 |
|
|
|
|
|
|
|
6 |
$page_url = DUPX_HTTP::get_request_uri();
|
7 |
+
|
8 |
+
$security = DUPX_Security::getInstance();
|
9 |
+
|
10 |
+
if ($security->getSecurityType() == DUPX_Security::SECURITY_NONE) {
|
11 |
+
DUPX_HTTP::post_with_html($page_url, array(
|
12 |
+
'action_step' => '1',
|
13 |
+
'csrf_token' => DUPX_CSRF::generate('step1')
|
14 |
+
));
|
15 |
+
exit;
|
|
|
|
|
16 |
}
|
17 |
|
18 |
+
//POSTBACK: valid security
|
19 |
+
if ($security->securityCheck()) {
|
20 |
+
DUPX_HTTP::post_with_html($page_url,
|
21 |
+
array(
|
22 |
+
'action_step' => '1',
|
23 |
+
'csrf_token' => DUPX_CSRF::generate('step1'),
|
24 |
+
'secure-pass' => $_POST['secure-pass'],
|
25 |
+
'secure-archive' => $_POST['secure-archive']
|
26 |
+
)
|
27 |
+
);
|
28 |
+
exit;
|
29 |
}
|
30 |
+
$page_err = isset($_POST['secure-try']) ? 1 : 0;
|
31 |
|
32 |
+
switch (DUPX_Security::getInstance()->getSecurityType()) {
|
33 |
+
case DUPX_Security::SECURITY_PASSWORD:
|
34 |
+
$errorMsg = 'Invalid Password! Please try again...';
|
35 |
+
break;
|
36 |
+
case DUPX_Security::SECURITY_ARCHIVE:
|
37 |
+
$errorMsg = 'Invalid Archive name! Please try again...';
|
38 |
+
break;
|
39 |
+
case DUPX_Security::SECURITY_NONE:
|
40 |
+
default:
|
41 |
+
$errorMsg = '';
|
42 |
+
break;
|
43 |
}
|
44 |
+
|
45 |
+
$css_why_display = ($GLOBALS['DUPX_STATE']->mode === DUPX_InstallerMode::OverwriteInstall) ? "" : "no-display";
|
46 |
+
$archive_name = isset($_POST['secure-archive']) ? $_POST['secure-archive'] : '';
|
47 |
+
|
48 |
?>
|
49 |
|
50 |
+
<style>
|
51 |
+
div#content {min-height: 250px}
|
52 |
+
div#content-inner {min-height: 250px}
|
53 |
+
form#i1-pass-form {min-height: 250px}
|
54 |
+
div.footer-buttons {position: static}
|
55 |
+
</style>
|
56 |
+
|
57 |
<!-- =========================================
|
58 |
VIEW: STEP 0 - PASSWORD -->
|
59 |
+
<form method="post" id="i1-pass-form" class="content-form" data-parsley-validate="" autocomplete="off">
|
60 |
<input type="hidden" name="view" value="secure" />
|
61 |
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('secure'); ?>">
|
62 |
<input type="hidden" name="secure-try" value="1" />
|
63 |
|
64 |
<div class="hdr-main">
|
65 |
+
Installer Security
|
66 |
</div>
|
67 |
|
68 |
+
<?php if ($page_err) : ?>
|
69 |
<div class="error-pane">
|
70 |
+
<p><?php echo $errorMsg; ?></p>
|
71 |
</div>
|
72 |
+
<?php endif; ?>
|
73 |
|
74 |
+
<div class="margin-top-0 margin-bottom-2">
|
75 |
+
<div class="text-right" >
|
76 |
+
<a href="javascript:void(0)" id="pass-quick-link" class="link-style" onclick="jQuery('#pass-quick-help-info').toggleClass('no-display');" >
|
77 |
+
Why do I see this screen?
|
78 |
+
</a>
|
79 |
+
</div>
|
80 |
+
<div id="pass-quick-help-info" class="box info <?php echo $css_why_display?>">
|
81 |
+
This screen will show under the following conditions:
|
82 |
+
<ul>
|
83 |
+
<li>
|
84 |
+
<b>Password Protection:</b> If the file was password protected when it was created then the password input below should
|
85 |
+
be enabled. If the input is disabled then no password was set.
|
86 |
+
</li>
|
87 |
+
<li>
|
88 |
+
<b>Simple Installer Name:</b> If no password is set and you are performing an <i class="maroon">"Overwrite Install"</i> on a public server
|
89 |
+
(non localhost) without a secure installer.php file name (i.e. [hash]_installer.php). Then users will need to enter the archive file for
|
90 |
+
a valid security check. If the Archive File Name input is disabled then it can be ignored.
|
91 |
+
</li>
|
92 |
+
</ul>
|
93 |
+
</div>
|
94 |
</div>
|
95 |
|
96 |
+
<div id="wrapper_item_secure-pass" class="param-wrapper margin-bottom-2">
|
97 |
+
<label for="secure-pass">Password:</label>
|
98 |
+
<?php
|
99 |
+
$attrs = array();
|
100 |
+
if ($security->getSecurityType() == $security::SECURITY_PASSWORD) {
|
101 |
+
$attrs['required'] = 'required';
|
102 |
+
} else {
|
103 |
+
$attrs['placeholder'] = 'Password not enabled';
|
104 |
+
$attrs['disabled'] = 'disabled';
|
105 |
+
}
|
106 |
+
DUPX_U_Html::inputPasswordToggle('secure-pass', 'secure-pass', array(), $attrs);
|
107 |
+
?>
|
108 |
</div>
|
109 |
|
110 |
+
<?php if ($GLOBALS['DUPX_STATE']->mode === DUPX_InstallerMode::OverwriteInstall) : ?>
|
111 |
+
<div id="wrapper_item_secure-archive" class="param-wrapper margin-bottom-4">
|
112 |
+
<label for="param_item_secure-archive">Archive File Name:</label>
|
113 |
+
<div>
|
114 |
+
<input
|
115 |
+
type="text"
|
116 |
+
id="param_item_secure-archive"
|
117 |
+
name="secure-archive"
|
118 |
+
value="<?php echo $archive_name; ?>"
|
119 |
+
class="input-item"
|
120 |
+
placeholder="example: [full-unique-name]_archive.zip"
|
121 |
+
<?php echo ($security->getSecurityType() == $security::SECURITY_ARCHIVE ? '' : 'disabled'); ?>>
|
122 |
+
<div class="sub-note">
|
123 |
+
<?php DUPX_View_Funcs::helpLink('secure', 'How to get archive file name?'); ?>
|
124 |
+
</div>
|
125 |
+
</div>
|
126 |
+
</div>
|
127 |
+
<?php endif;?>
|
128 |
+
|
129 |
+
<div class="footer-buttons" >
|
130 |
+
<div class="content-center" >
|
131 |
+
<button type="submit" name="secure-btn" id="secure-btn" class="default-btn" onclick="DUPX.checkPassword()">
|
132 |
+
Submit
|
133 |
+
</button>
|
134 |
+
</div>
|
135 |
+
</div>
|
136 |
</form>
|
137 |
|
138 |
<script>
|
148 |
}
|
149 |
$form.submit();
|
150 |
}
|
151 |
+
|
152 |
+
//DOCUMENT LOAD
|
153 |
+
$(document).ready(function()
|
154 |
+
{
|
155 |
+
$('#secure-pass').focus();
|
156 |
+
$('#param_item_secure-archive').focus();
|
157 |
+
});
|
158 |
</script>
|
159 |
<!-- END OF VIEW INIT 1 -->
|
installer/dup-installer/views/view.s1.base.php
CHANGED
@@ -99,6 +99,7 @@ $archive_config = DUPX_ArchiveConfig::getInstance();
|
|
99 |
<input type="hidden" name="ctrl_action" value="ctrl-step1" />
|
100 |
<input type="hidden" name="ctrl_csrf_token" value="<?php echo DUPX_U::esc_attr(DUPX_CSRF::generate('ctrl-step1')); ?>">
|
101 |
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_html($_POST['secure-pass']); ?>" />
|
|
|
102 |
<input type="hidden" id="s1-input-form-extra-data" name="extra_data" />
|
103 |
|
104 |
<div class="hdr-main">
|
@@ -110,7 +111,7 @@ $archive_config = DUPX_ArchiveConfig::getInstance();
|
|
110 |
SETUP TYPE: @todo implement
|
111 |
==================================== -->
|
112 |
<div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s1-area-setup-type" style="display:none">
|
113 |
-
<a id="s1-area-setup-type-link"><i class="fa fa-plus-square"></i>
|
114 |
</div>
|
115 |
<div id="s1-area-setup-type" style="display:none">
|
116 |
|
@@ -161,7 +162,7 @@ $archive_config = DUPX_ArchiveConfig::getInstance();
|
|
161 |
ARCHIVE
|
162 |
==================================== -->
|
163 |
<div class="hdr-sub1 toggle-hdr" data-status="<?php echo strtolower($arcCheck); ?>" data-type="toggle auto" data-target="#s1-area-archive-file">
|
164 |
-
<a id="s1-area-archive-file-link"><i class="fa fa-plus-square"></i>
|
165 |
<?php
|
166 |
$badge = DUPX_View_Funcs::getBadgeClassFromCheckStatus($arcCheck);
|
167 |
?>
|
@@ -244,7 +245,163 @@ $archive_config = DUPX_ArchiveConfig::getInstance();
|
|
244 |
</div>
|
245 |
<!--div id="tabs-2"><p>Content Here</p></div-->
|
246 |
</div>
|
247 |
-
</div><br
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
248 |
|
249 |
<!-- ====================================
|
250 |
VALIDATION
|
@@ -596,161 +753,6 @@ $archive_config = DUPX_ArchiveConfig::getInstance();
|
|
596 |
<br/><br/>
|
597 |
|
598 |
|
599 |
-
<!-- ====================================
|
600 |
-
OPTIONS
|
601 |
-
==================================== -->
|
602 |
-
<div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s1-area-adv-opts">
|
603 |
-
<a href="javascript:void(0)"><i class="fa fa-plus-square"></i>Options</a>
|
604 |
-
</div>
|
605 |
-
<div id="s1-area-adv-opts" class="hdr-sub1-area" style="display:none">
|
606 |
-
<div class="help-target">
|
607 |
-
<?php DUPX_View_Funcs::helpIconLink('step1'); ?>
|
608 |
-
</div>
|
609 |
-
<div class="hdr-sub3">General</div>
|
610 |
-
<table class="dupx-opts dupx-advopts">
|
611 |
-
<tr>
|
612 |
-
<td>Extraction:</td>
|
613 |
-
<td>
|
614 |
-
<?php
|
615 |
-
$options = array();
|
616 |
-
$extra_attr = ($arcCheck == 'Warn' && $is_wpconfarc_present) ? ' selected="selected"' : '';
|
617 |
-
$options[] = '<option '.($is_wpconfarc_present ? '' : 'disabled').$extra_attr.' value="manual">Manual Archive Extraction '.($is_wpconfarc_present ? '' : '*').'</option>';
|
618 |
-
if ($archive_config->isZipArchive()) {
|
619 |
-
//ZIP-ARCHIVE
|
620 |
-
$extra_attr = ('Pass' == $arcCheck && $zip_archive_enabled && !$shell_exec_zip_enabled) ? ' selected="selected"' : '';
|
621 |
-
$extra_attr .= ('Pass' != $arcCheck || !$zip_archive_enabled) ? ' disabled="disabled"' : '';
|
622 |
-
$options[] = '<option value="ziparchive"'.$extra_attr.'>PHP ZipArchive</option>';
|
623 |
-
|
624 |
-
//SHELL-EXEC UNZIP
|
625 |
-
$extra_attr = ('Pass' != $arcCheck || !$shell_exec_zip_enabled) ? ' disabled="disabled"' : '';
|
626 |
-
$extra_attr .= ('Pass' == $arcCheck && $shell_exec_zip_enabled) ? ' selected="selected"' : '';
|
627 |
-
$options[] = '<option value="shellexec_unzip"'.$extra_attr.'>Shell Exec Unzip</option>';
|
628 |
-
} else { // DUPARCHIVE
|
629 |
-
$extra_attr = ('Pass' == $arcCheck) ? ' selected="selected"' : 'disabled="disabled"';
|
630 |
-
$options[] = '<option value="duparchive"'.$extra_attr.'>DupArchive</option>';
|
631 |
-
}
|
632 |
-
$num_selections = count($options);
|
633 |
-
?>
|
634 |
-
<select id="archive_engine" name="archive_engine" size="<?php echo DUPX_U::esc_attr($num_selections); ?>">
|
635 |
-
<?php echo implode('', $options); ?>
|
636 |
-
</select><br/>
|
637 |
-
<?php if (!$is_wpconfarc_present): ?>
|
638 |
-
<span class="sub-notes">
|
639 |
-
*Option enabled when archive has been pre-extracted
|
640 |
-
<a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-015-q" target="_blank">[more info]</a>
|
641 |
-
</span>
|
642 |
-
<?php endif; ?>
|
643 |
-
</td>
|
644 |
-
</tr>
|
645 |
-
<tr>
|
646 |
-
<td style="vertical-align: top;padding-top: 10px;" >Archive Action:</td>
|
647 |
-
<td id="archive_action_wrapper">
|
648 |
-
<select id="archive_action_input" name="<?php echo DUP_LITE_Extraction::INPUT_NAME_ARCHIVE_ACTION; ?>" class="input-item" >
|
649 |
-
<option value="<?php echo DUP_LITE_Extraction::ACTION_DO_NOTHING; ?>" selected="selected">
|
650 |
-
Extract files over current files
|
651 |
-
</option>
|
652 |
-
<option value="<?php echo DUP_LITE_Extraction::ACTION_REMOVE_WP_FILES; ?>">
|
653 |
-
Remove WP core and content and extract
|
654 |
-
</option>
|
655 |
-
<option value="<?php echo DUP_LITE_Extraction::ACTION_REMOVE_ALL_FILES; ?>">
|
656 |
-
Remove all files and extract
|
657 |
-
</option>
|
658 |
-
</select>
|
659 |
-
<div class="sub-note" style="margin-top:5px; max-width:90%; font-size:10px">
|
660 |
-
<div class="archive-action-note archive-action-<?php echo DUP_LITE_Extraction::ACTION_DO_NOTHING; ?>">
|
661 |
-
Note: <b>Files are extracted over existing files.</b> After install, the destination folder will contain a combination of the old site files and
|
662 |
-
the files extracted from the archive. This option is the most conservative option for those who want to make sure they do not want to lose data.
|
663 |
-
</div>
|
664 |
-
<div class="archive-action-note archive-action-<?php echo DUP_LITE_Extraction::ACTION_REMOVE_ALL_FILES; ?> no-display">
|
665 |
-
Note: Before extracting the package files, <b>all files and folders in the installation folder will be removed</b> except for folders that contain
|
666 |
-
WordPress installations or Duplicator backup folders. This option is recommended for those who want to delete all files related to old installations
|
667 |
-
or external applications.
|
668 |
-
</div>
|
669 |
-
<div class="archive-action-note archive-action-<?php echo DUP_LITE_Extraction::ACTION_REMOVE_WP_FILES; ?> no-display">
|
670 |
-
Note: Before extracting the package files, <b>all current WordPress core and content files and folders will be removed</b> (wp-include, wp-content ... )
|
671 |
-
This option is for those who want to avoid having old site media mixed with new but have other files/folders in the home path that they don't want to
|
672 |
-
delete.
|
673 |
-
</div>
|
674 |
-
</div>
|
675 |
-
</td>
|
676 |
-
</tr>
|
677 |
-
</table><br/><br/>
|
678 |
-
|
679 |
-
<div class="hdr-sub3">Advanced</div>
|
680 |
-
<table class="dupx-opts dupx-advopts">
|
681 |
-
<tr>
|
682 |
-
<td>Permissions:</td>
|
683 |
-
<td>
|
684 |
-
<input type="checkbox" name="set_file_perms" id="set_file_perms" value="1" onclick="jQuery('#file_perms_value').prop('disabled', !jQuery(this).is(':checked'));"/>
|
685 |
-
<label for="set_file_perms">All Files</label><input name="file_perms_value" id="file_perms_value" style="width:45px; margin-left:7px;" value="644" disabled>
|
686 |
-
<input type="checkbox" name="set_dir_perms" id="set_dir_perms" value="1" onclick="jQuery('#dir_perms_value').prop('disabled', !jQuery(this).is(':checked'));"/>
|
687 |
-
<label for="set_dir_perms">All Directories</label><input name="dir_perms_value" id="dir_perms_value" style="width:45px; margin-left:7px;" value="755" disabled>
|
688 |
-
</td>
|
689 |
-
</tr>
|
690 |
-
<tr>
|
691 |
-
<td>Safe Mode:</td>
|
692 |
-
<td>
|
693 |
-
<select name="exe_safe_mode" id="exe_safe_mode" onchange="DUPX.onSafeModeSwitch();" style="width:250px;">
|
694 |
-
<option value="0">Off</option>
|
695 |
-
<option value="1">Basic</option>
|
696 |
-
<option value="2">Advanced</option>
|
697 |
-
</select>
|
698 |
-
</td>
|
699 |
-
</tr>
|
700 |
-
<tr>
|
701 |
-
<td>Config Files:</td>
|
702 |
-
<td>
|
703 |
-
<select name="config_mode" id="config_mode" style="width:250px;">
|
704 |
-
<option value="NEW">Create New (recommended)</option>
|
705 |
-
<optgroup label="Advanced">
|
706 |
-
<option value="RESTORE">Restore Original</option>
|
707 |
-
<option value="IGNORE">Ignore All</option>
|
708 |
-
</optgroup>
|
709 |
-
</select> <br/>
|
710 |
-
<span class="sub-notes" style="font-weight: normal">
|
711 |
-
Controls how .htaccess, .user.ini and web.config are used.<br/>
|
712 |
-
These options are not applied until step 3 is ran.
|
713 |
-
<?php DUPX_View_Funcs::helpLink('step1', '[more info]'); ?>
|
714 |
-
</span>
|
715 |
-
</td>
|
716 |
-
</tr>
|
717 |
-
<tr>
|
718 |
-
<td>File Times:</td>
|
719 |
-
<td>
|
720 |
-
<input type="radio" name="zip_filetime" id="zip_filetime_now" value="current" checked="checked" />
|
721 |
-
<label class="radio" for="zip_filetime_now" title='Set the files current date time to now'>Current</label>
|
722 |
-
<input type="radio" name="zip_filetime" id="zip_filetime_orginal" value="original" />
|
723 |
-
<label class="radio" for="zip_filetime_orginal" title="Keep the files date time the same">Original</label>
|
724 |
-
</td>
|
725 |
-
</tr>
|
726 |
-
<tr>
|
727 |
-
<td>Logging:</td>
|
728 |
-
<td>
|
729 |
-
<input type="radio" name="logging" id="logging-light" value="<?php echo DUPX_Log::LV_DEFAULT; ?>" checked="true"> <label for="logging-light" class="radio">Light</label>
|
730 |
-
<input type="radio" name="logging" id="logging-detailed" value="<?php echo DUPX_Log::LV_DETAILED; ?>"> <label for="logging-detailed" class="radio">Detailed</label>
|
731 |
-
<input type="radio" name="logging" id="logging-debug" value="<?php echo DUPX_Log::LV_DEBUG; ?>"> <label for="logging-debug" class="radio">Debug</label>
|
732 |
-
<input type="radio" name="logging" id="logging-h-debug" value="<?php echo DUPX_Log::LV_HARD_DEBUG; ?>"> <label for="logging-h-debug" class="radio">Hard debug</label>
|
733 |
-
</td>
|
734 |
-
</tr>
|
735 |
-
<?php if (!$archive_config->isZipArchive()): ?>
|
736 |
-
<tr>
|
737 |
-
<td>Client-Kickoff:</td>
|
738 |
-
<td>
|
739 |
-
<input type="checkbox" name="clientside_kickoff" id="clientside_kickoff" value="1" checked/>
|
740 |
-
<label for="clientside_kickoff" style="font-weight: normal">Browser drives the archive engine.</label>
|
741 |
-
</td>
|
742 |
-
</tr>
|
743 |
-
<?php endif; ?>
|
744 |
-
<tr>
|
745 |
-
<td>Testing:</td>
|
746 |
-
<td>
|
747 |
-
<a href="javascript:void(0)" target="db-test" onclick="DUPX.openDBValidationWindow(); return false;">[Quick Database Connection Test]</a>
|
748 |
-
</td>
|
749 |
-
</tr>
|
750 |
-
</table>
|
751 |
-
</div><br/>
|
752 |
-
|
753 |
-
|
754 |
<?php if ($req_success && $arcCheck != 'Fail') : ?>
|
755 |
<div id="s1-warning-check">
|
756 |
<?php if ($is_overwrite_mode && $is_wordpress) { ?>
|
@@ -793,6 +795,7 @@ VIEW: STEP 1 - DB QUICK TEST
|
|
793 |
<input type="hidden" name="view" value="step2" />
|
794 |
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step2'); ?>">
|
795 |
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_attr($_POST['secure-pass']); ?>" />
|
|
|
796 |
</form>
|
797 |
|
798 |
|
@@ -814,6 +817,7 @@ Auto Posts to view.step2.php
|
|
814 |
<input type="hidden" name="view" value="step2" />
|
815 |
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step2'); ?>">
|
816 |
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_attr($_POST['secure-pass']); ?>" />
|
|
|
817 |
<input type="hidden" name="logging" id="ajax-logging" />
|
818 |
<input type="hidden" name="config_mode" id="ajax-config-mode" />
|
819 |
<input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="0" />
|
99 |
<input type="hidden" name="ctrl_action" value="ctrl-step1" />
|
100 |
<input type="hidden" name="ctrl_csrf_token" value="<?php echo DUPX_U::esc_attr(DUPX_CSRF::generate('ctrl-step1')); ?>">
|
101 |
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_html($_POST['secure-pass']); ?>" />
|
102 |
+
<input type="hidden" name="secure-archive" value="<?php echo DUPX_U::esc_html($_POST['secure-archive']); ?>" />
|
103 |
<input type="hidden" id="s1-input-form-extra-data" name="extra_data" />
|
104 |
|
105 |
<div class="hdr-main">
|
111 |
SETUP TYPE: @todo implement
|
112 |
==================================== -->
|
113 |
<div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s1-area-setup-type" style="display:none">
|
114 |
+
<a id="s1-area-setup-type-link"><i class="fa fa-plus-square"></i>Overview</a>
|
115 |
</div>
|
116 |
<div id="s1-area-setup-type" style="display:none">
|
117 |
|
162 |
ARCHIVE
|
163 |
==================================== -->
|
164 |
<div class="hdr-sub1 toggle-hdr" data-status="<?php echo strtolower($arcCheck); ?>" data-type="toggle auto" data-target="#s1-area-archive-file">
|
165 |
+
<a id="s1-area-archive-file-link"><i class="fa fa-plus-square"></i>Overview</a>
|
166 |
<?php
|
167 |
$badge = DUPX_View_Funcs::getBadgeClassFromCheckStatus($arcCheck);
|
168 |
?>
|
245 |
</div>
|
246 |
<!--div id="tabs-2"><p>Content Here</p></div-->
|
247 |
</div>
|
248 |
+
</div><br/>
|
249 |
+
|
250 |
+
|
251 |
+
<!-- ====================================
|
252 |
+
OPTIONS
|
253 |
+
==================================== -->
|
254 |
+
<div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s1-area-adv-opts">
|
255 |
+
<a href="javascript:void(0)"><i class="fa fa-plus-square"></i>Options</a>
|
256 |
+
</div>
|
257 |
+
<div id="s1-area-adv-opts" class="hdr-sub1-area" style="display:none">
|
258 |
+
<div class="help-target">
|
259 |
+
<?php DUPX_View_Funcs::helpIconLink('step1'); ?>
|
260 |
+
</div>
|
261 |
+
<div class="hdr-sub3">General</div>
|
262 |
+
<table class="dupx-opts dupx-advopts">
|
263 |
+
<tr>
|
264 |
+
<td>Extraction:</td>
|
265 |
+
<td>
|
266 |
+
<?php
|
267 |
+
$options = array();
|
268 |
+
$extra_attr = ($arcCheck == 'Warn' && $is_wpconfarc_present) ? ' selected="selected"' : '';
|
269 |
+
$options[] = '<option '.($is_wpconfarc_present ? '' : 'disabled').$extra_attr.' value="manual">Manual Archive Extraction '.($is_wpconfarc_present ? '' : '*').'</option>';
|
270 |
+
if ($archive_config->isZipArchive()) {
|
271 |
+
//ZIP-ARCHIVE
|
272 |
+
$extra_attr = ('Pass' == $arcCheck && $zip_archive_enabled && !$shell_exec_zip_enabled) ? ' selected="selected"' : '';
|
273 |
+
$extra_attr .= ('Pass' != $arcCheck || !$zip_archive_enabled) ? ' disabled="disabled"' : '';
|
274 |
+
$options[] = '<option value="ziparchive"'.$extra_attr.'>PHP ZipArchive</option>';
|
275 |
+
|
276 |
+
//SHELL-EXEC UNZIP
|
277 |
+
$extra_attr = ('Pass' != $arcCheck || !$shell_exec_zip_enabled) ? ' disabled="disabled"' : '';
|
278 |
+
$extra_attr .= ('Pass' == $arcCheck && $shell_exec_zip_enabled) ? ' selected="selected"' : '';
|
279 |
+
$options[] = '<option value="shellexec_unzip"'.$extra_attr.'>Shell Exec Unzip</option>';
|
280 |
+
} else { // DUPARCHIVE
|
281 |
+
$extra_attr = ('Pass' == $arcCheck) ? ' selected="selected"' : 'disabled="disabled"';
|
282 |
+
$options[] = '<option value="duparchive"'.$extra_attr.'>DupArchive</option>';
|
283 |
+
}
|
284 |
+
$num_selections = count($options);
|
285 |
+
?>
|
286 |
+
<select id="archive_engine" name="archive_engine" size="<?php echo DUPX_U::esc_attr($num_selections); ?>">
|
287 |
+
<?php echo implode('', $options); ?>
|
288 |
+
</select><br/>
|
289 |
+
<?php if (!$is_wpconfarc_present): ?>
|
290 |
+
<span class="sub-notes">
|
291 |
+
*Option enabled when archive has been pre-extracted
|
292 |
+
<a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-015-q" target="_blank">[more info]</a>
|
293 |
+
</span>
|
294 |
+
<?php endif; ?>
|
295 |
+
</td>
|
296 |
+
</tr>
|
297 |
+
<tr>
|
298 |
+
<td style="vertical-align: top;padding-top: 10px;" >Archive Action:</td>
|
299 |
+
<td id="archive_action_wrapper">
|
300 |
+
<select id="archive_action_input" name="<?php echo DUP_LITE_Extraction::INPUT_NAME_ARCHIVE_ACTION; ?>" class="input-item" >
|
301 |
+
<option value="<?php echo DUP_LITE_Extraction::ACTION_DO_NOTHING; ?>" selected="selected">
|
302 |
+
Extract files over current files
|
303 |
+
</option>
|
304 |
+
<option value="<?php echo DUP_LITE_Extraction::ACTION_REMOVE_WP_FILES; ?>">
|
305 |
+
Remove WP core and content and extract
|
306 |
+
</option>
|
307 |
+
<option value="<?php echo DUP_LITE_Extraction::ACTION_REMOVE_ALL_FILES; ?>">
|
308 |
+
Remove all files and extract
|
309 |
+
</option>
|
310 |
+
</select>
|
311 |
+
<div class="sub-note" style="margin-top:5px; max-width:90%; font-size:10px">
|
312 |
+
<div class="archive-action-note archive-action-<?php echo DUP_LITE_Extraction::ACTION_DO_NOTHING; ?>">
|
313 |
+
Note: <b>Files are extracted over existing files.</b> After install, the destination folder will contain a combination of the old site files and
|
314 |
+
the files extracted from the archive. This option is the most conservative option for those who want to make sure they do not want to lose data.
|
315 |
+
</div>
|
316 |
+
<div class="archive-action-note archive-action-<?php echo DUP_LITE_Extraction::ACTION_REMOVE_ALL_FILES; ?> no-display">
|
317 |
+
Note: Before extracting the package files, <b>all files and folders in the installation folder will be removed</b> except for folders that contain
|
318 |
+
WordPress installations or Duplicator backup folders. This option is recommended for those who want to delete all files related to old installations
|
319 |
+
or external applications.
|
320 |
+
</div>
|
321 |
+
<div class="archive-action-note archive-action-<?php echo DUP_LITE_Extraction::ACTION_REMOVE_WP_FILES; ?> no-display">
|
322 |
+
Note: Before extracting the package files, <b>all current WordPress core and content files and folders will be removed</b> (wp-include, wp-content ... )
|
323 |
+
This option is for those who want to avoid having old site media mixed with new but have other files/folders in the home path that they don't want to
|
324 |
+
delete.
|
325 |
+
</div>
|
326 |
+
</div>
|
327 |
+
</td>
|
328 |
+
</tr>
|
329 |
+
</table><br/><br/>
|
330 |
+
|
331 |
+
<div class="hdr-sub3">Advanced</div>
|
332 |
+
<table class="dupx-opts dupx-advopts">
|
333 |
+
<tr>
|
334 |
+
<td>Permissions:</td>
|
335 |
+
<td>
|
336 |
+
<input type="checkbox" name="set_file_perms" id="set_file_perms" value="1" onclick="jQuery('#file_perms_value').prop('disabled', !jQuery(this).is(':checked'));"/>
|
337 |
+
<label for="set_file_perms">All Files</label><input name="file_perms_value" id="file_perms_value" style="width:45px; margin-left:7px;" value="644" disabled>
|
338 |
+
<input type="checkbox" name="set_dir_perms" id="set_dir_perms" value="1" onclick="jQuery('#dir_perms_value').prop('disabled', !jQuery(this).is(':checked'));"/>
|
339 |
+
<label for="set_dir_perms">All Directories</label><input name="dir_perms_value" id="dir_perms_value" style="width:45px; margin-left:7px;" value="755" disabled>
|
340 |
+
</td>
|
341 |
+
</tr>
|
342 |
+
<tr>
|
343 |
+
<td>Safe Mode:</td>
|
344 |
+
<td>
|
345 |
+
<select name="exe_safe_mode" id="exe_safe_mode" onchange="DUPX.onSafeModeSwitch();" style="width:250px;">
|
346 |
+
<option value="0">Off</option>
|
347 |
+
<option value="1">Basic</option>
|
348 |
+
<option value="2">Advanced</option>
|
349 |
+
</select>
|
350 |
+
</td>
|
351 |
+
</tr>
|
352 |
+
<tr>
|
353 |
+
<td>Config Files:</td>
|
354 |
+
<td>
|
355 |
+
<select name="config_mode" id="config_mode" style="width:250px;">
|
356 |
+
<option value="NEW">Create New (recommended)</option>
|
357 |
+
<optgroup label="Advanced">
|
358 |
+
<option value="RESTORE">Restore Original</option>
|
359 |
+
<option value="IGNORE">Ignore All</option>
|
360 |
+
</optgroup>
|
361 |
+
</select> <br/>
|
362 |
+
<span class="sub-notes" style="font-weight: normal">
|
363 |
+
Controls how .htaccess, .user.ini and web.config are used.<br/>
|
364 |
+
These options are not applied until step 3 is ran.
|
365 |
+
<?php DUPX_View_Funcs::helpLink('step1', '[more info]'); ?>
|
366 |
+
</span>
|
367 |
+
</td>
|
368 |
+
</tr>
|
369 |
+
<tr>
|
370 |
+
<td>File Times:</td>
|
371 |
+
<td>
|
372 |
+
<input type="radio" name="zip_filetime" id="zip_filetime_now" value="current" checked="checked" />
|
373 |
+
<label class="radio" for="zip_filetime_now" title='Set the files current date time to now'>Current</label>
|
374 |
+
<input type="radio" name="zip_filetime" id="zip_filetime_orginal" value="original" />
|
375 |
+
<label class="radio" for="zip_filetime_orginal" title="Keep the files date time the same">Original</label>
|
376 |
+
</td>
|
377 |
+
</tr>
|
378 |
+
<tr>
|
379 |
+
<td>Logging:</td>
|
380 |
+
<td>
|
381 |
+
<input type="radio" name="logging" id="logging-light" value="<?php echo DUPX_Log::LV_DEFAULT; ?>" checked="true"> <label for="logging-light" class="radio">Light</label>
|
382 |
+
<input type="radio" name="logging" id="logging-detailed" value="<?php echo DUPX_Log::LV_DETAILED; ?>"> <label for="logging-detailed" class="radio">Detailed</label>
|
383 |
+
<input type="radio" name="logging" id="logging-debug" value="<?php echo DUPX_Log::LV_DEBUG; ?>"> <label for="logging-debug" class="radio">Debug</label>
|
384 |
+
<input type="radio" name="logging" id="logging-h-debug" value="<?php echo DUPX_Log::LV_HARD_DEBUG; ?>"> <label for="logging-h-debug" class="radio">Hard debug</label>
|
385 |
+
</td>
|
386 |
+
</tr>
|
387 |
+
<?php if (!$archive_config->isZipArchive()): ?>
|
388 |
+
<tr>
|
389 |
+
<td>Client-Kickoff:</td>
|
390 |
+
<td>
|
391 |
+
<input type="checkbox" name="clientside_kickoff" id="clientside_kickoff" value="1" checked/>
|
392 |
+
<label for="clientside_kickoff" style="font-weight: normal">Browser drives the archive engine.</label>
|
393 |
+
</td>
|
394 |
+
</tr>
|
395 |
+
<?php endif; ?>
|
396 |
+
<tr>
|
397 |
+
<td>Testing:</td>
|
398 |
+
<td>
|
399 |
+
<a href="javascript:void(0)" target="db-test" onclick="DUPX.openDBValidationWindow(); return false;">[Quick Database Connection Test]</a>
|
400 |
+
</td>
|
401 |
+
</tr>
|
402 |
+
</table>
|
403 |
+
</div><br/>
|
404 |
+
|
405 |
|
406 |
<!-- ====================================
|
407 |
VALIDATION
|
753 |
<br/><br/>
|
754 |
|
755 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
756 |
<?php if ($req_success && $arcCheck != 'Fail') : ?>
|
757 |
<div id="s1-warning-check">
|
758 |
<?php if ($is_overwrite_mode && $is_wordpress) { ?>
|
795 |
<input type="hidden" name="view" value="step2" />
|
796 |
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step2'); ?>">
|
797 |
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_attr($_POST['secure-pass']); ?>" />
|
798 |
+
<input type="hidden" name="secure-archive" value="<?php echo DUPX_U::esc_attr($_POST['secure-archive']); ?>" />
|
799 |
</form>
|
800 |
|
801 |
|
817 |
<input type="hidden" name="view" value="step2" />
|
818 |
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step2'); ?>">
|
819 |
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_attr($_POST['secure-pass']); ?>" />
|
820 |
+
<input type="hidden" name="secure-archive" value="<?php echo DUPX_U::esc_attr($_POST['secure-archive']); ?>" />
|
821 |
<input type="hidden" name="logging" id="ajax-logging" />
|
822 |
<input type="hidden" name="config_mode" id="ajax-config-mode" />
|
823 |
<input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="0" />
|
installer/dup-installer/views/view.s2.base.php
CHANGED
@@ -1,364 +1,366 @@
|
|
1 |
-
<?php
|
2 |
-
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
-
|
4 |
-
/** IDE HELPERS */
|
5 |
-
/* @var $GLOBALS['DUPX_AC'] DUPX_ArchiveConfig */
|
6 |
-
|
7 |
-
require_once($GLOBALS['DUPX_INIT'] . '/classes/config/class.archive.config.php');
|
8 |
-
|
9 |
-
//-- START OF VIEW STEP 2
|
10 |
-
$archive_config = DUPX_ArchiveConfig::getInstance();
|
11 |
-
|
12 |
-
$dbcharset = empty($archive_config->dbcharset)
|
13 |
-
? $GLOBALS['DBCHARSET_DEFAULT']
|
14 |
-
: $archive_config->dbcharset;
|
15 |
-
$_POST['dbcharset'] = isset($_POST['dbcharset']) ? trim($_POST['dbcharset']) : $dbcharset;
|
16 |
-
|
17 |
-
$dbcollate = empty($archive_config->dbcollation)
|
18 |
-
? $GLOBALS['DBCOLLATE_DEFAULT']
|
19 |
-
: $archive_config->dbcollation;
|
20 |
-
$_POST['dbcollate'] = isset($_POST['dbcollate']) ? trim($_POST['dbcollate']) : $dbcollate;
|
21 |
-
|
22 |
-
$_POST['exe_safe_mode'] = (isset($_POST['exe_safe_mode'])) ? DUPX_U::sanitize_text_field($_POST['exe_safe_mode']) : 0;
|
23 |
-
$is_dbtest_mode = isset($_POST['dbonlytest']) ? 1 : 0;
|
24 |
-
|
25 |
-
if (isset($_POST['logging'])) {
|
26 |
-
$post_logging = DUPX_U::sanitize_text_field($_POST['logging']);
|
27 |
-
$_POST['logging'] = trim($post_logging);
|
28 |
-
} else {
|
29 |
-
$_POST['logging'] = 1;
|
30 |
-
}
|
31 |
-
|
32 |
-
$cpnl_supported = DUPX_U::$on_php_53_plus ? true : false;
|
33 |
-
?>
|
34 |
-
|
35 |
-
<form id='s2-input-form' method="post" class="content-form" autocomplete="off" data-parsley-validate="true" data-parsley-excluded="input[type=hidden], [disabled], :hidden">
|
36 |
-
|
37 |
-
<?php if ($is_dbtest_mode) : ?>
|
38 |
-
<div class="hdr-main">Database Validation </div>
|
39 |
-
<?php else : ?>
|
40 |
-
<div class="dupx-logfile-link">
|
41 |
-
<?php DUPX_View_Funcs::installerLogLink(); ?>
|
42 |
-
</div>
|
43 |
-
<div class="hdr-main">
|
44 |
-
Step <span class="step">2</span> of 4: Install Database
|
45 |
-
<div class="sub-header">This step will install the database from the archive.</div>
|
46 |
-
</div>
|
47 |
-
<div class="s2-btngrp">
|
48 |
-
<input id="s2-basic-btn" type="button" value="Basic" class="active" onclick="DUPX.togglePanels('basic')" />
|
49 |
-
<input id="s2-cpnl-btn" type="button" value="cPanel" class="in-active" onclick="DUPX.togglePanels('cpanel')" />
|
50 |
-
</div>
|
51 |
-
<?php endif; ?>
|
52 |
-
|
53 |
-
<!-- POST PARAMS -->
|
54 |
-
<div class="dupx-debug">
|
55 |
-
<i>Step 2 - Page Load</i>
|
56 |
-
<input type="hidden" name="view" value="step2" />
|
57 |
-
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step2'); ?>">
|
58 |
-
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_attr($_POST['secure-pass']); ?>" />
|
59 |
-
<input type="hidden" name="
|
60 |
-
<input type="hidden" name="
|
61 |
-
<input type="hidden" name="
|
62 |
-
<input type="hidden" name="
|
63 |
-
<input type="hidden" name="
|
64 |
-
<input type="hidden" name="
|
65 |
-
<
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
<
|
91 |
-
|
92 |
-
|
93 |
-
<td><
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
<td><
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
<td><
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
<div class="
|
118 |
-
|
119 |
-
<
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
<
|
126 |
-
<input type="hidden" name="
|
127 |
-
<input type="hidden" name="
|
128 |
-
<input type="hidden" name="
|
129 |
-
<input type="hidden" name="
|
130 |
-
<input type="hidden" name="
|
131 |
-
<input type="hidden" name="
|
132 |
-
<input type="hidden" name="
|
133 |
-
<input type="hidden" name="
|
134 |
-
<input type="hidden" name="
|
135 |
-
<input type="hidden" name="
|
136 |
-
<input type="hidden" name="
|
137 |
-
<input type="hidden" name="
|
138 |
-
<input type="hidden" name="
|
139 |
-
<input type=
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
<
|
148 |
-
<
|
149 |
-
<
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
</
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
$('#s2-
|
179 |
-
$('#s2-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
$('#s2-
|
187 |
-
$('#s2-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
var
|
203 |
-
|
204 |
-
var
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
$('#dlg-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
var
|
240 |
-
|
241 |
-
|
242 |
-
var
|
243 |
-
var
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
}
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
status
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
status += "<
|
290 |
-
|
291 |
-
status += "
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
$("#ajax-
|
308 |
-
$("#ajax-
|
309 |
-
$("#ajax-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
$("#ajax-
|
315 |
-
$("#ajax-
|
316 |
-
$("#ajax-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
<?php
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
status
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
status += "<
|
347 |
-
|
348 |
-
status += "
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
|
|
|
|
364 |
</script>
|
1 |
+
<?php
|
2 |
+
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
+
|
4 |
+
/** IDE HELPERS */
|
5 |
+
/* @var $GLOBALS['DUPX_AC'] DUPX_ArchiveConfig */
|
6 |
+
|
7 |
+
require_once($GLOBALS['DUPX_INIT'] . '/classes/config/class.archive.config.php');
|
8 |
+
|
9 |
+
//-- START OF VIEW STEP 2
|
10 |
+
$archive_config = DUPX_ArchiveConfig::getInstance();
|
11 |
+
|
12 |
+
$dbcharset = empty($archive_config->dbcharset)
|
13 |
+
? $GLOBALS['DBCHARSET_DEFAULT']
|
14 |
+
: $archive_config->dbcharset;
|
15 |
+
$_POST['dbcharset'] = isset($_POST['dbcharset']) ? trim($_POST['dbcharset']) : $dbcharset;
|
16 |
+
|
17 |
+
$dbcollate = empty($archive_config->dbcollation)
|
18 |
+
? $GLOBALS['DBCOLLATE_DEFAULT']
|
19 |
+
: $archive_config->dbcollation;
|
20 |
+
$_POST['dbcollate'] = isset($_POST['dbcollate']) ? trim($_POST['dbcollate']) : $dbcollate;
|
21 |
+
|
22 |
+
$_POST['exe_safe_mode'] = (isset($_POST['exe_safe_mode'])) ? DUPX_U::sanitize_text_field($_POST['exe_safe_mode']) : 0;
|
23 |
+
$is_dbtest_mode = isset($_POST['dbonlytest']) ? 1 : 0;
|
24 |
+
|
25 |
+
if (isset($_POST['logging'])) {
|
26 |
+
$post_logging = DUPX_U::sanitize_text_field($_POST['logging']);
|
27 |
+
$_POST['logging'] = trim($post_logging);
|
28 |
+
} else {
|
29 |
+
$_POST['logging'] = 1;
|
30 |
+
}
|
31 |
+
|
32 |
+
$cpnl_supported = DUPX_U::$on_php_53_plus ? true : false;
|
33 |
+
?>
|
34 |
+
|
35 |
+
<form id='s2-input-form' method="post" class="content-form" autocomplete="off" data-parsley-validate="true" data-parsley-excluded="input[type=hidden], [disabled], :hidden">
|
36 |
+
|
37 |
+
<?php if ($is_dbtest_mode) : ?>
|
38 |
+
<div class="hdr-main">Database Validation </div>
|
39 |
+
<?php else : ?>
|
40 |
+
<div class="dupx-logfile-link">
|
41 |
+
<?php DUPX_View_Funcs::installerLogLink(); ?>
|
42 |
+
</div>
|
43 |
+
<div class="hdr-main">
|
44 |
+
Step <span class="step">2</span> of 4: Install Database
|
45 |
+
<div class="sub-header">This step will install the database from the archive.</div>
|
46 |
+
</div>
|
47 |
+
<div class="s2-btngrp">
|
48 |
+
<input id="s2-basic-btn" type="button" value="Basic" class="active" onclick="DUPX.togglePanels('basic')" />
|
49 |
+
<input id="s2-cpnl-btn" type="button" value="cPanel" class="in-active" onclick="DUPX.togglePanels('cpanel')" />
|
50 |
+
</div>
|
51 |
+
<?php endif; ?>
|
52 |
+
|
53 |
+
<!-- POST PARAMS -->
|
54 |
+
<div class="dupx-debug">
|
55 |
+
<i>Step 2 - Page Load</i>
|
56 |
+
<input type="hidden" name="view" value="step2" />
|
57 |
+
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step2'); ?>">
|
58 |
+
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_attr($_POST['secure-pass']); ?>" />
|
59 |
+
<input type="hidden" name="secure-archive" value="<?php echo DUPX_U::esc_attr($_POST['secure-archive']); ?>" />
|
60 |
+
<input type="hidden" name="logging" id="logging" value="<?php echo DUPX_U::esc_attr($_POST['logging']); ?>" />
|
61 |
+
<input type="hidden" name="dbcolsearchreplace"/>
|
62 |
+
<input type="hidden" name="ctrl_action" value="ctrl-step2" />
|
63 |
+
<input type="hidden" name="ctrl_csrf_token" value="<?php echo DUPX_CSRF::generate('ctrl-step2'); ?>">
|
64 |
+
<input type="hidden" name="view_mode" id="s2-input-form-mode" />
|
65 |
+
<input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="<?php echo DUPX_U::esc_attr($_POST['exe_safe_mode']); ?>"/>
|
66 |
+
<textarea name="dbtest-response" id="debug-dbtest-json"></textarea>
|
67 |
+
</div>
|
68 |
+
|
69 |
+
<!-- BASIC TAB -->
|
70 |
+
<div id="s2-basic-pane">
|
71 |
+
<?php require_once('view.s2.basic.php'); ?>
|
72 |
+
</div>
|
73 |
+
|
74 |
+
<!-- CPANEL TAB -->
|
75 |
+
<div id="s2-cpnl-pane" style="display: none">
|
76 |
+
<?php require_once('view.s2.cpnl.lite.php'); ?>
|
77 |
+
</div>
|
78 |
+
|
79 |
+
<!-- VALIDATION -->
|
80 |
+
<?php require_once('view.s2.dbtest.php'); ?>
|
81 |
+
</form>
|
82 |
+
|
83 |
+
|
84 |
+
<!-- CONFIRM DIALOG -->
|
85 |
+
<div id="dialog-confirm" title="Install Confirmation" style="display:none">
|
86 |
+
<div style="padding: 10px 0 25px 0">
|
87 |
+
<b>Run installer with these settings?</b>
|
88 |
+
</div>
|
89 |
+
|
90 |
+
<b>Database Settings:</b><br/>
|
91 |
+
<table style="margin-left:20px">
|
92 |
+
<tr>
|
93 |
+
<td><b>Server:</b></td>
|
94 |
+
<td><i id="dlg-dbhost"></i></td>
|
95 |
+
</tr>
|
96 |
+
<tr>
|
97 |
+
<td><b>Name:</b></td>
|
98 |
+
<td><i id="dlg-dbname"></i></td>
|
99 |
+
</tr>
|
100 |
+
<tr>
|
101 |
+
<td><b>User:</b></td>
|
102 |
+
<td><i id="dlg-dbuser"></i></td>
|
103 |
+
</tr>
|
104 |
+
</table>
|
105 |
+
<br/><br/>
|
106 |
+
|
107 |
+
<small><i class="fa fa-exclamation-triangle fa-sm"></i> WARNING: Be sure these database parameters are correct! Entering the wrong information WILL overwrite an existing database.
|
108 |
+
Make sure to have backups of all your data before proceeding.</small><br/>
|
109 |
+
</div>
|
110 |
+
|
111 |
+
|
112 |
+
<!-- =========================================
|
113 |
+
VIEW: STEP 2 - AJAX RESULT
|
114 |
+
Auto Posts to view.step3.php -->
|
115 |
+
<form id='s2-result-form' method="post" class="content-form" style="display:none" autocomplete="off">
|
116 |
+
|
117 |
+
<div class="dupx-logfile-link"><?php DUPX_View_Funcs::installerLogLink(); ?></div>
|
118 |
+
<div class="hdr-main">
|
119 |
+
Step <span class="step">2</span> of 4: Install Database
|
120 |
+
<div class="sub-header">This step will install the database from the archive.</div>
|
121 |
+
</div>
|
122 |
+
|
123 |
+
<!-- POST PARAMS -->
|
124 |
+
<div class="dupx-debug">
|
125 |
+
<i>Step 2 - AJAX Response</i>
|
126 |
+
<input type="hidden" name="view" value="step3" />
|
127 |
+
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step3'); ?>">
|
128 |
+
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_attr($_POST['secure-pass']); ?>" />
|
129 |
+
<input type="hidden" name="secure-archive" value="<?php echo DUPX_U::esc_attr($_POST['secure-archive']); ?>" />
|
130 |
+
<input type="hidden" name="logging" id="ajax-logging" />
|
131 |
+
<input type="hidden" name="dbaction" id="ajax-dbaction" />
|
132 |
+
<input type="hidden" name="dbhost" id="ajax-dbhost" />
|
133 |
+
<input type="hidden" name="dbname" id="ajax-dbname" />
|
134 |
+
<input type="hidden" name="dbuser" id="ajax-dbuser" />
|
135 |
+
<input type="hidden" name="dbpass" id="ajax-dbpass" />
|
136 |
+
<input type="hidden" name="dbcharset" id="ajax-dbcharset" />
|
137 |
+
<input type="hidden" name="dbcollate" id="ajax-dbcollate" />
|
138 |
+
<input type="hidden" name="exe_safe_mode" id="ajax-exe-safe-mode" />
|
139 |
+
<input type="hidden" name="config_mode" value="<?php echo DUPX_U::esc_attr($_POST['config_mode']); ?>" />
|
140 |
+
<input type="hidden" name="json" id="ajax-json" />
|
141 |
+
<input type='submit' value='manual submit'>
|
142 |
+
</div>
|
143 |
+
|
144 |
+
<!-- PROGRESS BAR -->
|
145 |
+
<div id="progress-area">
|
146 |
+
<div style="width:500px; margin:auto">
|
147 |
+
<div style="font-size:1.7em; margin-bottom:20px"><i class="fas fa-circle-notch fa-spin"></i> Installing Database</div>
|
148 |
+
<div id="progress-bar"></div>
|
149 |
+
<h3> Please Wait...</h3><br/><br/>
|
150 |
+
<i>Keep this window open during the creation process.</i><br/>
|
151 |
+
<i>This can take several minutes.</i>
|
152 |
+
</div>
|
153 |
+
</div>
|
154 |
+
|
155 |
+
<!-- AJAX SYSTEM ERROR -->
|
156 |
+
<div id="ajaxerr-area" style="display:none">
|
157 |
+
<p>Please try again an issue has occurred.</p>
|
158 |
+
<div style="padding: 0px 10px 10px 0px;">
|
159 |
+
<div id="ajaxerr-data">An unknown issue has occurred with the file and database setup process. Please see the <?php DUPX_View_Funcs::installerLogLink(); ?> file for more details.</div>
|
160 |
+
<div style="text-align:center; margin:10px auto 0px auto">
|
161 |
+
<input type="button" onclick="$('#s2-result-form').hide(); $('#s2-input-form').show(200); $('#dbchunk_retry').val(0);" value="« Try Again" class="default-btn" /><br/><br/>
|
162 |
+
<i style='font-size:11px'>See online help for more details at <a href='https://snapcreek.com/' target='_blank'>snapcreek.com</a></i>
|
163 |
+
</div>
|
164 |
+
</div>
|
165 |
+
</div>
|
166 |
+
</form>
|
167 |
+
|
168 |
+
<script>
|
169 |
+
/**
|
170 |
+
* Toggles the cpanel Login area */
|
171 |
+
DUPX.togglePanels = function (pane)
|
172 |
+
{
|
173 |
+
$('#s2-basic-pane, #s2-cpnl-pane').hide();
|
174 |
+
$('#s2-basic-btn, #s2-cpnl-btn').removeClass('active in-active');
|
175 |
+
var cpnlSupport = <?php echo var_export($cpnl_supported); ?>
|
176 |
+
|
177 |
+
if (pane == 'basic') {
|
178 |
+
$('#s2-input-form-mode').val('basic');
|
179 |
+
$('#s2-basic-pane').show();
|
180 |
+
$('#s2-basic-btn').addClass('active');
|
181 |
+
$('#s2-cpnl-btn').addClass('in-active');
|
182 |
+
if (! cpnlSupport) {
|
183 |
+
$('#s2-opts-hdr-basic, div.footer-buttons').show();
|
184 |
+
}
|
185 |
+
} else {
|
186 |
+
$('#s2-input-form-mode').val('cpnl');
|
187 |
+
$('#s2-cpnl-pane').show();
|
188 |
+
$('#s2-cpnl-btn').addClass('active');
|
189 |
+
$('#s2-basic-btn').addClass('in-active');
|
190 |
+
if (! cpnlSupport) {
|
191 |
+
$('#s2-opts-hdr-cpnl, div.footer-buttons').hide();
|
192 |
+
}
|
193 |
+
}
|
194 |
+
}
|
195 |
+
|
196 |
+
|
197 |
+
/**
|
198 |
+
* Open an in-line confirm dialog*/
|
199 |
+
DUPX.confirmDeployment= function ()
|
200 |
+
{
|
201 |
+
var dbhost = $("#dbhost").val();
|
202 |
+
var dbname = $("#dbname").val();
|
203 |
+
var dbuser = $("#dbuser").val();
|
204 |
+
var dbchunk = $("#dbchunk").val();
|
205 |
+
|
206 |
+
var $formInput = $('#s2-input-form');
|
207 |
+
$formInput.parsley().validate();
|
208 |
+
if (!$formInput.parsley().isValid()) {
|
209 |
+
return;
|
210 |
+
}
|
211 |
+
|
212 |
+
$( "#dialog-confirm" ).dialog({
|
213 |
+
resizable: false,
|
214 |
+
height: "auto",
|
215 |
+
width: 550,
|
216 |
+
modal: true,
|
217 |
+
position: { my: 'top', at: 'top+150' },
|
218 |
+
buttons: {
|
219 |
+
"OK": function() {
|
220 |
+
DUPX.runDeployment();
|
221 |
+
$(this).dialog("close");
|
222 |
+
},
|
223 |
+
Cancel: function() {
|
224 |
+
$(this).dialog("close");
|
225 |
+
}
|
226 |
+
}
|
227 |
+
});
|
228 |
+
|
229 |
+
$('#dlg-dbhost').html(dbhost);
|
230 |
+
$('#dlg-dbname').html(dbname);
|
231 |
+
$('#dlg-dbuser').html(dbuser);
|
232 |
+
}
|
233 |
+
|
234 |
+
/**
|
235 |
+
* Performs Ajax post to extract files and create db
|
236 |
+
* Timeout (10000000 = 166 minutes) */
|
237 |
+
DUPX.runDeployment = function (data)
|
238 |
+
{
|
239 |
+
var $formInput = $('#s2-input-form');
|
240 |
+
var $formResult = $('#s2-result-form');
|
241 |
+
var local_data = data;
|
242 |
+
var dbhost = $("#dbhost").val();
|
243 |
+
var dbname = $("#dbname").val();
|
244 |
+
var dbuser = $("#dbuser").val();
|
245 |
+
var dbchunk = $("#dbchunk").is(':checked');
|
246 |
+
|
247 |
+
if(local_data === undefined && dbchunk == true){
|
248 |
+
local_data = {
|
249 |
+
continue_chunking: dbchunk == true,
|
250 |
+
pos: 0,
|
251 |
+
pass: 0,
|
252 |
+
first_chunk: 1,
|
253 |
+
};
|
254 |
+
}else if(!dbchunk){
|
255 |
+
local_data = {};
|
256 |
+
}
|
257 |
+
var new_data = (local_data !== undefined) ? '&'+$.param(local_data) : '';
|
258 |
+
|
259 |
+
$.ajax({
|
260 |
+
type: "POST",
|
261 |
+
timeout: 10000000,
|
262 |
+
url: window.location.href,
|
263 |
+
data: $formInput.serialize()+new_data,
|
264 |
+
beforeSend: function () {
|
265 |
+
DUPX.showProgressBar();
|
266 |
+
$formInput.hide();
|
267 |
+
$formResult.show();
|
268 |
+
},
|
269 |
+
success: function (respData, textStatus, xhr) {
|
270 |
+
try {
|
271 |
+
var data = DUPX.parseJSON(respData);
|
272 |
+
} catch(err) {
|
273 |
+
console.error(err);
|
274 |
+
console.error('JSON parse failed for response data: ' + respData);
|
275 |
+
var status = "<b>Server Code:</b> " + xhr.status + "<br/>";
|
276 |
+
status += "<b>Status:</b> " + xhr.statusText + "<br/>";
|
277 |
+
status += "<b>Response:</b> " + xhr.responseText + "<hr/>";
|
278 |
+
|
279 |
+
if(textStatus && textStatus.toLowerCase() == "timeout" || textStatus.toLowerCase() == "service unavailable") {
|
280 |
+
status += "<b>Recommendation:</b><br/>";
|
281 |
+
status += "To resolve this problem please follow the instructions showing <a target='_blank' href='https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-100-q'>in the FAQ</a>.<br/><br/>";
|
282 |
+
}
|
283 |
+
else if((xhr.status == 403) || (xhr.status == 500)) {
|
284 |
+
status += "<b>Recommendation</b><br/>";
|
285 |
+
status += "See <a target='_blank' href='https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-120-q'>this section</a> of the Technical FAQ for possible resolutions.<br/><br/>"
|
286 |
+
}
|
287 |
+
else if(xhr.status == 0) {
|
288 |
+
status += "<b>Recommendation</b><br/>";
|
289 |
+
status += "This may be a server timeout and performing a 'Manual Extract' install can avoid timeouts. See <a target='_blank' href='https://snapcreek.com/duplicator/docs/faqs-tech/?reload=1#faq-installer-015-q'>this section</a> of the FAQ for a description of how to do that.<br/><br/>"
|
290 |
+
} else {
|
291 |
+
status += "<b>Additional Troubleshooting Tips:</b><br/> ";
|
292 |
+
status += "» <a target='_blank' href='https://snapcreek.com/duplicator/docs/'>Help Resources</a><br/>";
|
293 |
+
status += "» <a target='_blank' href='https://snapcreek.com/duplicator/docs/faqs-tech/'>Technical FAQ</a>";
|
294 |
+
}
|
295 |
+
|
296 |
+
$('#ajaxerr-data').html(status);
|
297 |
+
DUPX.hideProgressBar();
|
298 |
+
return false;
|
299 |
+
}
|
300 |
+
|
301 |
+
if(local_data.continue_chunking){
|
302 |
+
DUPX.runDeployment(data);
|
303 |
+
return;
|
304 |
+
}
|
305 |
+
if (typeof (data) != 'undefined' && data.pass == 1)
|
306 |
+
{
|
307 |
+
$("#ajax-dbaction").val($("#dbaction").val());
|
308 |
+
$("#ajax-dbhost").val(dbhost);
|
309 |
+
$("#ajax-dbname").val(dbname);
|
310 |
+
$("#ajax-dbuser").val(dbuser);
|
311 |
+
$("#ajax-dbpass").val($("#dbpass").val());
|
312 |
+
|
313 |
+
//Advanced Opts
|
314 |
+
$("#ajax-dbcharset").val($("#dbcharset").val());
|
315 |
+
$("#ajax-dbcollate").val($("#dbcollate").val());
|
316 |
+
$("#ajax-logging").val($("#logging").val());
|
317 |
+
$("#ajax-exe-safe-mode").val($("#exe-safe-mode").val());
|
318 |
+
$("#ajax-json").val(escape(JSON.stringify(data)));
|
319 |
+
|
320 |
+
<?php if (!DUPX_Log::isLevel(DUPX_Log::LV_DEBUG)) : ?>
|
321 |
+
setTimeout(function () {$formResult.submit();}, 1000);
|
322 |
+
<?php endif; ?>
|
323 |
+
$('#progress-area').fadeOut(700);
|
324 |
+
} else {
|
325 |
+
if (data.error_message) {
|
326 |
+
$('#ajaxerr-data').html(data.error_message);
|
327 |
+
}
|
328 |
+
DUPX.hideProgressBar();
|
329 |
+
}
|
330 |
+
},
|
331 |
+
error: function (xhr, textStatus) {
|
332 |
+
var status = "<b>Server Code:</b> " + xhr.status + "<br/>";
|
333 |
+
status += "<b>Status:</b> " + xhr.statusText + "<br/>";
|
334 |
+
status += "<b>Response:</b> " + xhr.responseText + "<hr/>";
|
335 |
+
|
336 |
+
if(textStatus && textStatus.toLowerCase() == "timeout" || textStatus.toLowerCase() == "service unavailable") {
|
337 |
+
status += "<b>Recommendation:</b><br/>";
|
338 |
+
status += "To resolve this problem please follow the instructions showing <a target='_blank' href='https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-100-q'>in the FAQ</a>.<br/><br/>";
|
339 |
+
}
|
340 |
+
else if((xhr.status == 403) || (xhr.status == 500)) {
|
341 |
+
status += "<b>Recommendation</b><br/>";
|
342 |
+
status += "See <a target='_blank' href='https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-120-q'>this section</a> of the Technical FAQ for possible resolutions.<br/><br/>"
|
343 |
+
}
|
344 |
+
else if(xhr.status == 0) {
|
345 |
+
status += "<b>Recommendation</b><br/>";
|
346 |
+
status += "This may be a server timeout and performing a 'Manual Extract' install can avoid timeouts. See <a target='_blank' href='https://snapcreek.com/duplicator/docs/faqs-tech/?reload=1#faq-installer-015-q'>this section</a> of the FAQ for a description of how to do that.<br/><br/>"
|
347 |
+
} else {
|
348 |
+
status += "<b>Additional Troubleshooting Tips:</b><br/> ";
|
349 |
+
status += "» <a target='_blank' href='https://snapcreek.com/duplicator/docs/'>Help Resources</a><br/>";
|
350 |
+
status += "» <a target='_blank' href='https://snapcreek.com/duplicator/docs/faqs-tech/'>Technical FAQ</a>";
|
351 |
+
}
|
352 |
+
|
353 |
+
$('#ajaxerr-data').html(status);
|
354 |
+
DUPX.hideProgressBar();
|
355 |
+
}
|
356 |
+
});
|
357 |
+
};
|
358 |
+
|
359 |
+
//DOCUMENT LOAD
|
360 |
+
$(document).ready(function () {
|
361 |
+
//Init
|
362 |
+
DUPX.togglePanels("basic");
|
363 |
+
DUPX.initToggle();
|
364 |
+
|
365 |
+
});
|
366 |
</script>
|
installer/dup-installer/views/view.s2.basic.php
CHANGED
@@ -55,6 +55,9 @@ BASIC PANEL -->
|
|
55 |
<a href="javascript:void(0)"><i class="fa fa-minus-square"></i>Setup</a>
|
56 |
</div>
|
57 |
<div id="s2-db-basic">
|
|
|
|
|
|
|
58 |
<?php if ($is_overwrite_mode) : ?>
|
59 |
<div id="s2-db-basic-overwrite" class="gray-panel" >
|
60 |
<b style='color:maroon'>Ready to connect to existing sites database? </b><br/>
|
@@ -81,7 +84,9 @@ BASIC PANEL -->
|
|
81 |
<?php if ($is_standard_mode) : ?>
|
82 |
<option value="create">Create New Database</option>
|
83 |
<?php endif; ?>
|
84 |
-
<option value="empty" selected>
|
|
|
|
|
85 |
</select>
|
86 |
</td>
|
87 |
</tr>
|
@@ -120,26 +125,8 @@ BASIC PANEL -->
|
|
120 |
</tr>
|
121 |
</table>
|
122 |
</div>
|
123 |
-
<br
|
124 |
|
125 |
-
<!-- =========================================
|
126 |
-
BASIC: DB VALIDATION -->
|
127 |
-
<div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s2-dbtest-area-basic">
|
128 |
-
<a href="javascript:void(0)"><i class="fa fa-minus-square"></i>Validation</a>
|
129 |
-
</div>
|
130 |
-
|
131 |
-
<div id="s2-dbtest-area-basic" class="s2-dbtest-area hdr-sub1-area">
|
132 |
-
<div id="s2-dbrefresh-basic">
|
133 |
-
<a href="javascript:void(0)" onclick="DUPX.testDBConnect()"><i class="fa fa-sync"></i> Retry Test</a>
|
134 |
-
</div>
|
135 |
-
<div style="clear:both"></div>
|
136 |
-
<div id="s2-dbtest-hb-basic" class="s2-dbtest-hb">
|
137 |
-
<div class="message">
|
138 |
-
To continue click the 'Test Database' button <br/>
|
139 |
-
to perform a database integrity check.
|
140 |
-
</div>
|
141 |
-
</div>
|
142 |
-
</div>
|
143 |
|
144 |
<?php if (!$is_dbtest_mode) : ?>
|
145 |
<!-- =========================================
|
@@ -208,12 +195,32 @@ BASIC: DB VALIDATION -->
|
|
208 |
</td>
|
209 |
</tr>
|
210 |
</table>
|
211 |
-
</div
|
212 |
-
<br/><br/>
|
213 |
<?php endif; ?>
|
214 |
|
215 |
|
216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
<br/><br/><br/>
|
218 |
<br/><br/><br/>
|
219 |
|
55 |
<a href="javascript:void(0)"><i class="fa fa-minus-square"></i>Setup</a>
|
56 |
</div>
|
57 |
<div id="s2-db-basic">
|
58 |
+
<div class="s2-db-basic-title">
|
59 |
+
Database Connection
|
60 |
+
</div>
|
61 |
<?php if ($is_overwrite_mode) : ?>
|
62 |
<div id="s2-db-basic-overwrite" class="gray-panel" >
|
63 |
<b style='color:maroon'>Ready to connect to existing sites database? </b><br/>
|
84 |
<?php if ($is_standard_mode) : ?>
|
85 |
<option value="create">Create New Database</option>
|
86 |
<?php endif; ?>
|
87 |
+
<option value="empty" selected>Remove All Data</option>
|
88 |
+
<option value="null" disabled="disabled">Backup and Rename Existing Tables (Pro Only)</option>
|
89 |
+
<option value="null" disabled="disabled">Manual SQL Execution (Pro Only)</option>
|
90 |
</select>
|
91 |
</td>
|
92 |
</tr>
|
125 |
</tr>
|
126 |
</table>
|
127 |
</div>
|
128 |
+
<br/>
|
129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
|
131 |
<?php if (!$is_dbtest_mode) : ?>
|
132 |
<!-- =========================================
|
195 |
</td>
|
196 |
</tr>
|
197 |
</table>
|
198 |
+
</div><br/>
|
|
|
199 |
<?php endif; ?>
|
200 |
|
201 |
|
202 |
|
203 |
+
<!-- =========================================
|
204 |
+
BASIC: DB VALIDATION -->
|
205 |
+
<div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s2-dbtest-area-basic">
|
206 |
+
<a href="javascript:void(0)"><i class="fa fa-minus-square"></i>Validation</a>
|
207 |
+
</div>
|
208 |
+
|
209 |
+
<div id="s2-dbtest-area-basic" class="s2-dbtest-area hdr-sub1-area">
|
210 |
+
<div id="s2-dbrefresh-basic">
|
211 |
+
<a href="javascript:void(0)" onclick="DUPX.testDBConnect()"><i class="fa fa-sync"></i> Retry Test</a>
|
212 |
+
</div>
|
213 |
+
<div style="clear:both"></div>
|
214 |
+
<div id="s2-dbtest-hb-basic" class="s2-dbtest-hb">
|
215 |
+
<div class="message">
|
216 |
+
To continue click the 'Test Database' button <br/>
|
217 |
+
to perform a database integrity check.
|
218 |
+
</div>
|
219 |
+
</div>
|
220 |
+
</div>
|
221 |
+
|
222 |
+
|
223 |
+
|
224 |
<br/><br/><br/>
|
225 |
<br/><br/><br/>
|
226 |
|
installer/dup-installer/views/view.s3.php
CHANGED
@@ -1,613 +1,615 @@
|
|
1 |
-
<?php
|
2 |
-
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
-
/** IDE HELPERS */
|
4 |
-
/* @var $GLOBALS['DUPX_AC'] DUPX_ArchiveConfig */
|
5 |
-
|
6 |
-
//-- START OF VIEW STEP 3
|
7 |
-
$_POST['dbaction'] = isset($_POST['dbaction']) ? DUPX_U::sanitize_text_field($_POST['dbaction']) : 'create';
|
8 |
-
|
9 |
-
if (isset($_POST['dbhost'])) {
|
10 |
-
$post_db_host = DUPX_U::sanitize_text_field($_POST['dbhost']);
|
11 |
-
$_POST['dbhost'] = trim($post_db_host);
|
12 |
-
} else {
|
13 |
-
$_POST['dbhost'] = null;
|
14 |
-
}
|
15 |
-
|
16 |
-
if (isset($_POST['dbname'])) {
|
17 |
-
$post_db_name = DUPX_U::sanitize_text_field($_POST['dbname']);
|
18 |
-
$_POST['dbname'] = trim($post_db_name);
|
19 |
-
} else {
|
20 |
-
$_POST['dbname'] = null;
|
21 |
-
}
|
22 |
-
|
23 |
-
if (isset($_POST['dbuser'])) {
|
24 |
-
$post_db_user = DUPX_U::sanitize_text_field($_POST['dbuser']);
|
25 |
-
$_POST['dbuser'] = trim($post_db_user);
|
26 |
-
} else {
|
27 |
-
$_POST['dbuser'] = null;
|
28 |
-
}
|
29 |
-
|
30 |
-
if (isset($_POST['dbpass'])) {
|
31 |
-
$_POST['dbpass'] = $_POST['dbpass'];
|
32 |
-
} else {
|
33 |
-
$_POST['dbpass'] = null;
|
34 |
-
}
|
35 |
-
|
36 |
-
if (isset($_POST['dbhost'])) {
|
37 |
-
$post_db_host = DUPX_U::sanitize_text_field($_POST['dbhost']);
|
38 |
-
$_POST['dbport'] = parse_url($post_db_host, PHP_URL_PORT);
|
39 |
-
} else {
|
40 |
-
$_POST['dbport'] = 3306;
|
41 |
-
}
|
42 |
-
|
43 |
-
if (!empty($_POST['dbport'])) {
|
44 |
-
$_POST['dbport'] = DUPX_U::sanitize_text_field($_POST['dbport']);
|
45 |
-
} else {
|
46 |
-
$_POST['dbport'] = 3306;
|
47 |
-
}
|
48 |
-
|
49 |
-
$_POST['exe_safe_mode'] = isset($_POST['exe_safe_mode']) ? DUPX_U::sanitize_text_field($_POST['exe_safe_mode']) : 0;
|
50 |
-
|
51 |
-
$dbh = DUPX_DB::connect($_POST['dbhost'], $_POST['dbuser'], $_POST['dbpass'], $_POST['dbname'], $_POST['dbport']);
|
52 |
-
|
53 |
-
$all_tables = DUPX_DB::getTables($dbh);
|
54 |
-
$active_plugins = DUPX_U::getActivePlugins($dbh);
|
55 |
-
$old_path = $GLOBALS['DUPX_AC']->wproot;
|
56 |
-
|
57 |
-
// RSR TODO: need to do the path too?
|
58 |
-
$new_path = $GLOBALS['DUPX_ROOT'];
|
59 |
-
$new_path = ((strrpos($old_path, '/') + 1) == strlen($old_path)) ? DUPX_U::addSlash($new_path) : $new_path;
|
60 |
-
$empty_schedule_display = (DUPX_U::$on_php_53_plus) ? 'table-row' : 'none';
|
61 |
-
?>
|
62 |
-
|
63 |
-
<!-- =========================================
|
64 |
-
VIEW: STEP 3- INPUT -->
|
65 |
-
<form id='s3-input-form' method="post" class="content-form" autocomplete="off">
|
66 |
-
|
67 |
-
<div class="logfile-link">
|
68 |
-
<?php DUPX_View_Funcs::installerLogLink(); ?>
|
69 |
-
</div>
|
70 |
-
<div class="hdr-main">
|
71 |
-
Step <span class="step">3</span> of 4: Update Data
|
72 |
-
<div class="sub-header">This step will update the database and config files to match your new sites values.</div>
|
73 |
-
</div>
|
74 |
-
|
75 |
-
<?php
|
76 |
-
if ($_POST['dbaction'] == 'manual') {
|
77 |
-
echo '<div class="dupx-notice s3-manaual-msg">Manual SQL execution is enabled</div>';
|
78 |
-
}
|
79 |
-
?>
|
80 |
-
|
81 |
-
<!-- POST PARAMS -->
|
82 |
-
<div class="dupx-debug">
|
83 |
-
<i>Step 3 - Page Load</i>
|
84 |
-
<input type="hidden" name="ctrl_action" value="ctrl-step3" />
|
85 |
-
<input type="hidden" name="ctrl_csrf_token" value="<?php echo DUPX_CSRF::generate('ctrl-step3'); ?>">
|
86 |
-
<input type="hidden" name="view" value="step3" />
|
87 |
-
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step3'); ?>">
|
88 |
-
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_attr($_POST['secure-pass']); ?>" />
|
89 |
-
<input type="hidden" name="
|
90 |
-
<input type="hidden" name="
|
91 |
-
<input type="hidden" name="
|
92 |
-
<input type="hidden" name="
|
93 |
-
<input type="hidden" name="
|
94 |
-
<input type="hidden" name="
|
95 |
-
<input type="hidden" name="
|
96 |
-
<input type="hidden" name="
|
97 |
-
<input type="hidden" name="
|
98 |
-
<input type="hidden" name="
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
<td
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
<td>
|
113 |
-
|
114 |
-
<
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
<td
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
<li><a href="#tabs-
|
153 |
-
<li><a href="#tabs-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
<div
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
<td
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
<td>
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
'
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
<td
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
<td
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
<td
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
<td
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
<
|
212 |
-
|
213 |
-
|
214 |
-
<td style="
|
215 |
-
|
216 |
-
<
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
<td>
|
222 |
-
|
223 |
-
<
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
<td>
|
229 |
-
|
230 |
-
<
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
<
|
240 |
-
|
241 |
-
<a href="javascript:void(0)" onclick="$('#tables option').prop('selected',
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
<a href="javascript:void(0)" onclick="$('#plugins option').prop('selected',
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
<
|
273 |
-
<input type="checkbox" name="
|
274 |
-
<input type="checkbox" name="
|
275 |
-
|
276 |
-
|
277 |
-
<
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
$root_path
|
297 |
-
$
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
<td>
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
<td>
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
<td>
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
</
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
<div class="
|
376 |
-
|
377 |
-
<
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
<
|
384 |
-
<input type="hidden" name="
|
385 |
-
<input type="hidden" name="
|
386 |
-
<input type="hidden" name="
|
387 |
-
<input type="hidden" name="
|
388 |
-
<input type="hidden" name="
|
389 |
-
<input type="hidden" name="
|
390 |
-
<input type=
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
<
|
399 |
-
<
|
400 |
-
<
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
</
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
status
|
502 |
-
status += "<b>
|
503 |
-
status += "
|
504 |
-
status += "
|
505 |
-
status += "-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
$("#ajax-
|
514 |
-
|
515 |
-
|
516 |
-
<?php
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
}
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
status
|
526 |
-
status += "<b>
|
527 |
-
status += "
|
528 |
-
status += "
|
529 |
-
status += "-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
}
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
var
|
544 |
-
newVal = newVal.
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
msg
|
556 |
-
msg += '
|
557 |
-
msg += '
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
$(
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
msg
|
573 |
-
msg += '
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
$(
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
DUPX.
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
|
|
|
1 |
+
<?php
|
2 |
+
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
+
/** IDE HELPERS */
|
4 |
+
/* @var $GLOBALS['DUPX_AC'] DUPX_ArchiveConfig */
|
5 |
+
|
6 |
+
//-- START OF VIEW STEP 3
|
7 |
+
$_POST['dbaction'] = isset($_POST['dbaction']) ? DUPX_U::sanitize_text_field($_POST['dbaction']) : 'create';
|
8 |
+
|
9 |
+
if (isset($_POST['dbhost'])) {
|
10 |
+
$post_db_host = DUPX_U::sanitize_text_field($_POST['dbhost']);
|
11 |
+
$_POST['dbhost'] = trim($post_db_host);
|
12 |
+
} else {
|
13 |
+
$_POST['dbhost'] = null;
|
14 |
+
}
|
15 |
+
|
16 |
+
if (isset($_POST['dbname'])) {
|
17 |
+
$post_db_name = DUPX_U::sanitize_text_field($_POST['dbname']);
|
18 |
+
$_POST['dbname'] = trim($post_db_name);
|
19 |
+
} else {
|
20 |
+
$_POST['dbname'] = null;
|
21 |
+
}
|
22 |
+
|
23 |
+
if (isset($_POST['dbuser'])) {
|
24 |
+
$post_db_user = DUPX_U::sanitize_text_field($_POST['dbuser']);
|
25 |
+
$_POST['dbuser'] = trim($post_db_user);
|
26 |
+
} else {
|
27 |
+
$_POST['dbuser'] = null;
|
28 |
+
}
|
29 |
+
|
30 |
+
if (isset($_POST['dbpass'])) {
|
31 |
+
$_POST['dbpass'] = $_POST['dbpass'];
|
32 |
+
} else {
|
33 |
+
$_POST['dbpass'] = null;
|
34 |
+
}
|
35 |
+
|
36 |
+
if (isset($_POST['dbhost'])) {
|
37 |
+
$post_db_host = DUPX_U::sanitize_text_field($_POST['dbhost']);
|
38 |
+
$_POST['dbport'] = parse_url($post_db_host, PHP_URL_PORT);
|
39 |
+
} else {
|
40 |
+
$_POST['dbport'] = 3306;
|
41 |
+
}
|
42 |
+
|
43 |
+
if (!empty($_POST['dbport'])) {
|
44 |
+
$_POST['dbport'] = DUPX_U::sanitize_text_field($_POST['dbport']);
|
45 |
+
} else {
|
46 |
+
$_POST['dbport'] = 3306;
|
47 |
+
}
|
48 |
+
|
49 |
+
$_POST['exe_safe_mode'] = isset($_POST['exe_safe_mode']) ? DUPX_U::sanitize_text_field($_POST['exe_safe_mode']) : 0;
|
50 |
+
|
51 |
+
$dbh = DUPX_DB::connect($_POST['dbhost'], $_POST['dbuser'], $_POST['dbpass'], $_POST['dbname'], $_POST['dbport']);
|
52 |
+
|
53 |
+
$all_tables = DUPX_DB::getTables($dbh);
|
54 |
+
$active_plugins = DUPX_U::getActivePlugins($dbh);
|
55 |
+
$old_path = $GLOBALS['DUPX_AC']->wproot;
|
56 |
+
|
57 |
+
// RSR TODO: need to do the path too?
|
58 |
+
$new_path = $GLOBALS['DUPX_ROOT'];
|
59 |
+
$new_path = ((strrpos($old_path, '/') + 1) == strlen($old_path)) ? DUPX_U::addSlash($new_path) : $new_path;
|
60 |
+
$empty_schedule_display = (DUPX_U::$on_php_53_plus) ? 'table-row' : 'none';
|
61 |
+
?>
|
62 |
+
|
63 |
+
<!-- =========================================
|
64 |
+
VIEW: STEP 3- INPUT -->
|
65 |
+
<form id='s3-input-form' method="post" class="content-form" autocomplete="off">
|
66 |
+
|
67 |
+
<div class="logfile-link">
|
68 |
+
<?php DUPX_View_Funcs::installerLogLink(); ?>
|
69 |
+
</div>
|
70 |
+
<div class="hdr-main">
|
71 |
+
Step <span class="step">3</span> of 4: Update Data
|
72 |
+
<div class="sub-header">This step will update the database and config files to match your new sites values.</div>
|
73 |
+
</div>
|
74 |
+
|
75 |
+
<?php
|
76 |
+
if ($_POST['dbaction'] == 'manual') {
|
77 |
+
echo '<div class="dupx-notice s3-manaual-msg">Manual SQL execution is enabled</div>';
|
78 |
+
}
|
79 |
+
?>
|
80 |
+
|
81 |
+
<!-- POST PARAMS -->
|
82 |
+
<div class="dupx-debug">
|
83 |
+
<i>Step 3 - Page Load</i>
|
84 |
+
<input type="hidden" name="ctrl_action" value="ctrl-step3" />
|
85 |
+
<input type="hidden" name="ctrl_csrf_token" value="<?php echo DUPX_CSRF::generate('ctrl-step3'); ?>">
|
86 |
+
<input type="hidden" name="view" value="step3" />
|
87 |
+
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step3'); ?>">
|
88 |
+
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_attr($_POST['secure-pass']); ?>" />
|
89 |
+
<input type="hidden" name="secure-archive" value="<?php echo DUPX_U::esc_attr($_POST['secure-archive']); ?>" />
|
90 |
+
<input type="hidden" name="logging" value="<?php echo DUPX_U::esc_attr($_POST['logging']); ?>" />
|
91 |
+
<input type="hidden" name="dbhost" value="<?php echo DUPX_U::esc_attr($_POST['dbhost']); ?>" />
|
92 |
+
<input type="hidden" name="dbuser" value="<?php echo DUPX_U::esc_attr($_POST['dbuser']); ?>" />
|
93 |
+
<input type="hidden" name="dbpass" value="<?php echo DUPX_U::esc_attr($_POST['dbpass']); ?>" />
|
94 |
+
<input type="hidden" name="dbname" value="<?php echo DUPX_U::esc_attr($_POST['dbname']); ?>" />
|
95 |
+
<input type="hidden" name="dbcharset" value="<?php echo DUPX_U::esc_attr($_POST['dbcharset']); ?>" />
|
96 |
+
<input type="hidden" name="dbcollate" value="<?php echo DUPX_U::esc_attr($_POST['dbcollate']); ?>" />
|
97 |
+
<input type="hidden" name="config_mode" value="<?php echo DUPX_U::esc_attr($_POST['config_mode']); ?>" />
|
98 |
+
<input type="hidden" name="exe_safe_mode" id="exe-safe-mode" value="<?php echo DUPX_U::esc_attr($_POST['exe_safe_mode']); ?>" />
|
99 |
+
<input type="hidden" name="json" value="<?php echo DUPX_U::esc_attr($_POST['json']); ?>" />
|
100 |
+
</div>
|
101 |
+
|
102 |
+
<div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s3-new-settings">
|
103 |
+
<a href="javascript:void(0)"><i class="fa fa-minus-square"></i>Setup</a>
|
104 |
+
</div>
|
105 |
+
<div id="s3-new-settings">
|
106 |
+
<table class="s3-opts">
|
107 |
+
<tr>
|
108 |
+
<td>Title:</td>
|
109 |
+
<td><input type="text" name="blogname" id="blogname" value="<?php echo DUPX_U::esc_attr($GLOBALS['DUPX_AC']->blogname); ?>" /></td>
|
110 |
+
</tr>
|
111 |
+
<tr>
|
112 |
+
<td>URL:</td>
|
113 |
+
<td>
|
114 |
+
<input type="text" name="url_new" id="url_new" value="" />
|
115 |
+
<a href="javascript:DUPX.getNewURL('url_new')" style="font-size:12px">get</a>
|
116 |
+
</td>
|
117 |
+
</tr>
|
118 |
+
<tr>
|
119 |
+
<td>Path:</td>
|
120 |
+
<td><input type="text" name="path_new" id="path_new" value="<?php echo DUPX_U::esc_attr($new_path); ?>" /></td>
|
121 |
+
</tr>
|
122 |
+
</table>
|
123 |
+
</div>
|
124 |
+
<br/>
|
125 |
+
|
126 |
+
<!-- =========================
|
127 |
+
SEARCH AND REPLACE -->
|
128 |
+
<div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s3-custom-replace">
|
129 |
+
<a href="javascript:void(0)"><i class="fa fa-plus-square"></i>Replace</a>
|
130 |
+
</div>
|
131 |
+
|
132 |
+
<div id="s3-custom-replace" class="hdr-sub1-area" style="display:none; text-align: center">
|
133 |
+
<div class="help-target">
|
134 |
+
<?php DUPX_View_Funcs::helpIconLink('step3'); ?>
|
135 |
+
</div><br/>
|
136 |
+
Add additional search and replace URLs to replace additional data.<br/>
|
137 |
+
This option is available only in
|
138 |
+
<a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=duplicator_pro&utm_content=free_inst_replaceopts">Duplicator Pro</a>
|
139 |
+
</div>
|
140 |
+
<br/>
|
141 |
+
|
142 |
+
<!-- ==========================
|
143 |
+
OPTIONS -->
|
144 |
+
<div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s3-adv-opts">
|
145 |
+
<a href="javascript:void(0)"><i class="fa fa-plus-square"></i>Options</a>
|
146 |
+
</div>
|
147 |
+
<div id="s3-adv-opts" class="hdr-sub1-area" style="display:none;">
|
148 |
+
|
149 |
+
<!-- START TABS -->
|
150 |
+
<div id="tabs">
|
151 |
+
<ul>
|
152 |
+
<li><a href="#tabs-admin-account">Admin Account</a></li>
|
153 |
+
<li><a href="#tabs-scan-options">Scan Options</a></li>
|
154 |
+
<li><a href="#tabs-wp-config-file">WP-Config File</a></li>
|
155 |
+
</ul>
|
156 |
+
|
157 |
+
<!-- =====================
|
158 |
+
ADMIN TAB -->
|
159 |
+
<div id="tabs-admin-account">
|
160 |
+
<div class="help-target">
|
161 |
+
<?php DUPX_View_Funcs::helpIconLink('step3'); ?>
|
162 |
+
</div><br/>
|
163 |
+
|
164 |
+
<div class="hdr-sub3">New Admin Account</div>
|
165 |
+
<div style="text-align: center">
|
166 |
+
<i style="color:gray;font-size: 11px">This feature is optional. If the username already exists the account will NOT be created or updated.</i>
|
167 |
+
</div>
|
168 |
+
|
169 |
+
<table class="s3-opts" style="margin-top:7px">
|
170 |
+
<tr>
|
171 |
+
<td>Username:</td>
|
172 |
+
<td><input type="text" name="wp_username" id="wp_username" value="" title="4 characters minimum" placeholder="(4 or more characters)" /></td>
|
173 |
+
</tr>
|
174 |
+
<tr>
|
175 |
+
<td>Password:</td>
|
176 |
+
<td>
|
177 |
+
<?php
|
178 |
+
DUPX_U_Html::inputPasswordToggle('wp_password', 'wp_password', array(),
|
179 |
+
array(
|
180 |
+
'placeholder' => '(6 or more characters)',
|
181 |
+
'title' => '6 characters minimum'
|
182 |
+
));
|
183 |
+
?>
|
184 |
+
</tr>
|
185 |
+
<tr>
|
186 |
+
<td>Email:</td>
|
187 |
+
<td><input type="text" name="wp_mail" id="wp_mail" value="" title="" placeholder="" /></td>
|
188 |
+
</tr>
|
189 |
+
<tr>
|
190 |
+
<td>Nickname:</td>
|
191 |
+
<td><input type="text" name="wp_nickname" id="wp_nickname" value="" title="if username is empty" placeholder="(if username is empty)" /></td>
|
192 |
+
</tr>
|
193 |
+
<tr>
|
194 |
+
<td>First name:</td>
|
195 |
+
<td><input type="text" name="wp_first_name" id="wp_first_name" value="" title="optional" placeholder="(optional)" /></td>
|
196 |
+
</tr>
|
197 |
+
<tr>
|
198 |
+
<td>Last name:</td>
|
199 |
+
<td><input type="text" name="wp_last_name" id="wp_last_name" value="" title="optional" placeholder="(optional)" /></td>
|
200 |
+
</tr>
|
201 |
+
</table>
|
202 |
+
<br/><br/>
|
203 |
+
</div>
|
204 |
+
|
205 |
+
<!-- =====================
|
206 |
+
SCAN TAB -->
|
207 |
+
<div id="tabs-scan-options">
|
208 |
+
<div class="help-target">
|
209 |
+
<?php DUPX_View_Funcs::helpIconLink('step3'); ?>
|
210 |
+
</div><br/>
|
211 |
+
<div class="hdr-sub3">Database Scan Options</div>
|
212 |
+
<table class="s3-opts">
|
213 |
+
<tr>
|
214 |
+
<td style="width:105px">Site URL:</td>
|
215 |
+
<td style="white-space: nowrap">
|
216 |
+
<input type="text" name="siteurl" id="siteurl" value="" />
|
217 |
+
<a href="javascript:DUPX.getNewURL('siteurl')" style="font-size:12px">get</a><br/>
|
218 |
+
</td>
|
219 |
+
</tr>
|
220 |
+
<tr valign="top">
|
221 |
+
<td style="width:80px">Old URL:</td>
|
222 |
+
<td>
|
223 |
+
<input type="text" name="url_old" id="url_old" value="<?php echo DUPX_U::esc_attr($GLOBALS['DUPX_AC']->url_old); ?>" readonly="readonly" class="readonly" />
|
224 |
+
<a href="javascript:DUPX.editOldURL()" id="edit_url_old" style="font-size:12px">edit</a>
|
225 |
+
</td>
|
226 |
+
</tr>
|
227 |
+
<tr valign="top">
|
228 |
+
<td>Old Path:</td>
|
229 |
+
<td>
|
230 |
+
<input type="text" name="path_old" id="path_old" value="<?php echo DUPX_U::esc_attr($old_path); ?>" readonly="readonly" class="readonly" />
|
231 |
+
<a href="javascript:DUPX.editOldPath()" id="edit_path_old" style="font-size:12px">edit</a>
|
232 |
+
</td>
|
233 |
+
</tr>
|
234 |
+
</table><br/>
|
235 |
+
|
236 |
+
<table>
|
237 |
+
<tr>
|
238 |
+
<td style="padding-right:10px">
|
239 |
+
<b>Scan Tables:</b>
|
240 |
+
<div class="s3-allnonelinks">
|
241 |
+
<a href="javascript:void(0)" onclick="$('#tables option').prop('selected',true);">[All]</a>
|
242 |
+
<a href="javascript:void(0)" onclick="$('#tables option').prop('selected',false);">[None]</a>
|
243 |
+
</div><br style="clear:both" />
|
244 |
+
<select id="tables" name="tables[]" multiple="multiple" style="width:315px;" size="10">
|
245 |
+
<?php
|
246 |
+
foreach( $all_tables as $table ) {
|
247 |
+
echo '<option selected="selected" value="' . DUPX_U::esc_attr( $table ) . '">' . DUPX_U::esc_html($table) . '</option>';
|
248 |
+
}
|
249 |
+
?>
|
250 |
+
</select>
|
251 |
+
|
252 |
+
</td>
|
253 |
+
<td valign="top">
|
254 |
+
<b>Activate Plugins:</b>
|
255 |
+
<?php echo ($_POST['exe_safe_mode'] > 0) ? '<small class="s3-warn">Safe Mode Enabled</small>' : '' ; ?>
|
256 |
+
<div class="s3-allnonelinks" style="<?php echo ($_POST['exe_safe_mode']>0)? 'display:none':''; ?>">
|
257 |
+
<a href="javascript:void(0)" onclick="$('#plugins option').prop('selected',true);">[All]</a>
|
258 |
+
<a href="javascript:void(0)" onclick="$('#plugins option').prop('selected',false);">[None]</a>
|
259 |
+
</div><br style="clear:both" />
|
260 |
+
<select id="plugins" name="plugins[]" multiple="multiple" style="width:315px;" <?php echo ($_POST['exe_safe_mode'] > 0) ? 'disabled="true"' : ''; ?> size="10">
|
261 |
+
<?php
|
262 |
+
$selected_string = 'selected="selected"';
|
263 |
+
foreach ($active_plugins as $plugin) {
|
264 |
+
$label = dirname($plugin) == '.' ? $plugin : dirname($plugin);
|
265 |
+
echo "<option {$selected_string} value='" . DUPX_U::esc_attr( $plugin ) . "'>" . DUPX_U::esc_html($label) . '</option>';
|
266 |
+
}
|
267 |
+
?>
|
268 |
+
</select>
|
269 |
+
</td>
|
270 |
+
</tr>
|
271 |
+
</table>
|
272 |
+
<br/>
|
273 |
+
<input type="checkbox" name="search_replace_email_domain" id="search_replace_email_domain" value="1" /> <label for="search_replace_email_domain">Update email domains</label><br/>
|
274 |
+
<input type="checkbox" name="fullsearch" id="fullsearch" value="1" /> <label for="fullsearch">Use Database Full Search Mode</label><br/>
|
275 |
+
<input type="checkbox" name="postguid" id="postguid" value="1" /> <label for="postguid">Keep Post GUID Unchanged</label><br/>
|
276 |
+
<label>
|
277 |
+
<B>Max size check for serialize objects:</b>
|
278 |
+
<input type="number"
|
279 |
+
name="<?php echo DUPX_CTRL::NAME_MAX_SERIALIZE_STRLEN_IN_M; ?>"
|
280 |
+
value="<?php echo DUPX_Constants::DEFAULT_MAX_STRLEN_SERIALIZED_CHECK_IN_M; ?>"
|
281 |
+
min="0" max="99" step="1" size="2"
|
282 |
+
style="width: 40px;width: 50px; text-align: center;" /> MB
|
283 |
+
</label>
|
284 |
+
<br/><br/>
|
285 |
+
</div>
|
286 |
+
|
287 |
+
<!-- =====================
|
288 |
+
WP-CONFIG TAB -->
|
289 |
+
<div id="tabs-wp-config-file">
|
290 |
+
<div class="help-target">
|
291 |
+
<?php DUPX_View_Funcs::helpIconLink('step3'); ?>
|
292 |
+
</div><br/>
|
293 |
+
<div class="hdr-sub3">WP-Config File</div>
|
294 |
+
<?php
|
295 |
+
require_once($GLOBALS['DUPX_INIT'].'/lib/config/class.wp.config.tranformer.php');
|
296 |
+
$root_path = $GLOBALS['DUPX_ROOT'];
|
297 |
+
$root_path = $GLOBALS['DUPX_ROOT'];
|
298 |
+
$wpconfig_ark_path = ($GLOBALS['DUPX_AC']->installSiteOverwriteOn) ? "{$root_path}/dup-wp-config-arc__{$GLOBALS['DUPX_AC']->package_hash}.txt" : "{$root_path}/wp-config.php";
|
299 |
+
|
300 |
+
if (file_exists($wpconfig_ark_path)) {
|
301 |
+
$config_transformer = new DupLiteWPConfigTransformer($wpconfig_ark_path);
|
302 |
+
} else {
|
303 |
+
$config_transformer = null;
|
304 |
+
}
|
305 |
+
|
306 |
+
?>
|
307 |
+
<table class="dupx-opts dupx-advopts">
|
308 |
+
<?php
|
309 |
+
if (file_exists($wpconfig_ark_path)) { ?>
|
310 |
+
<tr>
|
311 |
+
<td>Cache:</td>
|
312 |
+
<td>
|
313 |
+
<?php
|
314 |
+
$wp_cache_val = false;
|
315 |
+
if (!is_null($config_transformer) && $config_transformer->exists('constant', 'WP_CACHE')) {
|
316 |
+
$wp_cache_val = $config_transformer->get_value('constant', 'WP_CACHE');
|
317 |
+
}
|
318 |
+
?>
|
319 |
+
<input type="checkbox" name="cache_wp" id="cache_wp" <?php DupLiteSnapLibUIU::echoChecked($wp_cache_val);?> /> <label for="cache_wp">Keep Enabled</label>
|
320 |
+
</td>
|
321 |
+
</tr>
|
322 |
+
<tr>
|
323 |
+
<td></td>
|
324 |
+
<td>
|
325 |
+
<?php
|
326 |
+
$wpcachehome_val = '';
|
327 |
+
if (!is_null($config_transformer) && $config_transformer->exists('constant', 'WPCACHEHOME')) {
|
328 |
+
$wpcachehome_val = $config_transformer->get_value('constant', 'WPCACHEHOME');
|
329 |
+
}
|
330 |
+
?>
|
331 |
+
<input type="checkbox" name="cache_path" id="cache_path" <?php DupLiteSnapLibUIU::echoChecked($wpcachehome_val);?> /> <label for="cache_path">Keep Home Path</label>
|
332 |
+
<br><br>
|
333 |
+
</td>
|
334 |
+
</tr>
|
335 |
+
<tr>
|
336 |
+
<td>SSL:</td>
|
337 |
+
<td>
|
338 |
+
<?php
|
339 |
+
$force_ssl_admin_val = false;
|
340 |
+
if (!is_null($config_transformer) && $config_transformer->exists('constant', 'FORCE_SSL_ADMIN')) {
|
341 |
+
$force_ssl_admin_val = $config_transformer->get_value('constant', 'FORCE_SSL_ADMIN');
|
342 |
+
}
|
343 |
+
?>
|
344 |
+
<input type="checkbox" name="ssl_admin" id="ssl_admin" <?php DupLiteSnapLibUIU::echoChecked($force_ssl_admin_val);?> /> <label for="ssl_admin">Enforce on Admin</label>
|
345 |
+
</td>
|
346 |
+
</tr>
|
347 |
+
<?php } else { ?>
|
348 |
+
<tr>
|
349 |
+
<td>wp-config.php not found</td>
|
350 |
+
<td>No action on the wp-config is possible.<br>
|
351 |
+
After migration, be sure to insert a properly modified wp-config for correct wordpress operation.</td>
|
352 |
+
</tr>
|
353 |
+
<?php } ?>
|
354 |
+
</table><br/>
|
355 |
+
<i>
|
356 |
+
Need more control? With <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=duplicator_pro&utm_content=wpconfig" target="_blank">Duplicator Pro</a>
|
357 |
+
you can change many wp-config settings automatically from this section, without having to manually edit the file.
|
358 |
+
</i>
|
359 |
+
</div>
|
360 |
+
</div>
|
361 |
+
<!-- END TABS -->
|
362 |
+
</div>
|
363 |
+
<br/><br/><br/><br/>
|
364 |
+
|
365 |
+
|
366 |
+
<div class="footer-buttons">
|
367 |
+
<button id="s3-next" type="button" onclick="DUPX.runUpdate()" class="default-btn"> Next <i class="fa fa-caret-right"></i> </button>
|
368 |
+
</div>
|
369 |
+
</form>
|
370 |
+
|
371 |
+
<!-- =========================================
|
372 |
+
VIEW: STEP 3 - AJAX RESULT -->
|
373 |
+
<form id='s3-result-form' method="post" class="content-form" style="display:none" autocomplete="off">
|
374 |
+
|
375 |
+
<div class="logfile-link"><?php DUPX_View_Funcs::installerLogLink(); ?></div>
|
376 |
+
<div class="hdr-main">
|
377 |
+
Step <span class="step">3</span> of 4: Update Data
|
378 |
+
<div class="sub-header">This step will update the database and config files to match your new sites values.</div>
|
379 |
+
</div>
|
380 |
+
|
381 |
+
<!-- POST PARAMS -->
|
382 |
+
<div class="dupx-debug">
|
383 |
+
<i>Step 3 - AJAX Response</i>
|
384 |
+
<input type="hidden" name="view" value="step4" />
|
385 |
+
<input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step4'); ?>">
|
386 |
+
<input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_attr($_POST['secure-pass']); ?>" />
|
387 |
+
<input type="hidden" name="secure-archive" value="<?php echo DUPX_U::esc_attr($_POST['secure-archive']); ?>" />
|
388 |
+
<input type="hidden" name="logging" id="logging" value="<?php echo DUPX_U::esc_attr($_POST['logging']); ?>" />
|
389 |
+
<input type="hidden" name="url_new" id="ajax-url_new" />
|
390 |
+
<input type="hidden" name="exe_safe_mode" id="ajax-exe-safe-mode" />
|
391 |
+
<input type="hidden" name="json" id="ajax-json" />
|
392 |
+
<input type='submit' value='manual submit'>
|
393 |
+
</div>
|
394 |
+
|
395 |
+
<!-- PROGRESS BAR -->
|
396 |
+
<div id="progress-area">
|
397 |
+
<div style="width:500px; margin:auto">
|
398 |
+
<div style="font-size:1.7em; margin-bottom:20px"><i class="fas fa-circle-notch fa-spin"></i> Processing Data Replacement</div>
|
399 |
+
<div id="progress-bar"></div>
|
400 |
+
<h3> Please Wait...</h3><br/><br/>
|
401 |
+
<i>Keep this window open during the replacement process.</i><br/>
|
402 |
+
<i>This can take several minutes.</i>
|
403 |
+
</div>
|
404 |
+
</div>
|
405 |
+
|
406 |
+
<!-- AJAX SYSTEM ERROR -->
|
407 |
+
<div id="ajaxerr-area" style="display:none">
|
408 |
+
<p>Please try again an issue has occurred.</p>
|
409 |
+
<div style="padding: 0px 10px 10px 10px;">
|
410 |
+
<div id="ajaxerr-data">An unknown issue has occurred with the update setup step. Please see the <?php DUPX_View_Funcs::installerLogLink(); ?> file for more details.</div>
|
411 |
+
<div style="text-align:center; margin:10px auto 0px auto">
|
412 |
+
<input type="button" onclick='DUPX.hideErrorResult2()' value="« Try Again" class="default-btn" /><br/><br/>
|
413 |
+
<i style='font-size:11px'>See online help for more details at <a href='https://snapcreek.com' target='_blank'>snapcreek.com</a></i>
|
414 |
+
</div>
|
415 |
+
</div>
|
416 |
+
</div>
|
417 |
+
</form>
|
418 |
+
|
419 |
+
<script>
|
420 |
+
/**
|
421 |
+
* Timeout (10000000 = 166 minutes) */
|
422 |
+
DUPX.runUpdate = function()
|
423 |
+
{
|
424 |
+
//Validation
|
425 |
+
var wp_username = $.trim($("#wp_username").val()).length || 0;
|
426 |
+
var wp_password = $.trim($("#wp_password").val()).length || 0;
|
427 |
+
var wp_mail = $.trim($("#wp_mail").val()).length || 0;
|
428 |
+
|
429 |
+
|
430 |
+
if ( $.trim($("#url_new").val()) == "" ) {alert("The 'New URL' field is required!"); return false;}
|
431 |
+
if ( $.trim($("#siteurl").val()) == "" ) {alert("The 'Site URL' field is required!"); return false;}
|
432 |
+
|
433 |
+
if (wp_username >= 1) {
|
434 |
+
if (wp_username < 4) {
|
435 |
+
alert("The New Admin Account 'Username' must be four or more characters");
|
436 |
+
return false;
|
437 |
+
} else if (wp_password < 6) {
|
438 |
+
alert("The New Admin Account 'Password' must be six or more characters");
|
439 |
+
return false;
|
440 |
+
} else if (wp_mail === 0) {
|
441 |
+
alert("The New Admin Account 'mail' is required");
|
442 |
+
return false;
|
443 |
+
}
|
444 |
+
}
|
445 |
+
|
446 |
+
var nonHttp = false;
|
447 |
+
var failureText = '';
|
448 |
+
|
449 |
+
/* IMPORTANT - not trimming the value for good - just in the check */
|
450 |
+
$('input[name="search[]"]').each(function() {
|
451 |
+
var val = $(this).val();
|
452 |
+
|
453 |
+
if(val.trim() != "") {
|
454 |
+
if(val.length < 3) {
|
455 |
+
failureText = "Custom search fields must be at least three characters.";
|
456 |
+
}
|
457 |
+
|
458 |
+
if(val.toLowerCase().indexOf('http') != 0) {
|
459 |
+
nonHttp = true;
|
460 |
+
}
|
461 |
+
}
|
462 |
+
});
|
463 |
+
|
464 |
+
$('input[name="replace[]"]').each(function() {
|
465 |
+
var val = $(this).val();
|
466 |
+
if(val.trim() != "") {
|
467 |
+
// Replace fields can be anything
|
468 |
+
if(val.toLowerCase().indexOf('http') != 0) {
|
469 |
+
nonHttp = true;
|
470 |
+
}
|
471 |
+
}
|
472 |
+
});
|
473 |
+
|
474 |
+
if(failureText != '') {
|
475 |
+
alert(failureText);
|
476 |
+
return false;
|
477 |
+
}
|
478 |
+
|
479 |
+
if(nonHttp) {
|
480 |
+
if(confirm('One or more custom search and replace strings are not URLs. Are you sure you want to continue?') == false) {
|
481 |
+
return false;
|
482 |
+
}
|
483 |
+
}
|
484 |
+
|
485 |
+
$.ajax({
|
486 |
+
type: "POST",
|
487 |
+
timeout: 10000000,
|
488 |
+
url: window.location.href,
|
489 |
+
data: $('#s3-input-form').serialize(),
|
490 |
+
beforeSend: function() {
|
491 |
+
DUPX.showProgressBar();
|
492 |
+
$('#s3-input-form').hide();
|
493 |
+
$('#s3-result-form').show();
|
494 |
+
},
|
495 |
+
success: function(respData, textStatus, xHr){
|
496 |
+
try {
|
497 |
+
var data = DUPX.parseJSON(respData);
|
498 |
+
} catch(err) {
|
499 |
+
console.error(err);
|
500 |
+
console.error('JSON parse failed for response data: ' + respData);
|
501 |
+
var status = "<b>Server Code:</b> " + xHr.status + "<br/>";
|
502 |
+
status += "<b>Status:</b> " + textStatus + "<br/>";
|
503 |
+
status += "<b>Response:</b> " + xHr.responseText + "<hr/>";
|
504 |
+
status += "<b>Additional Troubleshooting Tips:</b><br/>";
|
505 |
+
status += "- Check the <a href='./<?php echo DUPX_U::esc_attr($GLOBALS["LOG_FILE_NAME"]);?>' target='dup-installer'>dup-installer-log.txt</a> file for warnings or errors.<br/>";
|
506 |
+
status += "- Check the web server and PHP error logs. <br/>";
|
507 |
+
status += "- For timeout issues visit the <a href='https://snapcreek.com/duplicator/docs/faqs-tech/#faq-trouble-100-q' target='_blank'>Timeout FAQ Section</a><br/>";
|
508 |
+
$('#ajaxerr-data').html(status);
|
509 |
+
DUPX.hideProgressBar();
|
510 |
+
return false;
|
511 |
+
}
|
512 |
+
if (typeof(data) != 'undefined' && data.step3.pass == 1) {
|
513 |
+
$("#ajax-url_new").val($("#url_new").val());
|
514 |
+
$("#ajax-exe-safe-mode").val($("#exe-safe-mode").val());
|
515 |
+
$("#ajax-json").val(escape(JSON.stringify(data)));
|
516 |
+
<?php if (!DUPX_Log::isLevel(DUPX_Log::LV_DEBUG)) : ?>
|
517 |
+
setTimeout(function(){$('#s3-result-form').submit();}, 1000);
|
518 |
+
<?php endif; ?>
|
519 |
+
$('#progress-area').fadeOut(1800);
|
520 |
+
} else {
|
521 |
+
DUPX.hideProgressBar();
|
522 |
+
}
|
523 |
+
},
|
524 |
+
error: function(xhr) {
|
525 |
+
var status = "<b>Server Code:</b> " + xhr.status + "<br/>";
|
526 |
+
status += "<b>Status:</b> " + xhr.statusText + "<br/>";
|
527 |
+
status += "<b>Response:</b> " + xhr.responseText + "<hr/>";
|
528 |
+
status += "<b>Additional Troubleshooting Tips:</b><br/>";
|
529 |
+
status += "- Check the <a href='./<?php echo DUPX_U::esc_attr($GLOBALS["LOG_FILE_NAME"]);?>' target='dup-installer'>dup-installer-log.txt</a> file for warnings or errors.<br/>";
|
530 |
+
status += "- Check the web server and PHP error logs. <br/>";
|
531 |
+
status += "- For timeout issues visit the <a href='https://snapcreek.com/duplicator/docs/faqs-tech/#faq-trouble-100-q' target='_blank'>Timeout FAQ Section</a><br/>";
|
532 |
+
$('#ajaxerr-data').html(status);
|
533 |
+
DUPX.hideProgressBar();
|
534 |
+
}
|
535 |
+
});
|
536 |
+
};
|
537 |
+
|
538 |
+
/**
|
539 |
+
* Returns the windows active url */
|
540 |
+
DUPX.getNewURL = function(id)
|
541 |
+
{
|
542 |
+
var filename = window.location.pathname.split('/').pop() || 'main.installer.php' ;
|
543 |
+
var newVal = window.location.href.split("?")[0];
|
544 |
+
newVal = newVal.replace("/" + filename, '');
|
545 |
+
var last_slash = newVal.lastIndexOf("/");
|
546 |
+
newVal = newVal.substring(0, last_slash);
|
547 |
+
|
548 |
+
$("#" + id).val(newVal);
|
549 |
+
};
|
550 |
+
|
551 |
+
/**
|
552 |
+
* Allows user to edit the package url */
|
553 |
+
DUPX.editOldURL = function()
|
554 |
+
{
|
555 |
+
var msg = 'This is the URL that was generated when the package was created.\n';
|
556 |
+
msg += 'Changing this value may cause issues with the install process.\n\n';
|
557 |
+
msg += 'Only modify this value if you know exactly what the value should be.\n';
|
558 |
+
msg += 'See "General Settings" in the WordPress Administrator for more details.\n\n';
|
559 |
+
msg += 'Are you sure you want to continue?';
|
560 |
+
|
561 |
+
if (confirm(msg)) {
|
562 |
+
$("#url_old").removeAttr('readonly');
|
563 |
+
$("#url_old").removeClass('readonly');
|
564 |
+
$('#edit_url_old').hide('slow');
|
565 |
+
}
|
566 |
+
};
|
567 |
+
|
568 |
+
/**
|
569 |
+
* Allows user to edit the package path */
|
570 |
+
DUPX.editOldPath = function()
|
571 |
+
{
|
572 |
+
var msg = 'This is the SERVER URL that was generated when the package was created.\n';
|
573 |
+
msg += 'Changing this value may cause issues with the install process.\n\n';
|
574 |
+
msg += 'Only modify this value if you know exactly what the value should be.\n';
|
575 |
+
msg += 'Are you sure you want to continue?';
|
576 |
+
|
577 |
+
if (confirm(msg)) {
|
578 |
+
$("#path_old").removeAttr('readonly');
|
579 |
+
$("#path_old").removeClass('readonly');
|
580 |
+
$('#edit_path_old').hide('slow');
|
581 |
+
}
|
582 |
+
};
|
583 |
+
|
584 |
+
|
585 |
+
|
586 |
+
/**
|
587 |
+
* Go back on AJAX result view */
|
588 |
+
DUPX.hideErrorResult2 = function()
|
589 |
+
{
|
590 |
+
$('#s3-result-form').hide();
|
591 |
+
$('#s3-input-form').show(200);
|
592 |
+
};
|
593 |
+
|
594 |
+
//DOCUMENT LOAD
|
595 |
+
$(document).ready(function()
|
596 |
+
{
|
597 |
+
setTimeout(function() {
|
598 |
+
$('#wp_username').val('');
|
599 |
+
$('#wp_password').val('');
|
600 |
+
}, 900);
|
601 |
+
$("#tabs").tabs();
|
602 |
+
DUPX.getNewURL('url_new');
|
603 |
+
DUPX.getNewURL('siteurl');
|
604 |
+
DUPX.initToggle();
|
605 |
+
$("#wp_password").passStrength({
|
606 |
+
shortPass: "top_shortPass",
|
607 |
+
badPass: "top_badPass",
|
608 |
+
goodPass: "top_goodPass",
|
609 |
+
strongPass: "top_strongPass",
|
610 |
+
baseStyle: "top_testresult",
|
611 |
+
userid: "#wp_username",
|
612 |
+
messageloc: 1
|
613 |
+
});
|
614 |
+
});
|
615 |
+
</script>
|
readme.txt
CHANGED
@@ -4,16 +4,16 @@ Tags: migration, backup, duplicate, move, migrate, restore, transfer, clone, aut
|
|
4 |
Requires at least: 4.0
|
5 |
Tested up to: 5.8
|
6 |
Requires PHP: 5.3.8
|
7 |
-
Stable tag: 1.4.
|
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.
|
11 |
|
12 |
== Description ==
|
13 |
|
14 |
> With over **25 million downloads** Duplicator successfully gives WordPress users the ability to migrate, copy, move or clone a site from one location to another and also serves as a simple backup utility. Duplicator handles serialized and base64 serialized replacements. Standard WordPress migration and WordPress backups are easily handled by this plugin as are **zero downtime migrations**.
|
15 |
|
16 |
-
For complete details visit [snapcreek.com](https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wp_org&utm_content=desc_details&utm_campaign=duplicator_free).
|
17 |
|
18 |
= Quick Video Demo =
|
19 |
http://www.youtube.com/watch?v=oc73jtvHWYQ
|
@@ -33,7 +33,7 @@ Duplicator is the most powerful migrator available. It enables you to:
|
|
33 |
Duplicator creates a package that bundles all the site's plugins, themes, content, database and WordPress files into a simple zip file called a package. This package can then be used to easily migrate a WordPress site to any location you wish. Move on the same server, across servers and pretty much any location a WordPress site can be hosted. *WordPress is not required for installation* since the package contains all site files.
|
34 |
|
35 |
= Improve Your Workflow with Pre-Bundled Sites =
|
36 |
-
Duplicator lets you make your own preconfigured sites to eliminate rework. Instead of manually configuring your favorite theme, set of plugins or content over and over, now just configure a single site and bundle it up into a Duplicator package. Once you have the bundled site, you can migrate the WordPress site over and over to different locations to instantly create many preconfigured sites!
|
37 |
|
38 |
= Duplicator Pro =
|
39 |
Duplicator Pro takes Duplicator to the next level with features you'll really appreciate, such as:
|
@@ -69,7 +69,7 @@ This plugin does require some technical knowledge. If you plan to migrate WordP
|
|
69 |
<li>[Nicolas Richer](http://nicolasricher.fr) (French)</li>
|
70 |
|
71 |
== Screenshots ==
|
72 |
-
|
73 |
1. Main Interface for all Packages
|
74 |
2. Create Package Step 1
|
75 |
3. Create Package Step 2
|
4 |
Requires at least: 4.0
|
5 |
Tested up to: 5.8
|
6 |
Requires PHP: 5.3.8
|
7 |
+
Stable tag: 1.4.3
|
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.
|
11 |
|
12 |
== Description ==
|
13 |
|
14 |
> With over **25 million downloads** Duplicator successfully gives WordPress users the ability to migrate, copy, move or clone a site from one location to another and also serves as a simple backup utility. Duplicator handles serialized and base64 serialized replacements. Standard WordPress migration and WordPress backups are easily handled by this plugin as are **zero downtime migrations**.
|
15 |
|
16 |
+
For complete details visit [snapcreek.com](https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wp_org&utm_content=desc_details&utm_campaign=duplicator_free).
|
17 |
|
18 |
= Quick Video Demo =
|
19 |
http://www.youtube.com/watch?v=oc73jtvHWYQ
|
33 |
Duplicator creates a package that bundles all the site's plugins, themes, content, database and WordPress files into a simple zip file called a package. This package can then be used to easily migrate a WordPress site to any location you wish. Move on the same server, across servers and pretty much any location a WordPress site can be hosted. *WordPress is not required for installation* since the package contains all site files.
|
34 |
|
35 |
= Improve Your Workflow with Pre-Bundled Sites =
|
36 |
+
Duplicator lets you make your own preconfigured sites to eliminate rework. Instead of manually configuring your favorite theme, set of plugins or content over and over, now just configure a single site and bundle it up into a Duplicator package. Once you have the bundled site, you can migrate the WordPress site over and over to different locations to instantly create many preconfigured sites!
|
37 |
|
38 |
= Duplicator Pro =
|
39 |
Duplicator Pro takes Duplicator to the next level with features you'll really appreciate, such as:
|
69 |
<li>[Nicolas Richer](http://nicolasricher.fr) (French)</li>
|
70 |
|
71 |
== Screenshots ==
|
72 |
+
|
73 |
1. Main Interface for all Packages
|
74 |
2. Create Package Step 1
|
75 |
3. Create Package Step 2
|
tools/Lite/Requirements.php
CHANGED
@@ -43,28 +43,13 @@ class Requirements
|
|
43 |
$result = true;
|
44 |
self::$pluginFile = $pluginFile;
|
45 |
|
46 |
-
if ($result === true && is_multisite()) {
|
47 |
-
/* Deactivation of the plugin disabled in favor of a notification for the next version
|
48 |
-
* Uncomment this to enable the logic.
|
49 |
-
*
|
50 |
-
add_action('admin_init', array(__CLASS__, 'addMultisiteNotice'));
|
51 |
-
self::$deactivationMessage = __('Can\'t enable Duplicator LITE in a multisite installation', 'duplicator');
|
52 |
-
$result = false;
|
53 |
-
*/
|
54 |
-
|
55 |
-
// TEMP WARNING NOTICE, remove this when the deactiovation logic is enable
|
56 |
-
add_action('admin_init', array(__CLASS__, 'addTempWarningMultisiteNotice'));
|
57 |
-
}
|
58 |
-
|
59 |
-
|
60 |
if ($result === true && self::isPluginActive(self::DUP_PRO_PLUGIN_KEY)) {
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
$result = false;
|
68 |
}
|
69 |
|
70 |
if ($result === false) {
|
@@ -116,13 +101,6 @@ class Requirements
|
|
116 |
}
|
117 |
}
|
118 |
|
119 |
-
public static function addTempWarningMultisiteNotice()
|
120 |
-
{
|
121 |
-
if (current_user_can('activate_plugins') && !is_plugin_active_for_network(plugin_basename(self::$pluginFile)) && false === get_option(\DUP_UI_Notice::OPTION_KEY_IS_MU_NOTICE_DISMISSED, false)) {
|
122 |
-
add_action('admin_notices', array(__CLASS__, 'tempWarningMultisiteNotice'));
|
123 |
-
}
|
124 |
-
}
|
125 |
-
|
126 |
/**
|
127 |
* deactivate current plugin on activation
|
128 |
*/
|
@@ -137,55 +115,19 @@ class Requirements
|
|
137 |
*/
|
138 |
public static function proEnabledNotice()
|
139 |
{
|
|
|
140 |
?>
|
141 |
<div class="error notice">
|
142 |
<p>
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
echo __('The "Duplicator Lite" and "Duplicator Pro" plugins cannot both be active at the same time. ', 'duplicator');
|
147 |
-
echo '</br>';
|
148 |
-
echo __('To use "Duplicator Lite" please deactivate "Duplicator Pro" from the ', 'duplicator');
|
149 |
-
echo "<a href='plugins.php'>" . __('plugins page', 'duplicator') . ".</a>";
|
150 |
-
?>
|
151 |
-
</p>
|
152 |
-
</div>
|
153 |
-
<?php
|
154 |
-
}
|
155 |
-
|
156 |
-
/**
|
157 |
-
* Display admin notice if duplicator pro is enabled
|
158 |
-
*/
|
159 |
-
public static function multisiteNotice()
|
160 |
-
{
|
161 |
-
?>
|
162 |
-
<div class="error notice">
|
163 |
-
<p>
|
164 |
-
<?php
|
165 |
-
echo 'DUPLICATOR LITE: ' . __('Duplicator LITE can\'t work on multisite installation.', 'duplicator');
|
166 |
-
?>
|
167 |
</p>
|
168 |
<p>
|
169 |
-
<?php
|
170 |
-
echo
|
171 |
-
|
172 |
-
|
173 |
-
</div>
|
174 |
-
<?php
|
175 |
-
}
|
176 |
-
|
177 |
-
/**
|
178 |
-
* Display admin notice if duplicator pro is enabled
|
179 |
-
*/
|
180 |
-
public static function tempWarningMultisiteNotice()
|
181 |
-
{
|
182 |
-
?>
|
183 |
-
<div class="notice notice-warning duplicator-admin-notice is-dismissible" data-to-dismiss="<?php echo \DUP_UI_Notice::OPTION_KEY_IS_MU_NOTICE_DISMISSED;?>">
|
184 |
-
<p>
|
185 |
-
<?php
|
186 |
-
echo '<i class="fas fa-exclamation-circle"></i> ' . __('NOTICE: Duplicator Lite cannot be activated individually in the sub-sites of a multisite installation but must be activated only on the network. '
|
187 |
-
. 'Please deactivate Duplicator Lite at this site and activate it on the network.', 'duplicator');
|
188 |
-
?>
|
189 |
</p>
|
190 |
</div>
|
191 |
<?php
|
43 |
$result = true;
|
44 |
self::$pluginFile = $pluginFile;
|
45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
if ($result === true && self::isPluginActive(self::DUP_PRO_PLUGIN_KEY)) {
|
47 |
+
add_action('admin_init', array(__CLASS__, 'addProEnableNotice'));
|
48 |
+
$pluginUrl = (is_multisite() ? network_admin_url('plugins.php') : admin_url('plugins.php'));
|
49 |
+
self::$deactivationMessage = __('Can\'t enable Duplicator LITE if the PRO version is enabled.', 'duplicator') . '<br/>'
|
50 |
+
. __('Please deactivate Duplicator PRO, then reactivate LITE version from the ', 'duplicator')
|
51 |
+
. "<a href='" . $pluginUrl . "'>" . __('plugins page', 'duplicator') . ".</a>";
|
52 |
+
$result = false;
|
|
|
53 |
}
|
54 |
|
55 |
if ($result === false) {
|
101 |
}
|
102 |
}
|
103 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
/**
|
105 |
* deactivate current plugin on activation
|
106 |
*/
|
115 |
*/
|
116 |
public static function proEnabledNotice()
|
117 |
{
|
118 |
+
$pluginUrl = (is_multisite() ? network_admin_url('plugins.php') : admin_url('plugins.php'));
|
119 |
?>
|
120 |
<div class="error notice">
|
121 |
<p>
|
122 |
+
<span class="dashicons dashicons-warning"></span>
|
123 |
+
<b><?php _e('Duplicator Notice:', 'duplicator'); ?></b>
|
124 |
+
<?php _e('The "Duplicator Lite" and "Duplicator Pro" plugins cannot both be active at the same time. ', 'duplicator'); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
</p>
|
126 |
<p>
|
127 |
+
<?php _e('To use "Duplicator LITE" please deactivate "Duplicator PRO" from the ', 'duplicator-pro'); ?>
|
128 |
+
<a href="<?php echo esc_url($pluginUrl); ?>">
|
129 |
+
<?php _e('plugins page', 'duplicator'); ?>.
|
130 |
+
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
</p>
|
132 |
</div>
|
133 |
<?php
|
views/packages/main/packages.php
CHANGED
@@ -8,6 +8,7 @@ DUP_Package::purge_incomplete_package();
|
|
8 |
$totalElements = DUP_Package::count_by_status();
|
9 |
$completeCount = DUP_Package::count_by_status(array(array('op' => '>=', 'status' => DUP_PackageStatus::COMPLETE))); // total packages completed
|
10 |
$active_package_present = DUP_Package::is_active_package_present();
|
|
|
11 |
|
12 |
$package_running = false;
|
13 |
global $packageTablerowCount;
|
@@ -35,6 +36,8 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
|
|
35 |
input#dup-bulk-action-all {margin:0px;padding:0px 0px 0px 5px;}
|
36 |
button.dup-button-selected {border:1px solid #000 !important; background-color:#dfdfdf !important;}
|
37 |
div.dup-quick-start {font-style:italic; font-size: 13px; line-height: 18px; margin-top: 15px}
|
|
|
|
|
38 |
|
39 |
/* Table package details */
|
40 |
table.dup-pack-table {word-break:break-all;}
|
@@ -70,7 +73,6 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
|
|
70 |
.dup-pack-info.is-running .get-btns button {display: none;}
|
71 |
div.sc-footer-left {color:maroon; font-size:11px; font-style: italic; float:left}
|
72 |
div.sc-footer-right {font-style: italic; float:right; font-size:12px}
|
73 |
-
|
74 |
</style>
|
75 |
|
76 |
<form id="form-duplicator" method="post">
|
@@ -86,22 +88,23 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
|
|
86 |
</select>
|
87 |
<input type="button" id="dup-pack-bulk-apply" class="button action" value="<?php esc_html_e("Apply", 'duplicator') ?>" onclick="Duplicator.Pack.ConfirmDelete()">
|
88 |
<span class="btn-separator"></span>
|
89 |
-
<a href="javascript:void(0)" class="button" title="<?php esc_attr_e("Get Help", 'duplicator') ?>" onclick="Duplicator.Pack.showHelp()">
|
90 |
-
<i class="fa fa-question-circle"></i>
|
91 |
-
</a>
|
92 |
<a href="admin.php?page=duplicator-settings&tab=package" class="button" title="<?php esc_attr_e("Settings", 'duplicator') ?>"><i class="fas fa-cog"></i></a>
|
|
|
|
|
|
|
|
|
93 |
</td>
|
94 |
<td>
|
95 |
-
<a
|
96 |
<?php
|
97 |
$package_url = admin_url('admin.php?page=duplicator&tab=new1');
|
98 |
$package_nonce_url = wp_nonce_url($package_url, 'new1-package');
|
99 |
?>
|
100 |
<a id="dup-create-new"
|
101 |
-
|
102 |
href="<?php echo $package_nonce_url; ?>"
|
103 |
-
class="button <?php echo ($active_package_present ? 'disabled' : ''); ?>"
|
104 |
-
>
|
105 |
<?php esc_html_e("Create New", 'duplicator'); ?>
|
106 |
</a>
|
107 |
</td>
|
@@ -120,12 +123,22 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
|
|
120 |
<i class="fa fa-archive fa-sm"></i>
|
121 |
<?php esc_html_e("No Packages Found.", 'duplicator'); ?><br/>
|
122 |
<?php esc_html_e("Click the 'Create New' button to build a package.", 'duplicator'); ?><br/>
|
123 |
-
<div class="dup-quick-start"
|
124 |
<?php esc_html_e("New to Duplicator?", 'duplicator'); ?><br/>
|
125 |
-
<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=
|
126 |
<?php esc_html_e("Check out the 'Quick Start' guide!", 'duplicator'); ?>
|
127 |
</a>
|
128 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
<div style="height:75px"> </div>
|
130 |
</div>
|
131 |
</td>
|
@@ -163,7 +176,7 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
|
|
163 |
<?php esc_html_e("Click the 'Create New' button to build a package.", 'duplicator'); ?><br/>
|
164 |
<div class="dup-quick-start">
|
165 |
<?php esc_html_e("New to Duplicator?", 'duplicator'); ?><br/>
|
166 |
-
<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=
|
167 |
<?php esc_html_e("Check out the 'Quick Start' guide!", 'duplicator'); ?>
|
168 |
</a>
|
169 |
</div>
|
@@ -276,6 +289,13 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
|
|
276 |
<?php
|
277 |
if ( DUP_Settings::Get('trace_log_enabled')) {
|
278 |
esc_html_e("Trace Logging Enabled. Please disable when trace capture is complete.", 'duplicator');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
279 |
}
|
280 |
?>
|
281 |
</div>
|
@@ -345,13 +365,13 @@ DIALOG: HELP DIALOG -->
|
|
345 |
<div id="dup-help-dlg-info" style="display:none">
|
346 |
<b><?php esc_html_e("Common Questions:", 'duplicator') ?></b><hr size='1'/>
|
347 |
<i class="far fa-file-alt fa-sm"></i> <a href="https://snapcreek.com/duplicator/docs/quick-start?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=help_btn_pack_help&utm_campaign=duplicator_free#quick-010-q" target="_blank"><?php esc_html_e("How do I create a package", 'duplicator') ?></a> <br/>
|
348 |
-
<i class="far fa-file-alt fa-sm"></i> <a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=help_btn_install_help&utm_campaign=duplicator_free#
|
349 |
<i class="far fa-file-code"></i> <a href="https://snapcreek.com/duplicator/docs/faqs-tech?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=help_btn_faq&utm_campaign=duplicator_free" target="_blank"><?php esc_html_e("Frequently Asked Questions!", 'duplicator') ?></a>
|
350 |
<br/><br/>
|
351 |
|
352 |
<b><?php esc_html_e("Other Resources:", 'duplicator') ?></b><hr size='1'/>
|
353 |
<i class="fas fa-question-circle fa-sm"></i> <a href="https://snapcreek.com/ticket?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=help_btn_ticket&utm_campaign=duplicator_free" target="_blank"><?php esc_html_e("Need help with the plugin?", 'duplicator') ?></a> <br/>
|
354 |
-
<i class="fa fa-lightbulb"></i> <a href="https://snapcreek.com/
|
355 |
<?php if ($completeCount >= 3) : ?>
|
356 |
<i class="fa fa-star"></i> <a href="https://wordpress.org/support/plugin/duplicator/reviews/?filter=5" target="vote-wp"><?php esc_html_e("Help review the plugin!", 'duplicator') ?></a>
|
357 |
<?php endif; ?>
|
8 |
$totalElements = DUP_Package::count_by_status();
|
9 |
$completeCount = DUP_Package::count_by_status(array(array('op' => '>=', 'status' => DUP_PackageStatus::COMPLETE))); // total packages completed
|
10 |
$active_package_present = DUP_Package::is_active_package_present();
|
11 |
+
$is_mu = is_multisite();
|
12 |
|
13 |
$package_running = false;
|
14 |
global $packageTablerowCount;
|
36 |
input#dup-bulk-action-all {margin:0px;padding:0px 0px 0px 5px;}
|
37 |
button.dup-button-selected {border:1px solid #000 !important; background-color:#dfdfdf !important;}
|
38 |
div.dup-quick-start {font-style:italic; font-size: 13px; line-height: 18px; margin-top: 15px}
|
39 |
+
div.dup-no-mu {font-size:13px; margin-top:25px; color:maroon; line-height:18px}
|
40 |
+
a.dup-btn-disabled {color:#999 !important; border: 1px solid #999 !important}
|
41 |
|
42 |
/* Table package details */
|
43 |
table.dup-pack-table {word-break:break-all;}
|
73 |
.dup-pack-info.is-running .get-btns button {display: none;}
|
74 |
div.sc-footer-left {color:maroon; font-size:11px; font-style: italic; float:left}
|
75 |
div.sc-footer-right {font-style: italic; float:right; font-size:12px}
|
|
|
76 |
</style>
|
77 |
|
78 |
<form id="form-duplicator" method="post">
|
88 |
</select>
|
89 |
<input type="button" id="dup-pack-bulk-apply" class="button action" value="<?php esc_html_e("Apply", 'duplicator') ?>" onclick="Duplicator.Pack.ConfirmDelete()">
|
90 |
<span class="btn-separator"></span>
|
91 |
+
<a href="javascript:void(0)" class="button" title="<?php esc_attr_e("Get Help", 'duplicator') ?>" onclick="Duplicator.Pack.showHelp()"><i class="fa fa-question-circle"></i></a>
|
|
|
|
|
92 |
<a href="admin.php?page=duplicator-settings&tab=package" class="button" title="<?php esc_attr_e("Settings", 'duplicator') ?>"><i class="fas fa-cog"></i></a>
|
93 |
+
<a href="admin.php?page=duplicator-settings&tab=import" class="button dup-btn-disabled" title="<?php esc_html_e("Import", 'duplicator'); ?>"><i class="fas fa-arrow-alt-circle-down"></i></a>
|
94 |
+
<span class="btn-separator"></span>
|
95 |
+
<a href="admin.php?page=duplicator-tools&tab=templates" class="button dup-btn-disabled" title="<?php esc_html_e("Templates", 'duplicator'); ?>"><i class="far fa-clone"></i></a>
|
96 |
+
<a href="admin.php?page=duplicator-tools&tab=recovery" class="button dup-btn-disabled" title="<?php esc_html_e("Recovery", 'duplicator'); ?>"><i class="fas fa-undo-alt"></i></a>
|
97 |
</td>
|
98 |
<td>
|
99 |
+
<a href="javascript:void(0)" class="button disabled"><i class="fa fa-archive fa-sm"></i> <?php esc_html_e("Packages", 'duplicator'); ?></a>
|
100 |
<?php
|
101 |
$package_url = admin_url('admin.php?page=duplicator&tab=new1');
|
102 |
$package_nonce_url = wp_nonce_url($package_url, 'new1-package');
|
103 |
?>
|
104 |
<a id="dup-create-new"
|
105 |
+
onclick="return Duplicator.Pack.CreateNew(this);"
|
106 |
href="<?php echo $package_nonce_url; ?>"
|
107 |
+
class="button <?php echo ($active_package_present ? 'disabled' : ''); ?>">
|
|
|
108 |
<?php esc_html_e("Create New", 'duplicator'); ?>
|
109 |
</a>
|
110 |
</td>
|
123 |
<i class="fa fa-archive fa-sm"></i>
|
124 |
<?php esc_html_e("No Packages Found.", 'duplicator'); ?><br/>
|
125 |
<?php esc_html_e("Click the 'Create New' button to build a package.", 'duplicator'); ?><br/>
|
126 |
+
<div class="dup-quick-start" <?php echo ($is_mu) ? 'style="display:none"' : ''; ?>>
|
127 |
<?php esc_html_e("New to Duplicator?", 'duplicator'); ?><br/>
|
128 |
+
<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=packages_empty1&utm_campaign=quick_start" target="_blank">
|
129 |
<?php esc_html_e("Check out the 'Quick Start' guide!", 'duplicator'); ?>
|
130 |
</a>
|
131 |
</div>
|
132 |
+
<?php if ($is_mu) {
|
133 |
+
echo '<div class="dup-no-mu">';
|
134 |
+
echo '<i class="fa fa-exclamation-triangle" aria-hidden="true"></i> ';
|
135 |
+
esc_html_e('Duplicator Lite does not officially support WordPress multisite.', 'duplicator');
|
136 |
+
echo "<br/>";
|
137 |
+
esc_html_e('We strongly recommend upgrading to ', 'duplicator');
|
138 |
+
echo " <i><a href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_is_mu_warn1&utm_campaign=duplicator_pro' target='_blank'>[" . esc_html__('Duplicator Pro', 'duplicator') . "]</a></i>.";
|
139 |
+
echo '</div>';
|
140 |
+
}
|
141 |
+
?>
|
142 |
<div style="height:75px"> </div>
|
143 |
</div>
|
144 |
</td>
|
176 |
<?php esc_html_e("Click the 'Create New' button to build a package.", 'duplicator'); ?><br/>
|
177 |
<div class="dup-quick-start">
|
178 |
<?php esc_html_e("New to Duplicator?", 'duplicator'); ?><br/>
|
179 |
+
<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=packages_empty2&utm_campaign=quick_start" target="_blank">
|
180 |
<?php esc_html_e("Check out the 'Quick Start' guide!", 'duplicator'); ?>
|
181 |
</a>
|
182 |
</div>
|
289 |
<?php
|
290 |
if ( DUP_Settings::Get('trace_log_enabled')) {
|
291 |
esc_html_e("Trace Logging Enabled. Please disable when trace capture is complete.", 'duplicator');
|
292 |
+
echo '<br/>';
|
293 |
+
}
|
294 |
+
if ($is_mu) {
|
295 |
+
esc_html_e('Duplicator Lite does not officially support WordPress multisite.', 'duplicator');
|
296 |
+
echo '<br/>';
|
297 |
+
esc_html_e('We strongly recommend using', 'duplicator');
|
298 |
+
echo " <i><a href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_is_mu_warn2&utm_campaign=duplicator_pro' target='_blank'>[" . esc_html__('Duplicator Pro', 'duplicator') . "]</a></i>.";
|
299 |
}
|
300 |
?>
|
301 |
</div>
|
365 |
<div id="dup-help-dlg-info" style="display:none">
|
366 |
<b><?php esc_html_e("Common Questions:", 'duplicator') ?></b><hr size='1'/>
|
367 |
<i class="far fa-file-alt fa-sm"></i> <a href="https://snapcreek.com/duplicator/docs/quick-start?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=help_btn_pack_help&utm_campaign=duplicator_free#quick-010-q" target="_blank"><?php esc_html_e("How do I create a package", 'duplicator') ?></a> <br/>
|
368 |
+
<i class="far fa-file-alt fa-sm"></i> <a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=help_btn_install_help&utm_campaign=duplicator_free#install_site" target="_blank"><?php esc_html_e('How do I install a package?', 'duplicator'); ?></a> <br/>
|
369 |
<i class="far fa-file-code"></i> <a href="https://snapcreek.com/duplicator/docs/faqs-tech?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=help_btn_faq&utm_campaign=duplicator_free" target="_blank"><?php esc_html_e("Frequently Asked Questions!", 'duplicator') ?></a>
|
370 |
<br/><br/>
|
371 |
|
372 |
<b><?php esc_html_e("Other Resources:", 'duplicator') ?></b><hr size='1'/>
|
373 |
<i class="fas fa-question-circle fa-sm"></i> <a href="https://snapcreek.com/ticket?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=help_btn_ticket&utm_campaign=duplicator_free" target="_blank"><?php esc_html_e("Need help with the plugin?", 'duplicator') ?></a> <br/>
|
374 |
+
<i class="fa fa-lightbulb"></i> <a href="https://snapcreek.com/ticket/index.php?a=add&category=69" target="_blank"><?php esc_html_e("Have an idea for the plugin?", 'duplicator') ?></a> <br/>
|
375 |
<?php if ($completeCount >= 3) : ?>
|
376 |
<i class="fa fa-star"></i> <a href="https://wordpress.org/support/plugin/duplicator/reviews/?filter=5" target="vote-wp"><?php esc_html_e("Help review the plugin!", 'duplicator') ?></a>
|
377 |
<?php endif; ?>
|
views/packages/main/s1.setup2.php
CHANGED
@@ -244,7 +244,7 @@ ARCHIVE -->
|
|
244 |
if ($retry_state == '2') {
|
245 |
echo '<i style="color:maroon">';
|
246 |
_e("This option has automatically been checked because you have opted for a <i class='fa fa-random'></i> Two-Part Install Process. Please complete the package build and continue with the ", 'duplicator');
|
247 |
-
printf('%s <a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=
|
248 |
'',
|
249 |
esc_html__('Quick Start Two-Part Install Instructions', 'duplicator'));
|
250 |
echo '</i><br/><br/>';
|
244 |
if ($retry_state == '2') {
|
245 |
echo '<i style="color:maroon">';
|
246 |
_e("This option has automatically been checked because you have opted for a <i class='fa fa-random'></i> Two-Part Install Process. Please complete the package build and continue with the ", 'duplicator');
|
247 |
+
printf('%s <a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=host_interupt_2partlink1&utm_campaign=build_issues#quick-060-q" target="faq">%s</a>.',
|
248 |
'',
|
249 |
esc_html__('Quick Start Two-Part Install Instructions', 'duplicator'));
|
250 |
echo '</i><br/><br/>';
|
views/packages/main/s2.scan2.php
CHANGED
@@ -5,8 +5,9 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
|
5 |
SERVER -->
|
6 |
<div class="details-title">
|
7 |
<i class="fa fa-hdd-o"></i> <i class="far fa-hdd fa-sm"></i> <?php esc_html_e("Setup", 'duplicator'); ?>
|
8 |
-
<div class="dup-more-details"
|
9 |
-
<a href="?page=duplicator-tools&tab=diagnostics" target="_blank"><i class="fa fa-microchip"></i></a
|
|
|
10 |
</div>
|
11 |
</div>
|
12 |
|
@@ -105,7 +106,7 @@ PHP SETTINGS -->
|
|
105 |
_e('<b>Due to these constraints Lite does not officially support the migration of managed hosts.</b> '
|
106 |
.'It’s possible one could get the package to install but it may require custom manual effort. '
|
107 |
.'To get support and the advanced installer processing required for managed host support we encourage users to <i>'
|
108 |
-
.'<a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=
|
109 |
.'Pro has more sophisticated package and installer logic and accounts for odd configurations associated with managed hosts.', 'duplicator');
|
110 |
echo '<br/><br/>';
|
111 |
|
@@ -186,18 +187,18 @@ WP SETTINGS -->
|
|
186 |
//MU SITE
|
187 |
if (is_multisite()) {
|
188 |
echo '<hr size="1" /><span><div class="scan-warn"><i class="fa fa-exclamation-triangle fa-sm"></i></div></span> <b>' . esc_html__('Multisite: Unsupported', 'duplicator') . "</b> <br/>";
|
189 |
-
esc_html_e('Duplicator does not support WordPress multisite migrations. We recommend using Duplicator Pro which currently supports full multisite migrations and
|
190 |
-
. '
|
191 |
echo '<br/><br/>';
|
192 |
|
193 |
-
esc_html_e('While it is not recommended you can still continue with the build of this package.
|
194 |
-
. 'need to be made to finalize this multisite migration.', 'duplicator');
|
195 |
-
echo " <i><a href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=
|
196 |
} else {
|
197 |
echo '<hr size="1" /><span><div class="scan-good"><i class="fa fa-check"></i></div></span> <b>' . esc_html__('Multisite: N/A', 'duplicator') . "</b> <br/>";
|
198 |
esc_html_e('This is not a multisite install so duplication will proceed without issue. Duplicator does not officially support multisite. However, Duplicator Pro supports '
|
199 |
. 'duplication of a full multisite network and also has the ability to install a multisite subsite as a standalone site.', 'duplicator');
|
200 |
-
echo " <i><a href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=
|
201 |
}
|
202 |
?>
|
203 |
</div>
|
5 |
SERVER -->
|
6 |
<div class="details-title">
|
7 |
<i class="fa fa-hdd-o"></i> <i class="far fa-hdd fa-sm"></i> <?php esc_html_e("Setup", 'duplicator'); ?>
|
8 |
+
<div class="dup-more-details">
|
9 |
+
<a href="?page=duplicator-tools&tab=diagnostics" target="_blank" title="<?php esc_attr_e('Show Diagnostics', 'duplicator');?>"><i class="fa fa-microchip"></i></a>
|
10 |
+
<a href="site-health.php" target="_blank" title="<?php esc_attr_e('Check Site Health', 'duplicator');?>"><i class="fas fa-file-medical-alt"></i></a>
|
11 |
</div>
|
12 |
</div>
|
13 |
|
106 |
_e('<b>Due to these constraints Lite does not officially support the migration of managed hosts.</b> '
|
107 |
.'It’s possible one could get the package to install but it may require custom manual effort. '
|
108 |
.'To get support and the advanced installer processing required for managed host support we encourage users to <i>'
|
109 |
+
.'<a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_is_mu_warn3&utm_campaign=duplicator_pro" target="_blank">upgrade to Duplicator Pro</a></i>. '
|
110 |
.'Pro has more sophisticated package and installer logic and accounts for odd configurations associated with managed hosts.', 'duplicator');
|
111 |
echo '<br/><br/>';
|
112 |
|
187 |
//MU SITE
|
188 |
if (is_multisite()) {
|
189 |
echo '<hr size="1" /><span><div class="scan-warn"><i class="fa fa-exclamation-triangle fa-sm"></i></div></span> <b>' . esc_html__('Multisite: Unsupported', 'duplicator') . "</b> <br/>";
|
190 |
+
esc_html_e('Duplicator does not support WordPress multisite migrations. We strongly recommend using Duplicator Pro which currently supports full multisite migrations and various other '
|
191 |
+
. 'subsite scenarios.', 'duplicator');
|
192 |
echo '<br/><br/>';
|
193 |
|
194 |
+
esc_html_e('While it is not recommended you can still continue with the build of this package. At install time additional manual custom configurations will '
|
195 |
+
. 'need to be made to finalize this multisite migration. Please note that any support requests for mulitsite with Duplicator Lite will not be supported.', 'duplicator');
|
196 |
+
echo " <i><a href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_is_mu_warn4&utm_campaign=duplicator_pro' target='_blank'>[" . esc_html__('upgrade to pro', 'duplicator') . "]</a></i>";
|
197 |
} else {
|
198 |
echo '<hr size="1" /><span><div class="scan-good"><i class="fa fa-check"></i></div></span> <b>' . esc_html__('Multisite: N/A', 'duplicator') . "</b> <br/>";
|
199 |
esc_html_e('This is not a multisite install so duplication will proceed without issue. Duplicator does not officially support multisite. However, Duplicator Pro supports '
|
200 |
. 'duplication of a full multisite network and also has the ability to install a multisite subsite as a standalone site.', 'duplicator');
|
201 |
+
echo " <i><a href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_is_mu_warn5&utm_campaign=duplicator_pro' target='_blank'>[" . esc_html__('upgrade to pro', 'duplicator') . "]</a></i>";
|
202 |
}
|
203 |
?>
|
204 |
</div>
|
views/packages/main/s2.scan3.php
CHANGED
@@ -53,7 +53,7 @@ ARCHIVE -->
|
|
53 |
if ($Package->Archive->ExportOnlyDB) { ?>
|
54 |
<div class="scan-item ">
|
55 |
<div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
|
56 |
-
<div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Database
|
57 |
<div id="only-db-scan-status"><div class="badge badge-warn"><?php esc_html_e("Notice", 'duplicator'); ?></div></div>
|
58 |
</div>
|
59 |
<div class="info">
|
53 |
if ($Package->Archive->ExportOnlyDB) { ?>
|
54 |
<div class="scan-item ">
|
55 |
<div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
|
56 |
+
<div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Database Only', 'duplicator');?></div>
|
57 |
<div id="only-db-scan-status"><div class="badge badge-warn"><?php esc_html_e("Notice", 'duplicator'); ?></div></div>
|
58 |
</div>
|
59 |
<div class="info">
|
views/packages/main/s3.build.php
CHANGED
@@ -32,6 +32,8 @@ $rand_txt[0] = $atext0;
|
|
32 |
div#dup-progress-area h2.title {background-color:#efefef; margin:0px}
|
33 |
div#dup-progress-area span.label {font-weight:bold}
|
34 |
div#dup-msg-success {color:#18592A; padding:5px;}
|
|
|
|
|
35 |
|
36 |
div.dup-msg-success-stats{color:#999;margin:5px 0; font-size:11px; line-height:13px}
|
37 |
div.dup-msg-success-links {margin:20px 5px 5px 5px; font-size: 13px;}
|
@@ -42,7 +44,7 @@ $rand_txt[0] = $atext0;
|
|
42 |
div#dup-create-area-nolink, div#dup-create-area-link {float:right; font-weight: bold; margin: 0; padding: 0}
|
43 |
div#dup-create-area-link {display:none; margin-left: -5px}
|
44 |
div#dup-progress-area div.dup-panel-panel { border-top: 1px solid silver}
|
45 |
-
fieldset.download-area {border:2px dashed #
|
46 |
fieldset.download-area legend {font-weight: bold; font-size: 16px; margin:auto}
|
47 |
button#dup-btn-installer, button#dup-btn-archive { line-height: 28px; min-width: 150px}
|
48 |
div.one-click-download {margin:15px 0 10px 0; font-size:16px; font-weight: bold}
|
@@ -53,7 +55,10 @@ $rand_txt[0] = $atext0;
|
|
53 |
button.button {font-size:16px !important; height:30px !important; font-weight:bold; padding:0px 10px 5px 10px !important; min-width: 150px }
|
54 |
span.dup-btn-size {font-size:11px;font-weight: normal}
|
55 |
p.get-pro {font-size:13px; color:#222; border-top:1px solid #eeeeee; padding:5px 0 0 0; margin:0; font-style:italic}
|
56 |
-
div.dup-howto-exe {font-size:
|
|
|
|
|
|
|
57 |
|
58 |
/*HOST TIMEOUT */
|
59 |
div#dup-msg-error {color:maroon; padding:5px;}
|
@@ -129,14 +134,13 @@ TOOL BAR: STEPS -->
|
|
129 |
</div>
|
130 |
|
131 |
<div class="dup-msg-success-stats">
|
132 |
-
<!--b><?php esc_html_e('Name', 'duplicator'); ?>:</b> <span id="data-name-hash"></span><br/-->
|
133 |
<b><?php esc_html_e('Process Time', 'duplicator'); ?>:</b> <span id="data-time"></span><br/>
|
134 |
</div><br/>
|
135 |
|
136 |
<!-- DOWNLOAD FILES -->
|
137 |
<fieldset class="download-area">
|
138 |
<legend>
|
139 |
-
<?php esc_html_e("Download Files", 'duplicator') ?> <i class="fa fa-download"></i>
|
140 |
</legend>
|
141 |
<button id="dup-btn-installer" class="button button-primary button-large" title="<?php esc_attr_e("Click to download installer file", 'duplicator') ?>">
|
142 |
<i class="fa fa-bolt fa-sm"></i> <?php esc_html_e("Installer", 'duplicator') ?>
|
@@ -160,18 +164,39 @@ TOOL BAR: STEPS -->
|
|
160 |
</div>
|
161 |
<div style="margin-top:20px; font-size:11px">
|
162 |
<span id="dup-click-to-copy-installer-name" class="link-style no-decoration" data-dup-copy-text="<?php echo esc_attr(DUP_Installer::DEFAULT_INSTALLER_FILE_NAME_WITHOUT_HASH); ?>">
|
163 |
-
<?php
|
164 |
-
esc_html_e("[Copy Installer Name to Clipboard]", 'duplicator');
|
165 |
-
?>
|
166 |
<i class="far fa-copy"></i>
|
167 |
</span>
|
168 |
</div>
|
169 |
</fieldset>
|
170 |
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
</div>
|
176 |
|
177 |
<p class="get-pro">
|
@@ -284,7 +309,7 @@ TOOL BAR: STEPS -->
|
|
284 |
<li>
|
285 |
<?php esc_html_e('Complete the package build and follow the ', 'duplicator'); ?>
|
286 |
<?php
|
287 |
-
printf('%s "<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=
|
288 |
'', esc_html__('Quick Start Two-Part Install Instructions', 'duplicator'));
|
289 |
?>
|
290 |
</li>
|
@@ -715,4 +740,4 @@ jQuery(document).ready(function ($)
|
|
715 |
Duplicator.Pack.CreateDupArchive();
|
716 |
<?php endif; ?>
|
717 |
});
|
718 |
-
</script>
|
32 |
div#dup-progress-area h2.title {background-color:#efefef; margin:0px}
|
33 |
div#dup-progress-area span.label {font-weight:bold}
|
34 |
div#dup-msg-success {color:#18592A; padding:5px;}
|
35 |
+
div.dup-no-mu {font-size:13px; margin-top:15px; color:maroon; line-height:18px}
|
36 |
+
sup.dup-new {font-weight: normal; color:#b10202; font-size:12px}
|
37 |
|
38 |
div.dup-msg-success-stats{color:#999;margin:5px 0; font-size:11px; line-height:13px}
|
39 |
div.dup-msg-success-links {margin:20px 5px 5px 5px; font-size: 13px;}
|
44 |
div#dup-create-area-nolink, div#dup-create-area-link {float:right; font-weight: bold; margin: 0; padding: 0}
|
45 |
div#dup-create-area-link {display:none; margin-left: -5px}
|
46 |
div#dup-progress-area div.dup-panel-panel { border-top: 1px solid silver}
|
47 |
+
fieldset.download-area {border:2px dashed #b5b5b5; padding:20px 20px 10px 20px; border-radius:9px; margin: auto; width:400px }
|
48 |
fieldset.download-area legend {font-weight: bold; font-size: 16px; margin:auto}
|
49 |
button#dup-btn-installer, button#dup-btn-archive { line-height: 28px; min-width: 150px}
|
50 |
div.one-click-download {margin:15px 0 10px 0; font-size:16px; font-weight: bold}
|
55 |
button.button {font-size:16px !important; height:30px !important; font-weight:bold; padding:0px 10px 5px 10px !important; min-width: 150px }
|
56 |
span.dup-btn-size {font-size:11px;font-weight: normal}
|
57 |
p.get-pro {font-size:13px; color:#222; border-top:1px solid #eeeeee; padding:5px 0 0 0; margin:0; font-style:italic}
|
58 |
+
div.dup-howto-exe {font-size:14px; font-weight: bold; margin:45px 0 20px 0; line-height:20px;color:#000; padding-top:10px; border-top:1px solid #eee}
|
59 |
+
div.dup-howto-exe-title {font-size:16px; margin:0 0 8px 0; color:#000}
|
60 |
+
div.dup-howto-exe small {font-weight: normal; display: block; margin-top: -2px; font-style: italic; font-size:11px; color:#777 }
|
61 |
+
div.dup-howto-exe a {margin-top: 8px; display: inline-block}
|
62 |
|
63 |
/*HOST TIMEOUT */
|
64 |
div#dup-msg-error {color:maroon; padding:5px;}
|
134 |
</div>
|
135 |
|
136 |
<div class="dup-msg-success-stats">
|
|
|
137 |
<b><?php esc_html_e('Process Time', 'duplicator'); ?>:</b> <span id="data-time"></span><br/>
|
138 |
</div><br/>
|
139 |
|
140 |
<!-- DOWNLOAD FILES -->
|
141 |
<fieldset class="download-area">
|
142 |
<legend>
|
143 |
+
<?php esc_html_e("Download Package Files", 'duplicator') ?> <i class="fa fa-download"></i>
|
144 |
</legend>
|
145 |
<button id="dup-btn-installer" class="button button-primary button-large" title="<?php esc_attr_e("Click to download installer file", 'duplicator') ?>">
|
146 |
<i class="fa fa-bolt fa-sm"></i> <?php esc_html_e("Installer", 'duplicator') ?>
|
164 |
</div>
|
165 |
<div style="margin-top:20px; font-size:11px">
|
166 |
<span id="dup-click-to-copy-installer-name" class="link-style no-decoration" data-dup-copy-text="<?php echo esc_attr(DUP_Installer::DEFAULT_INSTALLER_FILE_NAME_WITHOUT_HASH); ?>">
|
167 |
+
<?php esc_html_e("[Copy Installer Name to Clipboard]", 'duplicator'); ?>
|
|
|
|
|
168 |
<i class="far fa-copy"></i>
|
169 |
</span>
|
170 |
</div>
|
171 |
</fieldset>
|
172 |
|
173 |
+
<?php
|
174 |
+
if (is_multisite()) {
|
175 |
+
echo '<div class="dup-no-mu">';
|
176 |
+
echo '<i class="fa fa-exclamation-triangle" aria-hidden="true"></i> ';
|
177 |
+
esc_html_e('Notice: Duplicator Lite does not officially support WordPress multisite.', 'duplicator');
|
178 |
+
echo "<br/>";
|
179 |
+
esc_html_e('We strongly recommend upgrading to ', 'duplicator');
|
180 |
+
echo " <i><a href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_is_mu_warn6&utm_campaign=duplicator_pro' target='_blank'>[" . esc_html__('Duplicator Pro', 'duplicator') . "]</a></i>.";
|
181 |
+
echo '</div>';
|
182 |
+
}
|
183 |
+
?>
|
184 |
+
|
185 |
+
<div class="dup-howto-exe">
|
186 |
+
<div class="dup-howto-exe-title"><?php esc_html_e('How Do I Install This Package?', 'duplicator'); ?></div>
|
187 |
+
<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_built_install_help1&utm_campaign=duplicator_free#quick-040-q" target="_blank"><?php esc_html_e('Classic Install Method', 'duplicator'); ?></a><br/>
|
188 |
+
<small><?php esc_html_e("Install to an empty directory on this or a different server.", 'duplicator');?></small>
|
189 |
+
|
190 |
+
|
191 |
+
<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_built_install_help2&utm_campaign=duplicator_free#quick-043-q" target="_blank">
|
192 |
+
<?php esc_html_e('Overwrite Install Method', 'duplicator'); ?>
|
193 |
+
</a>
|
194 |
+
<sup class="dup-new"><?php esc_html_e('new', 'duplicator'); ?></sup>
|
195 |
+
<br/>
|
196 |
+
|
197 |
+
<small><?php esc_html_e("Quickly overwrite an existing WordPress site.", 'duplicator');?></small>
|
198 |
+
<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_built_install_help3&utm_campaign=duplicator_free#install_site" target="_blank"><?php esc_html_e('View All Methods', 'duplicator'); ?></a><br/>
|
199 |
+
<small><?php esc_html_e("Learn about all install types.", 'duplicator');?></small>
|
200 |
</div>
|
201 |
|
202 |
<p class="get-pro">
|
309 |
<li>
|
310 |
<?php esc_html_e('Complete the package build and follow the ', 'duplicator'); ?>
|
311 |
<?php
|
312 |
+
printf('%s "<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=host_interupt_2partlink2&utm_campaign=build_issues#quick-060-q" target="faq">%s</a>".',
|
313 |
'', esc_html__('Quick Start Two-Part Install Instructions', 'duplicator'));
|
314 |
?>
|
315 |
</li>
|
740 |
Duplicator.Pack.CreateDupArchive();
|
741 |
<?php endif; ?>
|
742 |
});
|
743 |
+
</script>
|
views/packages/screen.php
CHANGED
@@ -1,128 +1,128 @@
|
|
1 |
-
<?php
|
2 |
-
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
-
|
4 |
-
require_once DUPLICATOR_PLUGIN_PATH . '/classes/ui/class.ui.screen.base.php';
|
5 |
-
|
6 |
-
/*
|
7 |
-
Because the default way is overwriting the option names in the hidden input wp_screen_options[option]
|
8 |
-
I added all inputs via one option name and saved them with the update_user_meta function.
|
9 |
-
Also, the set-screen-option is not being triggered inside the class, that's why it's here. -TG
|
10 |
-
*/
|
11 |
-
add_filter('set-screen-option', 'dup_packages_set_option', 10, 3);
|
12 |
-
function dup_packages_set_option($status, $option, $value) {
|
13 |
-
if('package_screen_options' == $option){
|
14 |
-
$user_id = get_current_user_id();
|
15 |
-
}
|
16 |
-
return false;
|
17 |
-
}
|
18 |
-
|
19 |
-
class DUP_Package_Screen extends DUP_UI_Screen
|
20 |
-
{
|
21 |
-
|
22 |
-
public function __construct($page)
|
23 |
-
{
|
24 |
-
add_action('load-'.$page, array($this, 'Init'));
|
25 |
-
}
|
26 |
-
|
27 |
-
public function Init()
|
28 |
-
{
|
29 |
-
$active_tab = isset($_GET['tab']) ? $_GET['tab'] : 'list';
|
30 |
-
$active_tab = isset($_GET['action']) && $_GET['action'] == 'detail' ? 'detail' : $active_tab;
|
31 |
-
$this->screen = get_current_screen();
|
32 |
-
|
33 |
-
switch (strtoupper($active_tab)) {
|
34 |
-
case 'LIST': $content = $this->get_list_help(); break;
|
35 |
-
case 'NEW1': $content = $this->get_step1_help(); break;
|
36 |
-
case 'NEW2': $content = $this->get_step2_help(); break;
|
37 |
-
case 'NEW3': $content = $this->get_step3_help(); break;
|
38 |
-
case 'DETAIL': $content = $this->get_details_help(); break;
|
39 |
-
default:
|
40 |
-
$content = $this->get_list_help();
|
41 |
-
break;
|
42 |
-
}
|
43 |
-
|
44 |
-
$guide = '#guide-packs';
|
45 |
-
$faq = '#faq-package';
|
46 |
-
$content .= "<b>References:</b><br/>"
|
47 |
-
. "<a href='".esc_url("https://snapcreek.com/duplicator/docs/guide/".$guide)."' target='_sc-guide'>User Guide</a> | "
|
48 |
-
. "<a href='".esc_url("https://snapcreek.com/duplicator/docs/faqs-tech/".$faq)."' target='_sc-guide'>FAQs</a> | "
|
49 |
-
. "<a href='https://snapcreek.com/duplicator/docs/quick-start/' target='_sc-guide'>Quick Start</a>";
|
50 |
-
|
51 |
-
$this->screen->add_help_tab( array(
|
52 |
-
'id' => 'dup_help_package_overview',
|
53 |
-
'title' => esc_html__('Overview','duplicator'),
|
54 |
-
'content' => "<p>{$content}</p>"
|
55 |
-
)
|
56 |
-
);
|
57 |
-
|
58 |
-
$this->getSupportTab($guide, $faq);
|
59 |
-
$this->getHelpSidbar();
|
60 |
-
}
|
61 |
-
|
62 |
-
public function get_list_help()
|
63 |
-
{
|
64 |
-
return __("<b><i class='fa fa-archive'></i> Packages » All</b><br/> The 'Packages' section is the main interface for managing all the packages that have been created. "
|
65 |
-
. "A Package consists of two core files, the 'archive.zip' and the 'installer.php' file. The archive file is a zip file containing all your WordPress files and a "
|
66 |
-
. "copy of your WordPress database. The installer file is a php file that when browsed to via a web browser presents a wizard that redeploys/installs the website "
|
67 |
-
. "by extracting the archive file and installing the database. To create a package, click the 'Create New' button and follow the prompts. <br/><br/>"
|
68 |
-
|
69 |
-
. "<b><i class='fa fa-download'></i> Downloads</b><br/>"
|
70 |
-
. "To download the package files click on the Installer and Archive buttons after creating a package. The archive file will have a copy of the installer inside of it named "
|
71 |
-
. "installer-backup.php in case the original installer file is lost. To see the details of a package click on the <i class='fa fa-archive'></i> details button.<br/><br/>"
|
72 |
-
|
73 |
-
. "<b><i class='far fa-file-archive'></i> Archive Types</b><br/>"
|
74 |
-
. "An archive file can be saved as either a .zip file or .daf file. A zip file is a common archive format used to compress and group files. The daf file short for "
|
75 |
-
. "'Duplicator Archive Format' is a custom format used specifically for working with larger packages and scale-ability issues on many shared hosting platforms. Both "
|
76 |
-
. "formats work very similar. The main difference is that the daf file can only be extracted using the installer.php file or the "
|
77 |
-
. "<a href='https://snapcreek.com/duplicator/docs/faqs-tech/#faq-trouble-052-q' target='_blank'>DAF extraction tool</a>. The zip file can be used by the installer.php "
|
78 |
-
. "or other zip tools like winrar/7zip/winzip or other client-side tools. <br/><br/>"
|
79 |
-
,'duplicator');
|
80 |
-
}
|
81 |
-
|
82 |
-
|
83 |
-
public function get_step1_help()
|
84 |
-
{
|
85 |
-
return __("<b>Packages New » 1 Setup</b> <br/>"
|
86 |
-
. "The setup step allows for optional filtered directory paths, files, file extensions and database tables. To filter specific system files, click the 'Enable File Filters' "
|
87 |
-
. "checkbox and add the full path of the file or directory, followed by a semicolon. For a file extension add the name (i.e. 'zip') followed by a semicolon. <br/><br/>"
|
88 |
-
|
89 |
-
. "To exclude a database table, check the box labeled 'Enable Table Filters' and check the table name to exclude. To include only a copy of your database in the "
|
90 |
-
. "archive file check the box labeled 'Archive Only the Database'. The installer.php file can optionally be pre-filled with data at install time but is not "
|
91 |
-
. "required. <br/><br/>",'duplicator');
|
92 |
-
}
|
93 |
-
|
94 |
-
|
95 |
-
public function get_step2_help()
|
96 |
-
{
|
97 |
-
return __("<b>Packages » 2 Scan</b> <br/>"
|
98 |
-
. "The plugin will scan your system files and database to let you know if there are any concerns or issues that may be present. All items in green mean the checks "
|
99 |
-
. "looked good. All items in red indicate a warning. Warnings will not prevent the build from running, however if you do run into issues with the build then investigating "
|
100 |
-
. "the warnings should be considered. Click on each section for more details about each scan check. <br/><br/>",'duplicator');
|
101 |
-
}
|
102 |
-
|
103 |
-
public function get_step3_help()
|
104 |
-
{
|
105 |
-
return __("<b>Packages » 3 Build</b> <br/>"
|
106 |
-
. "The final step in the build process where the installer script and archive of the website can be downloaded. To start the install process follow these steps: "
|
107 |
-
. "<ol>"
|
108 |
-
. "<li>Download the installer.php and archive.zip files to your local computer.</li>"
|
109 |
-
. "<li>For localhost installs be sure you have PHP, Apache & MySQL installed on your local computer with software such as XAMPP, Instant WordPress or MAMP for MAC. "
|
110 |
-
. "Place the package.zip and installer.php into any empty directory under your webroot then browse to the installer.php via your web browser to launch the install wizard.</li>"
|
111 |
-
. "<li>For remote installs use FTP or cPanel to upload both the archive.zip and installer.php to your hosting provider. Place the files in a new empty directory under "
|
112 |
-
. "your host's webroot accessible from a valid URL such as http://your-domain/your-wp-directory/installer.php to launch the install wizard. On some hosts the root directory "
|
113 |
-
. "will be a something like public_html -or- www. If your're not sure contact your hosting provider. </li>"
|
114 |
-
. "</ol>"
|
115 |
-
. "For complete instructions see:<br/>
|
116 |
-
<a href='https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=
|
117 |
-
How do I install this Package?</a><br/><br/>",'duplicator');
|
118 |
-
}
|
119 |
-
|
120 |
-
public function get_details_help()
|
121 |
-
{
|
122 |
-
return __("<b>Packages » Details</b> <br/>"
|
123 |
-
. "The details view will give you a full break-down of the package including any errors that may have occured during the install. <br/><br/>",'duplicator');
|
124 |
-
}
|
125 |
-
|
126 |
-
}
|
127 |
-
|
128 |
-
|
1 |
+
<?php
|
2 |
+
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
+
|
4 |
+
require_once DUPLICATOR_PLUGIN_PATH . '/classes/ui/class.ui.screen.base.php';
|
5 |
+
|
6 |
+
/*
|
7 |
+
Because the default way is overwriting the option names in the hidden input wp_screen_options[option]
|
8 |
+
I added all inputs via one option name and saved them with the update_user_meta function.
|
9 |
+
Also, the set-screen-option is not being triggered inside the class, that's why it's here. -TG
|
10 |
+
*/
|
11 |
+
add_filter('set-screen-option', 'dup_packages_set_option', 10, 3);
|
12 |
+
function dup_packages_set_option($status, $option, $value) {
|
13 |
+
if('package_screen_options' == $option){
|
14 |
+
$user_id = get_current_user_id();
|
15 |
+
}
|
16 |
+
return false;
|
17 |
+
}
|
18 |
+
|
19 |
+
class DUP_Package_Screen extends DUP_UI_Screen
|
20 |
+
{
|
21 |
+
|
22 |
+
public function __construct($page)
|
23 |
+
{
|
24 |
+
add_action('load-'.$page, array($this, 'Init'));
|
25 |
+
}
|
26 |
+
|
27 |
+
public function Init()
|
28 |
+
{
|
29 |
+
$active_tab = isset($_GET['tab']) ? $_GET['tab'] : 'list';
|
30 |
+
$active_tab = isset($_GET['action']) && $_GET['action'] == 'detail' ? 'detail' : $active_tab;
|
31 |
+
$this->screen = get_current_screen();
|
32 |
+
|
33 |
+
switch (strtoupper($active_tab)) {
|
34 |
+
case 'LIST': $content = $this->get_list_help(); break;
|
35 |
+
case 'NEW1': $content = $this->get_step1_help(); break;
|
36 |
+
case 'NEW2': $content = $this->get_step2_help(); break;
|
37 |
+
case 'NEW3': $content = $this->get_step3_help(); break;
|
38 |
+
case 'DETAIL': $content = $this->get_details_help(); break;
|
39 |
+
default:
|
40 |
+
$content = $this->get_list_help();
|
41 |
+
break;
|
42 |
+
}
|
43 |
+
|
44 |
+
$guide = '#guide-packs';
|
45 |
+
$faq = '#faq-package';
|
46 |
+
$content .= "<b>References:</b><br/>"
|
47 |
+
. "<a href='".esc_url("https://snapcreek.com/duplicator/docs/guide/".$guide)."' target='_sc-guide'>User Guide</a> | "
|
48 |
+
. "<a href='".esc_url("https://snapcreek.com/duplicator/docs/faqs-tech/".$faq)."' target='_sc-guide'>FAQs</a> | "
|
49 |
+
. "<a href='https://snapcreek.com/duplicator/docs/quick-start/' target='_sc-guide'>Quick Start</a>";
|
50 |
+
|
51 |
+
$this->screen->add_help_tab( array(
|
52 |
+
'id' => 'dup_help_package_overview',
|
53 |
+
'title' => esc_html__('Overview','duplicator'),
|
54 |
+
'content' => "<p>{$content}</p>"
|
55 |
+
)
|
56 |
+
);
|
57 |
+
|
58 |
+
$this->getSupportTab($guide, $faq);
|
59 |
+
$this->getHelpSidbar();
|
60 |
+
}
|
61 |
+
|
62 |
+
public function get_list_help()
|
63 |
+
{
|
64 |
+
return __("<b><i class='fa fa-archive'></i> Packages » All</b><br/> The 'Packages' section is the main interface for managing all the packages that have been created. "
|
65 |
+
. "A Package consists of two core files, the 'archive.zip' and the 'installer.php' file. The archive file is a zip file containing all your WordPress files and a "
|
66 |
+
. "copy of your WordPress database. The installer file is a php file that when browsed to via a web browser presents a wizard that redeploys/installs the website "
|
67 |
+
. "by extracting the archive file and installing the database. To create a package, click the 'Create New' button and follow the prompts. <br/><br/>"
|
68 |
+
|
69 |
+
. "<b><i class='fa fa-download'></i> Downloads</b><br/>"
|
70 |
+
. "To download the package files click on the Installer and Archive buttons after creating a package. The archive file will have a copy of the installer inside of it named "
|
71 |
+
. "installer-backup.php in case the original installer file is lost. To see the details of a package click on the <i class='fa fa-archive'></i> details button.<br/><br/>"
|
72 |
+
|
73 |
+
. "<b><i class='far fa-file-archive'></i> Archive Types</b><br/>"
|
74 |
+
. "An archive file can be saved as either a .zip file or .daf file. A zip file is a common archive format used to compress and group files. The daf file short for "
|
75 |
+
. "'Duplicator Archive Format' is a custom format used specifically for working with larger packages and scale-ability issues on many shared hosting platforms. Both "
|
76 |
+
. "formats work very similar. The main difference is that the daf file can only be extracted using the installer.php file or the "
|
77 |
+
. "<a href='https://snapcreek.com/duplicator/docs/faqs-tech/#faq-trouble-052-q' target='_blank'>DAF extraction tool</a>. The zip file can be used by the installer.php "
|
78 |
+
. "or other zip tools like winrar/7zip/winzip or other client-side tools. <br/><br/>"
|
79 |
+
,'duplicator');
|
80 |
+
}
|
81 |
+
|
82 |
+
|
83 |
+
public function get_step1_help()
|
84 |
+
{
|
85 |
+
return __("<b>Packages New » 1 Setup</b> <br/>"
|
86 |
+
. "The setup step allows for optional filtered directory paths, files, file extensions and database tables. To filter specific system files, click the 'Enable File Filters' "
|
87 |
+
. "checkbox and add the full path of the file or directory, followed by a semicolon. For a file extension add the name (i.e. 'zip') followed by a semicolon. <br/><br/>"
|
88 |
+
|
89 |
+
. "To exclude a database table, check the box labeled 'Enable Table Filters' and check the table name to exclude. To include only a copy of your database in the "
|
90 |
+
. "archive file check the box labeled 'Archive Only the Database'. The installer.php file can optionally be pre-filled with data at install time but is not "
|
91 |
+
. "required. <br/><br/>",'duplicator');
|
92 |
+
}
|
93 |
+
|
94 |
+
|
95 |
+
public function get_step2_help()
|
96 |
+
{
|
97 |
+
return __("<b>Packages » 2 Scan</b> <br/>"
|
98 |
+
. "The plugin will scan your system files and database to let you know if there are any concerns or issues that may be present. All items in green mean the checks "
|
99 |
+
. "looked good. All items in red indicate a warning. Warnings will not prevent the build from running, however if you do run into issues with the build then investigating "
|
100 |
+
. "the warnings should be considered. Click on each section for more details about each scan check. <br/><br/>",'duplicator');
|
101 |
+
}
|
102 |
+
|
103 |
+
public function get_step3_help()
|
104 |
+
{
|
105 |
+
return __("<b>Packages » 3 Build</b> <br/>"
|
106 |
+
. "The final step in the build process where the installer script and archive of the website can be downloaded. To start the install process follow these steps: "
|
107 |
+
. "<ol>"
|
108 |
+
. "<li>Download the installer.php and archive.zip files to your local computer.</li>"
|
109 |
+
. "<li>For localhost installs be sure you have PHP, Apache & MySQL installed on your local computer with software such as XAMPP, Instant WordPress or MAMP for MAC. "
|
110 |
+
. "Place the package.zip and installer.php into any empty directory under your webroot then browse to the installer.php via your web browser to launch the install wizard.</li>"
|
111 |
+
. "<li>For remote installs use FTP or cPanel to upload both the archive.zip and installer.php to your hosting provider. Place the files in a new empty directory under "
|
112 |
+
. "your host's webroot accessible from a valid URL such as http://your-domain/your-wp-directory/installer.php to launch the install wizard. On some hosts the root directory "
|
113 |
+
. "will be a something like public_html -or- www. If your're not sure contact your hosting provider. </li>"
|
114 |
+
. "</ol>"
|
115 |
+
. "For complete instructions see:<br/>
|
116 |
+
<a href='https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_built_install_help4&utm_campaign=duplicator_free#quick-040-q' target='_blank'>
|
117 |
+
How do I install this Package?</a><br/><br/>",'duplicator');
|
118 |
+
}
|
119 |
+
|
120 |
+
public function get_details_help()
|
121 |
+
{
|
122 |
+
return __("<b>Packages » Details</b> <br/>"
|
123 |
+
. "The details view will give you a full break-down of the package including any errors that may have occured during the install. <br/><br/>",'duplicator');
|
124 |
+
}
|
125 |
+
|
126 |
+
}
|
127 |
+
|
128 |
+
|
views/settings/controller.php
CHANGED
@@ -23,8 +23,9 @@ $current_tab = isset($_REQUEST['tab']) ? sanitize_text_field($_REQUEST['tab']) :
|
|
23 |
<a href="?page=duplicator-settings&tab=package" class="nav-tab <?php echo ($current_tab == 'package') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Packages', 'duplicator'); ?></a>
|
24 |
<a href="?page=duplicator-settings&tab=schedule" class="nav-tab <?php echo ($current_tab == 'schedule') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Schedules', 'duplicator'); ?></a>
|
25 |
<a href="?page=duplicator-settings&tab=storage" class="nav-tab <?php echo ($current_tab == 'storage') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Storage', 'duplicator'); ?></a>
|
|
|
26 |
<a href="?page=duplicator-settings&tab=license" class="nav-tab <?php echo ($current_tab == 'license') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('License', 'duplicator'); ?></a>
|
27 |
-
|
28 |
</h2>
|
29 |
|
30 |
<?php
|
@@ -37,6 +38,8 @@ $current_tab = isset($_REQUEST['tab']) ? sanitize_text_field($_REQUEST['tab']) :
|
|
37 |
break;
|
38 |
case 'storage': include(DUPLICATOR_PLUGIN_PATH."views/settings/storage.php");
|
39 |
break;
|
|
|
|
|
40 |
case 'license': include(DUPLICATOR_PLUGIN_PATH."views/settings/license.php");
|
41 |
break;
|
42 |
case 'about': include(DUPLICATOR_PLUGIN_PATH."views/settings/about-info.php");
|
23 |
<a href="?page=duplicator-settings&tab=package" class="nav-tab <?php echo ($current_tab == 'package') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Packages', 'duplicator'); ?></a>
|
24 |
<a href="?page=duplicator-settings&tab=schedule" class="nav-tab <?php echo ($current_tab == 'schedule') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Schedules', 'duplicator'); ?></a>
|
25 |
<a href="?page=duplicator-settings&tab=storage" class="nav-tab <?php echo ($current_tab == 'storage') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Storage', 'duplicator'); ?></a>
|
26 |
+
<a href="?page=duplicator-settings&tab=import" class="nav-tab <?php echo ($current_tab == 'import') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Import', 'duplicator'); ?></a>
|
27 |
<a href="?page=duplicator-settings&tab=license" class="nav-tab <?php echo ($current_tab == 'license') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('License', 'duplicator'); ?></a>
|
28 |
+
<a href="?page=duplicator-settings&tab=about" class="nav-tab <?php echo ($current_tab == 'about') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('About', 'duplicator'); ?></a>
|
29 |
</h2>
|
30 |
|
31 |
<?php
|
38 |
break;
|
39 |
case 'storage': include(DUPLICATOR_PLUGIN_PATH."views/settings/storage.php");
|
40 |
break;
|
41 |
+
case 'import': include(DUPLICATOR_PLUGIN_PATH."views/settings/import.php");
|
42 |
+
break;
|
43 |
case 'license': include(DUPLICATOR_PLUGIN_PATH."views/settings/license.php");
|
44 |
break;
|
45 |
case 'about': include(DUPLICATOR_PLUGIN_PATH."views/settings/about-info.php");
|
views/settings/gopro.php
CHANGED
@@ -4,56 +4,68 @@ DUP_Util::hasCapability('export');
|
|
4 |
|
5 |
require_once(DUPLICATOR_PLUGIN_PATH . '/assets/js/javascript.php');
|
6 |
require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
?>
|
8 |
<style>
|
9 |
/*================================================
|
10 |
PAGE-SUPPORT:*/
|
11 |
div.dup-pro-area {
|
12 |
padding:10px 70px; max-width:750px; width:90%; margin:auto; text-align:center;
|
13 |
-
background:#fff; border-radius:20px;
|
14 |
-
box-shadow:inset 0px 0px 67px 20px rgba(241,241,241,1);
|
15 |
}
|
|
|
16 |
i.dup-gopro-help {color:#777 !important; margin-left:5px; font-size:14px; }
|
17 |
-
td.group-header {background-color:#D5D5D5; color: #000; font-size: 20px; padding:7px !important; font-weight: bold; text-align: left}
|
18 |
div.dup-compare-area {width:400px; float:left; border:1px solid #dfdfdf; border-radius:4px; margin:10px; line-height:18px;box-shadow:0 8px 6px -6px #ccc;}
|
19 |
div.feature {background:#fff; padding:15px; margin:2px; text-align:center; min-height:20px}
|
20 |
div.feature a {font-size:18px; font-weight:bold;}
|
21 |
div.dup-compare-area div.feature div.info {display:none; padding:7px 7px 5px 7px; font-style:italic; color:#555; font-size:14px}
|
22 |
div.dup-gopro-header {text-align:center; margin:5px 0 15px 0; font-size:18px; line-height:30px}
|
23 |
div.dup-gopro-header b {font-size:35px}
|
24 |
-
button.dup-check-it-btn {box-shadow:5px 5px 5px 0px #999 !important; font-size:20px !important; height:45px !important; padding:7px 30px 7px 30px !important; color:white!important; background-color: #3e8f3e!important; font-weight: bold!important;
|
25 |
-
color: white;
|
26 |
-
font-weight: bold;}
|
27 |
-
|
28 |
#comparison-table { margin-top:25px; border-spacing:0px; width:100%}
|
29 |
#comparison-table th { color:#E21906;}
|
30 |
#comparison-table td, #comparison-table th { font-size:1.2rem; padding:11px; }
|
31 |
#comparison-table .feature-column { text-align:left; width:46%}
|
32 |
#comparison-table .check-column { text-align:center; width:27% }
|
33 |
#comparison-table tr:nth-child(2n+2) { background-color:#f6f6f6; }
|
34 |
-
.button.button-large.dup-check-it-btn { line-height: 28px; }
|
35 |
-
|
36 |
</style>
|
37 |
|
38 |
-
<div class="dup-pro-area">
|
39 |
<img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/logo-dpro-300x50.png"); ?>" />
|
40 |
<div style="font-size:18px; font-style:italic; color:gray; border-bottom: 1px solid silver; padding-bottom:10px; margin-bottom: -30px">
|
41 |
-
<?php esc_html_e('The simplicity of Duplicator', 'duplicator') ?>
|
42 |
-
<?php esc_html_e('with power for everyone.', 'duplicator') ?>
|
43 |
</div>
|
44 |
|
45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
<tr>
|
47 |
<th class="feature-column"></th>
|
48 |
<th class="check-column"><?php esc_html_e('Free', 'duplicator') ?></th>
|
49 |
<th class="check-column"><?php esc_html_e('Professional', 'duplicator') ?></th>
|
50 |
</tr>
|
51 |
-
|
52 |
<!-- =====================
|
53 |
CORE FEATURES-->
|
54 |
-
|
55 |
<td colspan="3" class="group-header"><?php esc_html_e('Core Features', 'duplicator') ?></td>
|
56 |
-
</tr
|
57 |
<tr>
|
58 |
<td class="feature-column"><?php esc_html_e('Backup Files & Database', 'duplicator') ?></td>
|
59 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
@@ -100,12 +112,11 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
100 |
<td class="check-column"></td>
|
101 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
102 |
</tr>
|
103 |
-
|
104 |
<!-- =====================
|
105 |
CLOUD STORAGE-->
|
106 |
-
|
107 |
<td colspan="3" class="group-header"><?php esc_html_e('Cloud Storage', 'duplicator') ?></td>
|
108 |
-
</tr>
|
109 |
<tr>
|
110 |
<td class="feature-column">
|
111 |
<img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/amazon-64.png") ?>" style='height:16px; width:16px' />
|
@@ -154,12 +165,11 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
154 |
<td class="check-column"></td>
|
155 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
156 |
</tr>
|
157 |
-
|
158 |
<!-- =====================
|
159 |
ENHANCED OPTIONS -->
|
160 |
-
|
161 |
<td colspan="3" class="group-header"><?php esc_html_e('Enhanced Options', 'duplicator') ?></td>
|
162 |
-
</tr
|
163 |
<tr>
|
164 |
<td class="feature-column">
|
165 |
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/cpanel-48.png" style="width:16px; height:12px" />
|
@@ -243,15 +253,14 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
243 |
<td class="check-column"></td>
|
244 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
245 |
</tr>
|
246 |
-
|
247 |
<!-- =====================
|
248 |
POWER TOOLS -->
|
249 |
-
|
250 |
<td colspan="3" class="group-header">
|
251 |
<?php esc_html_e('Power Tools', 'duplicator'); ?>
|
252 |
<span style="font-weight:normal; font-size:11px"><?php esc_html_e('Freelancer+', 'duplicator'); ?></span>
|
253 |
</td>
|
254 |
-
</tr
|
255 |
<tr>
|
256 |
<td class="feature-column"><?php esc_html_e('Hourly Schedules', 'duplicator') ?></td>
|
257 |
<td class="check-column"></td>
|
@@ -305,15 +314,13 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
305 |
<td class="check-column"></td>
|
306 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
307 |
</tr>
|
308 |
-
|
309 |
-
|
310 |
<!-- =====================
|
311 |
MULTI-SITE -->
|
312 |
-
|
313 |
<td colspan="3" class="group-header">
|
314 |
<?php esc_html_e('MultiSite', 'duplicator'); ?>
|
315 |
</td>
|
316 |
-
</tr
|
317 |
<tr>
|
318 |
<td class="feature-column"><?php esc_html_e('Multisite Network Migration', 'duplicator') ?></td>
|
319 |
<td class="check-column"></td>
|
@@ -334,13 +341,5 @@ require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
|
334 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
335 |
</tr>
|
336 |
</table>
|
337 |
-
|
338 |
-
<br style="clear:both" />
|
339 |
-
<p style="text-align:center">
|
340 |
-
<button onclick="window.open('https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_go_pro&utm_campaign=duplicator_pro');" class="button button-large dup-check-it-btn" >
|
341 |
-
<?php esc_html_e('Check It Out!', 'duplicator') ?>
|
342 |
-
</button>
|
343 |
-
</p>
|
344 |
-
<br/><br/>
|
345 |
</div>
|
346 |
-
|
4 |
|
5 |
require_once(DUPLICATOR_PLUGIN_PATH . '/assets/js/javascript.php');
|
6 |
require_once(DUPLICATOR_PLUGIN_PATH . '/views/inc.header.php');
|
7 |
+
|
8 |
+
if(mt_rand(0, 1) == 0) {
|
9 |
+
$test_text = esc_html__('Check It Out!', 'duplicator');
|
10 |
+
$test_url = "https://snapcreek.com/duplicator/comparison/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_go_pro_checkitout&utm_campaign=duplicator_pro";
|
11 |
+
} else {
|
12 |
+
$test_text = esc_html__('Learn More', 'duplicator');
|
13 |
+
$test_url = "https://snapcreek.com/duplicator/comparison/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_go_pro_learnmore&utm_campaign=duplicator_pro";
|
14 |
+
}
|
15 |
+
|
16 |
?>
|
17 |
<style>
|
18 |
/*================================================
|
19 |
PAGE-SUPPORT:*/
|
20 |
div.dup-pro-area {
|
21 |
padding:10px 70px; max-width:750px; width:90%; margin:auto; text-align:center;
|
22 |
+
background:#fff; border-radius:20px; box-shadow:inset 0px 0px 67px 20px rgba(241,241,241,1);
|
|
|
23 |
}
|
24 |
+
div.dup-pro-area-no-table { padding:10px; max-width:850px; margin:40px auto; text-align:center;}
|
25 |
i.dup-gopro-help {color:#777 !important; margin-left:5px; font-size:14px; }
|
26 |
+
td.group-header {background-color:#D5D5D5; color: #000; font-size: 20px; padding:7px !important; font-weight: bold; text-align: left; display:none}
|
27 |
div.dup-compare-area {width:400px; float:left; border:1px solid #dfdfdf; border-radius:4px; margin:10px; line-height:18px;box-shadow:0 8px 6px -6px #ccc;}
|
28 |
div.feature {background:#fff; padding:15px; margin:2px; text-align:center; min-height:20px}
|
29 |
div.feature a {font-size:18px; font-weight:bold;}
|
30 |
div.dup-compare-area div.feature div.info {display:none; padding:7px 7px 5px 7px; font-style:italic; color:#555; font-size:14px}
|
31 |
div.dup-gopro-header {text-align:center; margin:5px 0 15px 0; font-size:18px; line-height:30px}
|
32 |
div.dup-gopro-header b {font-size:35px}
|
|
|
|
|
|
|
|
|
33 |
#comparison-table { margin-top:25px; border-spacing:0px; width:100%}
|
34 |
#comparison-table th { color:#E21906;}
|
35 |
#comparison-table td, #comparison-table th { font-size:1.2rem; padding:11px; }
|
36 |
#comparison-table .feature-column { text-align:left; width:46%}
|
37 |
#comparison-table .check-column { text-align:center; width:27% }
|
38 |
#comparison-table tr:nth-child(2n+2) { background-color:#f6f6f6; }
|
|
|
|
|
39 |
</style>
|
40 |
|
41 |
+
<div class="dup-pro-area-no-table">
|
42 |
<img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/logo-dpro-300x50.png"); ?>" />
|
43 |
<div style="font-size:18px; font-style:italic; color:gray; border-bottom: 1px solid silver; padding-bottom:10px; margin-bottom: -30px">
|
44 |
+
<?php esc_html_e('The simplicity of Duplicator with power for everyone.', 'duplicator') ?>
|
|
|
45 |
</div>
|
46 |
|
47 |
+
<div style="margin:60px 0 100px 0">
|
48 |
+
<div class="txt-call-action-title">
|
49 |
+
<?php esc_html_e('Take Duplicator to the next level with features you’ll really appreciate!', 'duplicator') ?><br/>
|
50 |
+
<?php esc_html_e("Check out what you're missing with Duplicator Pro...", 'duplicator') ?>
|
51 |
+
|
52 |
+
</div>
|
53 |
+
<br/><br/>
|
54 |
+
<a href="<?php echo $test_url ?>" class="dup-btn-call-action" target="_blank"><?php echo $test_text ?></a>
|
55 |
+
</div>
|
56 |
+
|
57 |
+
|
58 |
+
<table id="comparison-table" style="display:none">
|
59 |
<tr>
|
60 |
<th class="feature-column"></th>
|
61 |
<th class="check-column"><?php esc_html_e('Free', 'duplicator') ?></th>
|
62 |
<th class="check-column"><?php esc_html_e('Professional', 'duplicator') ?></th>
|
63 |
</tr>
|
|
|
64 |
<!-- =====================
|
65 |
CORE FEATURES-->
|
66 |
+
<tr>
|
67 |
<td colspan="3" class="group-header"><?php esc_html_e('Core Features', 'duplicator') ?></td>
|
68 |
+
</tr>
|
69 |
<tr>
|
70 |
<td class="feature-column"><?php esc_html_e('Backup Files & Database', 'duplicator') ?></td>
|
71 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
112 |
<td class="check-column"></td>
|
113 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
114 |
</tr>
|
|
|
115 |
<!-- =====================
|
116 |
CLOUD STORAGE-->
|
117 |
+
<tr>
|
118 |
<td colspan="3" class="group-header"><?php esc_html_e('Cloud Storage', 'duplicator') ?></td>
|
119 |
+
</tr>
|
120 |
<tr>
|
121 |
<td class="feature-column">
|
122 |
<img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/amazon-64.png") ?>" style='height:16px; width:16px' />
|
165 |
<td class="check-column"></td>
|
166 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
167 |
</tr>
|
|
|
168 |
<!-- =====================
|
169 |
ENHANCED OPTIONS -->
|
170 |
+
<tr>
|
171 |
<td colspan="3" class="group-header"><?php esc_html_e('Enhanced Options', 'duplicator') ?></td>
|
172 |
+
</tr>
|
173 |
<tr>
|
174 |
<td class="feature-column">
|
175 |
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/cpanel-48.png" style="width:16px; height:12px" />
|
253 |
<td class="check-column"></td>
|
254 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
255 |
</tr>
|
|
|
256 |
<!-- =====================
|
257 |
POWER TOOLS -->
|
258 |
+
<tr>
|
259 |
<td colspan="3" class="group-header">
|
260 |
<?php esc_html_e('Power Tools', 'duplicator'); ?>
|
261 |
<span style="font-weight:normal; font-size:11px"><?php esc_html_e('Freelancer+', 'duplicator'); ?></span>
|
262 |
</td>
|
263 |
+
</tr>
|
264 |
<tr>
|
265 |
<td class="feature-column"><?php esc_html_e('Hourly Schedules', 'duplicator') ?></td>
|
266 |
<td class="check-column"></td>
|
314 |
<td class="check-column"></td>
|
315 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
316 |
</tr>
|
|
|
|
|
317 |
<!-- =====================
|
318 |
MULTI-SITE -->
|
319 |
+
<tr>
|
320 |
<td colspan="3" class="group-header">
|
321 |
<?php esc_html_e('MultiSite', 'duplicator'); ?>
|
322 |
</td>
|
323 |
+
</tr>
|
324 |
<tr>
|
325 |
<td class="feature-column"><?php esc_html_e('Multisite Network Migration', 'duplicator') ?></td>
|
326 |
<td class="check-column"></td>
|
341 |
<td class="check-column"><i class="fa fa-check"></i></td>
|
342 |
</tr>
|
343 |
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
344 |
</div>
|
345 |
+
|
views/settings/import.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
+
?>
|
4 |
+
<style>
|
5 |
+
div.panel {padding: 20px 5px 10px 10px; text-align: center; }
|
6 |
+
div.sc-note {color:maroon; font-style: italic; line-height:17px; font-size:13px; margin:30px auto 40px auto; max-width: 650px; display:none}
|
7 |
+
</style>
|
8 |
+
|
9 |
+
<div class="panel">
|
10 |
+
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/logo-dpro-300x50.png" />
|
11 |
+
|
12 |
+
<div class="txt-call-action-title">
|
13 |
+
<?php echo '<i class="fas fa-arrow-alt-circle-down"></i> ' . esc_html__('Drag and Drop Imports are available in Duplicator Pro.', 'duplicator'); ?>
|
14 |
+
</div>
|
15 |
+
<div class="txt-call-action-sub">
|
16 |
+
<?php
|
17 |
+
esc_html_e('The Import feature lets you skip the FTP and database creation steps when installing a site.', 'duplicator');
|
18 |
+
echo '<br/>';
|
19 |
+
esc_html_e('Just drag and drop a Duplicator Pro archive to quickly replace an existing WordPress installation!', 'duplicator');
|
20 |
+
?>
|
21 |
+
</div>
|
22 |
+
|
23 |
+
<div class="sc-note">
|
24 |
+
<?php esc_html_e(' Drag and Drop import functionality works with packages created by Duplicator Pro. In the near future, the Duplicator Pro importer '
|
25 |
+
. 'will be enhanced to allow the importing of Duplicator Lite packages. For instructions on how to perform a classic or overwrite install with Duplicator Lite '
|
26 |
+
. 'packages visit the ', 'duplicator'); ?>
|
27 |
+
<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_built_install_help5&utm_campaign=duplicator_free#install_site" target="_blank"><?php esc_html_e('Quick Start Guide', 'duplicator'); ?></a>.
|
28 |
+
</div>
|
29 |
+
|
30 |
+
<a class="dup-btn-call-action" href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_tools_imports_checkitout&utm_campaign=duplicator_pro" target="_blank">
|
31 |
+
<?php esc_html_e('Check It Out!', 'duplicator') ?>
|
32 |
+
</a>
|
33 |
+
</div>
|
views/settings/schedule.php
CHANGED
@@ -1,27 +1,27 @@
|
|
1 |
-
<?php
|
2 |
-
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
-
?>
|
4 |
-
<style>
|
5 |
-
div.panel {padding: 20px 5px 10px 10px;}
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
<div class="panel">
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
1 |
+
<?php
|
2 |
+
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
+
?>
|
4 |
+
<style>
|
5 |
+
div.panel {padding: 20px 5px 10px 10px; text-align: center; }
|
6 |
+
</style>
|
7 |
+
|
8 |
+
|
9 |
+
<div class="panel">
|
10 |
+
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/logo-dpro-300x50.png" />
|
11 |
+
|
12 |
+
<div class="txt-call-action-title">
|
13 |
+
<i class="far fa-clock fa-sm"></i> <?php echo esc_html__('Schedules are available in Duplicator Pro.', 'duplicator'); ?>
|
14 |
+
</div>
|
15 |
+
|
16 |
+
<div class="txt-call-action-sub">
|
17 |
+
<?php
|
18 |
+
esc_html_e('Create robust schedules that automatically create packages while you sleep.', 'duplicator');
|
19 |
+
echo '<br/>';
|
20 |
+
esc_html_e('Simply choose your storage location and when you want it to run.', 'duplicator');
|
21 |
+
?>
|
22 |
+
</div>
|
23 |
+
|
24 |
+
<a class="dup-btn-call-action" href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_settings_schedule_checkitout&utm_campaign=duplicator_pro" target="_blank">
|
25 |
+
<?php esc_html_e('Check It Out!', 'duplicator') ?>
|
26 |
+
</a>
|
27 |
+
</div>
|
views/settings/storage.php
CHANGED
@@ -161,7 +161,7 @@ $storageAlert = new DUP_UI_Dialog();
|
|
161 |
$storageAlert->title = __('Advanced Storage', 'duplicator');
|
162 |
$storageAlert->height = 525;
|
163 |
$storageAlert->width = 400;
|
164 |
-
|
165 |
$storageAlert->message = dup_lite_storage_advanced_pro_content();
|
166 |
$storageAlert->initAlert();
|
167 |
?>
|
161 |
$storageAlert->title = __('Advanced Storage', 'duplicator');
|
162 |
$storageAlert->height = 525;
|
163 |
$storageAlert->width = 400;
|
164 |
+
//$storageAlert->okText = esc_html__('Close', 'duplicator');
|
165 |
$storageAlert->message = dup_lite_storage_advanced_pro_content();
|
166 |
$storageAlert->initAlert();
|
167 |
?>
|
views/tools/controller.php
CHANGED
@@ -19,10 +19,9 @@ if ('d' == $current_tab) {
|
|
19 |
<?php duplicator_header(__("Tools", 'duplicator')) ?>
|
20 |
|
21 |
<h2 class="nav-tab-wrapper">
|
22 |
-
<a href="?page=duplicator-tools&tab=diagnostics" class="nav-tab <?php echo ($current_tab == 'diagnostics') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('
|
23 |
<a href="?page=duplicator-tools&tab=templates" class="nav-tab <?php echo ($current_tab == 'templates') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Templates', 'duplicator'); ?></a>
|
24 |
<a href="?page=duplicator-tools&tab=recovery" class="nav-tab <?php echo ($current_tab == 'recovery') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Recovery', 'duplicator'); ?></a>
|
25 |
-
<a href="?page=duplicator-tools&tab=import" class="nav-tab <?php echo ($current_tab == 'import') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Import', 'duplicator'); ?></a>
|
26 |
</h2>
|
27 |
|
28 |
<?php
|
@@ -33,8 +32,6 @@ if ('d' == $current_tab) {
|
|
33 |
break;
|
34 |
case 'recovery': include(DUPLICATOR_PLUGIN_PATH."views/tools/recovery.php");
|
35 |
break;
|
36 |
-
case 'import': include(DUPLICATOR_PLUGIN_PATH."views/tools/import.php");
|
37 |
-
break;
|
38 |
}
|
39 |
?>
|
40 |
</div>
|
19 |
<?php duplicator_header(__("Tools", 'duplicator')) ?>
|
20 |
|
21 |
<h2 class="nav-tab-wrapper">
|
22 |
+
<a href="?page=duplicator-tools&tab=diagnostics" class="nav-tab <?php echo ($current_tab == 'diagnostics') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('General', 'duplicator'); ?></a>
|
23 |
<a href="?page=duplicator-tools&tab=templates" class="nav-tab <?php echo ($current_tab == 'templates') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Templates', 'duplicator'); ?></a>
|
24 |
<a href="?page=duplicator-tools&tab=recovery" class="nav-tab <?php echo ($current_tab == 'recovery') ? 'nav-tab-active' : '' ?>"> <?php esc_html_e('Recovery', 'duplicator'); ?></a>
|
|
|
25 |
</h2>
|
26 |
|
27 |
<?php
|
32 |
break;
|
33 |
case 'recovery': include(DUPLICATOR_PLUGIN_PATH."views/tools/recovery.php");
|
34 |
break;
|
|
|
|
|
35 |
}
|
36 |
?>
|
37 |
</div>
|
views/tools/import.php
DELETED
@@ -1,35 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
-
?>
|
4 |
-
<style>
|
5 |
-
div.panel {padding: 20px 5px 10px 10px;}
|
6 |
-
div.area {font-size:16px; text-align: center; line-height: 30px; margin:auto; width: 100%;}
|
7 |
-
div.sc-note {color:maroon; font-style: italic; line-height:17px; font-size: 12px; margin:30px auto 40px auto; max-width: 650px; }
|
8 |
-
</style>
|
9 |
-
|
10 |
-
<div class="panel">
|
11 |
-
|
12 |
-
<br/>
|
13 |
-
<div class="area">
|
14 |
-
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/logo-dpro-300x50.png" />
|
15 |
-
<?php
|
16 |
-
echo '<h2><i class="fas fa-arrow-alt-circle-down"></i> ' . esc_html__('Drag and Drop imports are available in Duplicator Pro.', 'duplicator') . '</h2>';
|
17 |
-
esc_html_e('The Import feature lets you skip the FTP and database creation steps when installing a site.', 'duplicator');
|
18 |
-
echo '<br/>';
|
19 |
-
esc_html_e('Just drag and drop a Duplicator Pro archive to quickly replace an existing WordPress installation!', 'duplicator');
|
20 |
-
?>
|
21 |
-
<div class="sc-note">
|
22 |
-
<?php esc_html_e(' Drag and Drop import functionality works with packages created by Duplicator Pro. In the near future, the Duplicator Pro importer '
|
23 |
-
. 'will be enhanced to allow the importing of Duplicator Lite packages. For instructions on how to perform a classic install of Duplicator Lite '
|
24 |
-
. 'packages visit the ', 'duplicator'); ?>
|
25 |
-
<a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_built_install_help&utm_campaign=duplicator_free#quick-040-q" target="_blank"><?php esc_html_e('Quick Start Guide', 'duplicator'); ?></a>.
|
26 |
-
</div>
|
27 |
-
</div>
|
28 |
-
<p style="text-align:center">
|
29 |
-
<a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_tools_imports&utm_campaign=duplicator_pro" target="_blank" class="button button-primary button-large dup-check-it-btn" >
|
30 |
-
<?php esc_html_e('Check Out Pro', 'duplicator') ?>
|
31 |
-
</a>
|
32 |
-
</p>
|
33 |
-
</div>
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
views/tools/recovery.php
CHANGED
@@ -1,28 +1,29 @@
|
|
1 |
-
<?php
|
2 |
-
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
-
?>
|
4 |
-
|
5 |
-
|
6 |
-
div.
|
7 |
-
</style>
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
1 |
+
<?php
|
2 |
+
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
+
?>
|
4 |
+
|
5 |
+
<style>
|
6 |
+
div.panel {padding: 20px 5px 10px 10px; text-align: center; }
|
7 |
+
</style>
|
8 |
+
|
9 |
+
|
10 |
+
<div class="panel">
|
11 |
+
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/logo-dpro-300x50.png" />
|
12 |
+
|
13 |
+
<div class="txt-call-action-title">
|
14 |
+
<i class="fas fa-undo-alt"></i>
|
15 |
+
<?php echo esc_html__('Recovery Points are available in Duplicator Pro.', 'duplicator'); ?>
|
16 |
+
</div>
|
17 |
+
|
18 |
+
<div class="txt-call-action-sub">
|
19 |
+
<?php
|
20 |
+
esc_html_e('Recovery Points allow you to quickly revert your website to a specific point in time.', 'duplicator');
|
21 |
+
echo '<br/>';
|
22 |
+
esc_html_e('Upgrade plugins or make risky site changes with confidence!', 'duplicator');
|
23 |
+
?>
|
24 |
+
</div>
|
25 |
+
|
26 |
+
<a class="dup-btn-call-action" href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_tools_recovery_checkitout&utm_campaign=duplicator_pro" target="_blank">
|
27 |
+
<?php esc_html_e('Check It Out!', 'duplicator') ?>
|
28 |
+
</a>
|
29 |
+
</div>
|
views/tools/templates.php
CHANGED
@@ -1,28 +1,28 @@
|
|
1 |
-
<?php
|
2 |
-
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
-
?>
|
4 |
-
<style>
|
5 |
-
div.panel {padding: 20px 5px 10px 10px;}
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
<
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
</div>
|
27 |
-
|
28 |
-
|
1 |
+
<?php
|
2 |
+
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
3 |
+
?>
|
4 |
+
<style>
|
5 |
+
div.panel {padding: 20px 5px 10px 10px; text-align: center; }
|
6 |
+
</style>
|
7 |
+
|
8 |
+
<div class="panel">
|
9 |
+
<img src="<?php echo DUPLICATOR_PLUGIN_URL ?>assets/img/logo-dpro-300x50.png" />
|
10 |
+
|
11 |
+
<div class="txt-call-action-title">
|
12 |
+
<i class="far fa-clone"></i>
|
13 |
+
<?php echo esc_html__('Templates are available in Duplicator Pro.', 'duplicator'); ?>
|
14 |
+
</div>
|
15 |
+
<div class="txt-call-action-sub">
|
16 |
+
<?php
|
17 |
+
esc_html_e('Templates allow you to customize what you want to include in your site and store it as a re-usable profile.', 'duplicator');
|
18 |
+
echo '<br/>';
|
19 |
+
esc_html_e('Save time and create a template that can be applied to a schedule or a custom package setup.', 'duplicator');
|
20 |
+
?>
|
21 |
+
</div>
|
22 |
+
|
23 |
+
<a class="dup-btn-call-action" href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_tools_templates_checkitout&utm_campaign=duplicator_pro" target="_blank">
|
24 |
+
<?php esc_html_e('Check It Out!', 'duplicator') ?>
|
25 |
+
</a>
|
26 |
+
</div>
|
27 |
+
|
28 |
+
|