Duplicator – WordPress Migration Plugin - Version 1.4.4

Version Description

Download this release

Release Info

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

Code changes from version 1.4.3 to 1.4.4

Files changed (57) hide show
  1. assets/css/style.css +103 -100
  2. assets/img/logo-box.png +0 -0
  3. assets/img/logo-dpro-300x50.png +0 -0
  4. assets/img/logo.png +0 -0
  5. classes/package/class.pack.installer.php +2 -0
  6. classes/ui/class.ui.dialog.php +5 -1
  7. define.php +2 -2
  8. duplicator.php +2 -2
  9. installer/dup-installer/assets/inc.css.php +869 -834
  10. installer/dup-installer/classes/class.s3.func.php +6 -7
  11. installer/dup-installer/classes/utilities/class.u.php +3 -1
  12. installer/dup-installer/ctrls/classes/class.ctrl.extraction.php +2 -4
  13. installer/dup-installer/ctrls/ctrl.s2.base.php +23 -22
  14. installer/dup-installer/ctrls/ctrl.s2.dbinstall.php +30 -11
  15. installer/dup-installer/ctrls/ctrl.s2.dbtest.php +9 -9
  16. installer/dup-installer/favicon/android-chrome-192x192.png +0 -0
  17. installer/dup-installer/favicon/android-chrome-384x384.png +0 -0
  18. installer/dup-installer/favicon/apple-touch-icon.png +0 -0
  19. installer/dup-installer/favicon/browserconfig.xml +2 -2
  20. installer/dup-installer/favicon/favicon-16x16.png +0 -0
  21. installer/dup-installer/favicon/favicon-32x32.png +0 -0
  22. installer/dup-installer/favicon/favicon.ico +0 -0
  23. installer/dup-installer/favicon/lite01_android-chrome-192x192.png +0 -0
  24. installer/dup-installer/favicon/lite01_android-chrome-256x256.png +0 -0
  25. installer/dup-installer/favicon/lite01_apple-touch-icon.png +0 -0
  26. installer/dup-installer/favicon/lite01_favicon-16x16.png +0 -0
  27. installer/dup-installer/favicon/lite01_favicon-32x32.png +0 -0
  28. installer/dup-installer/favicon/lite01_favicon.ico +0 -0
  29. installer/dup-installer/favicon/lite01_mstile-150x150.png +0 -0
  30. installer/dup-installer/favicon/lite01_safari-pinned-tab.svg +0 -42
  31. installer/dup-installer/favicon/mstile-150x150.png +0 -0
  32. installer/dup-installer/favicon/site.webmanifest +3 -3
  33. installer/dup-installer/main.installer.php +11 -11
  34. installer/dup-installer/views/view.s1.base.php +692 -630
  35. installer/dup-installer/views/view.s2.base.php +1 -1
  36. installer/dup-installer/views/view.s2.basic.php +8 -11
  37. installer/dup-installer/views/view.s2.dbtest.php +1 -1
  38. installer/dup-installer/views/view.s3.php +20 -11
  39. installer/dup-installer/views/view.s4.php +18 -16
  40. installer/dup-installer/views/view.security.error.php +5 -5
  41. installer/installer.tpl +17 -14
  42. readme.txt +2 -2
  43. views/packages/details/detail.php +51 -36
  44. views/packages/main/controller.php +7 -7
  45. views/packages/main/packages.php +19 -22
  46. views/packages/main/s1.setup1.php +9 -11
  47. views/packages/main/s1.setup2.php +38 -21
  48. views/packages/main/s2.scan1.php +18 -16
  49. views/packages/main/s2.scan2.php +4 -4
  50. views/packages/main/s2.scan3.php +10 -9
  51. views/packages/main/s3.build.php +221 -131
  52. views/packages/screen.php +18 -4
  53. views/settings/gopro.php +4 -3
  54. views/settings/license.php +28 -13
  55. views/settings/storage.php +5 -3
  56. views/tools/diagnostics/logging.php +1 -1
  57. views/tools/diagnostics/main.php +1 -1
assets/css/style.css CHANGED
@@ -12,30 +12,31 @@ label {font-size:13px}
12
  hr {border:0; border-top:1px solid #cecece; border-bottom:1px solid #fafafa; margin:10px 0px 2px 0px;}
13
  i[data-tooltip].fa-question-circle {cursor:pointer; color:#C3C3C3}
14
  i[data-tooltip].fa-lightbulb-o {cursor:pointer; color:gray}
15
- span.btn-separator {content: ''; display: inline-block; background: silver; margin: 2px 3px; height: 25px; width: 1px; vertical-align: top;}
16
  a.grey-icon i.fa {color:#777}
17
  i.grey-icon {color:#777}
18
 
19
- .no-display {display: none !important;}
20
- .link-style {color: #0074ab; cursor: pointer; text-decoration: underline;}
21
- .link-style:hover {color: #00a0d2;}
22
- .no-decoration {text-decoration: none;}
23
  p.description {padding-top:3px}
 
24
 
25
  /*TABS*/
26
- ul.category-tabs li {cursor: pointer}
27
 
28
- /*BOXES: Expandable sections */
29
- div.dup-box {padding:0px; display: block; background-color: #fff; border: 1px solid #e5e5e5; box-shadow: 0 1px 1px rgba(0,0,0,.04);}
30
- div.dup-box-title {font-size: 16px; padding: 10px 0 0 10px; font-weight: bold; cursor: pointer; height:27px; margin:0px; color:#000 }
31
- div.dup-box-title:hover {background-color: #FCFCFC;}
32
- div.dup-box-arrow {text-decoration:none!important; float:right; width:27px; height:30px; font-size:16px; cursor:pointer; padding:1px 0 0 0; white-space: nowrap}
33
  div.dup-box-panel {padding:10px 15px 10px 15px; border-top:1px solid #EEEEEE; margin:-1px 0 0 0;}
34
- div.dup-redirect {font-size:16px; font-weight: bold; padding: 10px}
35
 
36
- /*PANELS: Boxes that do not exapand */
37
- div.dup-panel {padding:0px; display: block; background-color: #fff; border: 1px solid #e5e5e5; box-shadow: 0 1px 1px rgba(0,0,0,.04);}
38
- div.dup-panel-title {font-size: 14px; padding: 10px 0 0 15px; font-weight: 600; height:28px; margin:0px; color:#000; }
39
  div.dup-panel-panel {padding:10px 15px 10px 15px; border-top:1px solid #EEEEEE; margin:-1px 0 0 0;}
40
 
41
  /*INFO-BOX:Simple box with no title */
@@ -50,19 +51,19 @@ div#dup-progress-bar-area h2 {margin-bottom:15px}
50
  div.dup-hdr-success {color:#23282d; font-size:22px; font-weight:bold}
51
  div.dup-hdr-error {color:#A62426; font-size:22px; font-weight:bold}
52
 
53
- /*DIALOGS: THICKBOX */
54
- #TB_title { padding-bottom: 3px!important; margin-bottom:5px!important; font-size:16px!important;}
55
  div.dup-dlg-alert-txt {padding:10px 0; font-size:16px; line-height:22px}
56
  div.dup-dlg-alert-btns {position:absolute; bottom:20px; right:20px;}
57
  div.dup-dlg-confirm-txt {padding:10px 0; font-size:16px}
58
  div.dup-dlg-confirm-btns {position:absolute; bottom:20px; right:20px;}
59
  div.dup-dlg-confirm-progress {display:none}
60
 
61
- /*ADMIN: NOTICES */
62
  div.dup-global-error-reserved-files p {font-size:14px}
63
  div.dup-global-error-reserved-files b.pass-msg {color:green; font-size:20px}
64
  div.dup-global-error-reserved-files p.pass-lnks {line-height:24px; margin:-7px 0 0 5px}
65
- div.dup-global-error-reserved-files div.pass-msg {padding:5px 0 0 10px; font-size:11px; color:#999; font-style: italic}
66
  div.dup-wpnotice-box {display:none;}
67
 
68
  /*================================================
@@ -74,137 +75,137 @@ input.parsley-error, textarea.parsley-error {
74
  }
75
  div.qtip-content {line-height:16px}
76
  ul.parsley-error-list {margin:1px 0px -7px 0px}
77
- div.notice-safemode {color: maroon;}
78
- div.cleanup-notice b.title {color: green;font-size: 20px;}
79
 
80
  /*SCREEN TABS*/
81
  div.dup-screen-hlp-info {line-height:26px; padding:10px 0 10px 0}
82
- #screen-meta-links .button { font-size:13px !important; height:auto !important;font-weight: normal; padding: 3px 6px 3px 16px !important;min-width:72px !important}
83
 
84
  /*= Duplicator Message
85
  ---------------------------------------*/
86
  .notice.duplicator-message {
87
- border: none;
88
- padding: 20px;
89
  }
90
 
91
  .notice.duplicator-message .duplicator-message-inner {
92
- display: -webkit-box;
93
- display: -webkit-flex;
94
- display: -ms-flexbox;
95
- display: flex;
96
- -webkit-box-align: center;
97
- -webkit-align-items: center;
98
- -ms-flex-align: center;
99
- align-items: center;
100
  }
101
 
102
  .notice.duplicator-message .duplicator-message-icon {
103
- font-size: 20px;
104
  }
105
 
106
  .notice.duplicator-message .duplicator-message-content {
107
- padding: 0 20px;
108
  }
109
 
110
  .notice.duplicator-message p {
111
- padding: 0;
112
- margin: 0;
113
  }
114
 
115
  .notice.duplicator-message h3 {
116
- margin: 0 0 5px;
117
  }
118
 
119
  .notice.duplicator-message .duplicator-message-action {
120
- text-align: center;
121
- display: -webkit-box;
122
- display: -webkit-flex;
123
- display: -ms-flexbox;
124
- display: flex;
125
- -webkit-box-orient: vertical;
126
- -webkit-box-direction: normal;
127
- -webkit-flex-direction: column;
128
- -ms-flex-direction: column;
129
- flex-direction: column;
130
- margin-left: auto;
131
  }
132
 
133
  .notice.duplicator-message .duplicator-message-action .duplicator-button {
134
- background-color: #D30C5C;
135
- color: #fff;
136
- border-color: #7c1337;
137
- -webkit-box-shadow: 0 1px 0 #7c1337;
138
- box-shadow: 0 1px 0 #7c1337;
139
- padding: 5px 30px;
140
- height: auto;
141
- line-height: 20px;
142
- text-transform: capitalize;
143
  }
144
 
145
  .notice.duplicator-message .duplicator-message-action .duplicator-button i {
146
- margin-right: 5px;
147
  }
148
 
149
  .notice.duplicator-message .duplicator-message-action .duplicator-button:hover {
150
- background-color: #a0124a;
151
  }
152
 
153
  .notice.duplicator-message .duplicator-message-action .duplicator-button:active {
154
- -webkit-box-shadow: inset 0 1px 0 #7c1337;
155
- box-shadow: inset 0 1px 0 #7c1337;
156
- -webkit-transform: translateY(1px);
157
- -ms-transform: translateY(1px);
158
- transform: translateY(1px);
159
  }
160
 
161
  .notice.duplicator-message .duplicator-message-action .duplicator-link {
162
- padding-top: 5px;
163
  }
164
 
165
  .notice.duplicator-message .duplicator-message-actions {
166
- margin-top: 10px;
167
  }
168
 
169
  .notice.duplicator-message .duplicator-message-actions .button.button-primary {
170
- margin-right: 5px;
171
  }
172
 
173
  .notice.duplicator-message-announcement {
174
- border-color: #D30C5C;
175
  }
176
 
177
  .notice.duplicator-message-announcement a {
178
- color: #D30C5C;
179
  }
180
 
181
- @media (min-width: 1200px) {
182
  .duplicator-message-action {
183
- padding-right: 10px;
184
  }
185
  }
186
 
187
- @media (max-width: 600px) {
188
  .notice.duplicator-message {
189
- padding: 20px;
190
  }
191
  .notice.duplicator-message .duplicator-message-inner {
192
- display: block;
193
- text-align: center;
194
  }
195
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-icon,
196
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-content,
197
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-action {
198
- display: block;
199
  }
200
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-action {
201
- text-align: center;
202
  }
203
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-icon {
204
- width: auto;
205
  }
206
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-content {
207
- padding: 10px 0;
208
  }
209
  }
210
 
@@ -214,19 +215,19 @@ div.dup-screen-hlp-info {line-height:26px; padding:10px 0 10px 0}
214
  }
215
 
216
  #dup-lite-inst-mode-details {
217
- display: none;
218
  max-width:825px;
219
  padding-left:20px;
220
  line-height:18px;
221
  }
222
 
223
  #dup-lite-inst-mode-details p {
224
- margin: 1em 0;
225
  }
226
 
227
  .storage_pos_fixed_label {
228
- display: inline-block;
229
- width: 90px;
230
  }
231
 
232
  /** Call to action **/
@@ -234,33 +235,33 @@ 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 {
@@ -272,3 +273,5 @@ a.dup-btn-call-action:hover {
272
  .dup-btn-call-action:active {
273
  color:#fff;
274
  }
 
 
12
  hr {border:0; border-top:1px solid #cecece; border-bottom:1px solid #fafafa; margin:10px 0px 2px 0px;}
13
  i[data-tooltip].fa-question-circle {cursor:pointer; color:#C3C3C3}
14
  i[data-tooltip].fa-lightbulb-o {cursor:pointer; color:gray}
15
+ span.btn-separator {content:''; display:inline-block; background:silver; margin:2px 3px; height:25px; width:1px; vertical-align:top;}
16
  a.grey-icon i.fa {color:#777}
17
  i.grey-icon {color:#777}
18
 
19
+ .no-display {display:none !important;}
20
+ .link-style {color:#0074ab; cursor:pointer; text-decoration:underline;}
21
+ .link-style:hover {color:#00a0d2;}
22
+ .no-decoration {text-decoration:none;}
23
  p.description {padding-top:3px}
24
+ .dup-guide-txt-color {color:#b0b0b0;}
25
 
26
  /*TABS*/
27
+ ul.category-tabs li {cursor:pointer}
28
 
29
+ /*BOXES:Expandable sections */
30
+ div.dup-box {padding:0px; display:block; background-color:#fff; border:1px solid #e5e5e5; box-shadow:0 1px 1px rgba(0,0,0,.04);}
31
+ div.dup-box-title {font-size:18px; padding:12px 0 3px 12px; font-weight:bold; cursor:pointer; height:30px; margin:0; color:#000; }
32
+ div.dup-box-title:hover {color:#555;}
33
+ div.dup-box-arrow {text-decoration:none!important; float:right; width:27px; height:30px; font-size:16px; cursor:pointer; padding:1px 0 0 0; white-space:nowrap}
34
  div.dup-box-panel {padding:10px 15px 10px 15px; border-top:1px solid #EEEEEE; margin:-1px 0 0 0;}
35
+ div.dup-redirect {font-size:16px; font-weight:bold; padding:10px}
36
 
37
+ /*PANELS:Boxes that do not exapand */
38
+ div.dup-panel {padding:0px; display:block; background-color:#fff; border:1px solid #e5e5e5; box-shadow:0 1px 1px rgba(0,0,0,.04);}
39
+ div.dup-panel-title {font-size:14px; padding:10px 0 0 15px; font-weight:600; height:28px; margin:0px; color:#000; }
40
  div.dup-panel-panel {padding:10px 15px 10px 15px; border-top:1px solid #EEEEEE; margin:-1px 0 0 0;}
41
 
42
  /*INFO-BOX:Simple box with no title */
51
  div.dup-hdr-success {color:#23282d; font-size:22px; font-weight:bold}
52
  div.dup-hdr-error {color:#A62426; font-size:22px; font-weight:bold}
53
 
54
+ /*DIALOGS:THICKBOX */
55
+ #TB_title { padding-bottom:3px!important; margin-bottom:5px!important; font-size:16px!important;}
56
  div.dup-dlg-alert-txt {padding:10px 0; font-size:16px; line-height:22px}
57
  div.dup-dlg-alert-btns {position:absolute; bottom:20px; right:20px;}
58
  div.dup-dlg-confirm-txt {padding:10px 0; font-size:16px}
59
  div.dup-dlg-confirm-btns {position:absolute; bottom:20px; right:20px;}
60
  div.dup-dlg-confirm-progress {display:none}
61
 
62
+ /*ADMIN:NOTICES */
63
  div.dup-global-error-reserved-files p {font-size:14px}
64
  div.dup-global-error-reserved-files b.pass-msg {color:green; font-size:20px}
65
  div.dup-global-error-reserved-files p.pass-lnks {line-height:24px; margin:-7px 0 0 5px}
66
+ div.dup-global-error-reserved-files div.pass-msg {padding:5px 0 0 10px; font-size:11px; color:#999; font-style:italic}
67
  div.dup-wpnotice-box {display:none;}
68
 
69
  /*================================================
75
  }
76
  div.qtip-content {line-height:16px}
77
  ul.parsley-error-list {margin:1px 0px -7px 0px}
78
+ div.notice-safemode {color:maroon;}
79
+ div.cleanup-notice b.title {color:green;font-size:20px;}
80
 
81
  /*SCREEN TABS*/
82
  div.dup-screen-hlp-info {line-height:26px; padding:10px 0 10px 0}
83
+ #screen-meta-links .button { font-size:13px !important; height:auto !important;font-weight:normal; padding:3px 6px 3px 16px !important;min-width:72px !important}
84
 
85
  /*= Duplicator Message
86
  ---------------------------------------*/
87
  .notice.duplicator-message {
88
+ border:none;
89
+ padding:20px;
90
  }
91
 
92
  .notice.duplicator-message .duplicator-message-inner {
93
+ display:-webkit-box;
94
+ display:-webkit-flex;
95
+ display:-ms-flexbox;
96
+ display:flex;
97
+ -webkit-box-align:center;
98
+ -webkit-align-items:center;
99
+ -ms-flex-align:center;
100
+ align-items:center;
101
  }
102
 
103
  .notice.duplicator-message .duplicator-message-icon {
104
+ font-size:20px;
105
  }
106
 
107
  .notice.duplicator-message .duplicator-message-content {
108
+ padding:0 20px;
109
  }
110
 
111
  .notice.duplicator-message p {
112
+ padding:0;
113
+ margin:0;
114
  }
115
 
116
  .notice.duplicator-message h3 {
117
+ margin:0 0 5px;
118
  }
119
 
120
  .notice.duplicator-message .duplicator-message-action {
121
+ text-align:center;
122
+ display:-webkit-box;
123
+ display:-webkit-flex;
124
+ display:-ms-flexbox;
125
+ display:flex;
126
+ -webkit-box-orient:vertical;
127
+ -webkit-box-direction:normal;
128
+ -webkit-flex-direction:column;
129
+ -ms-flex-direction:column;
130
+ flex-direction:column;
131
+ margin-left:auto;
132
  }
133
 
134
  .notice.duplicator-message .duplicator-message-action .duplicator-button {
135
+ background-color:#D30C5C;
136
+ color:#fff;
137
+ border-color:#7c1337;
138
+ -webkit-box-shadow:0 1px 0 #7c1337;
139
+ box-shadow:0 1px 0 #7c1337;
140
+ padding:5px 30px;
141
+ height:auto;
142
+ line-height:20px;
143
+ text-transform:capitalize;
144
  }
145
 
146
  .notice.duplicator-message .duplicator-message-action .duplicator-button i {
147
+ margin-right:5px;
148
  }
149
 
150
  .notice.duplicator-message .duplicator-message-action .duplicator-button:hover {
151
+ background-color:#a0124a;
152
  }
153
 
154
  .notice.duplicator-message .duplicator-message-action .duplicator-button:active {
155
+ -webkit-box-shadow:inset 0 1px 0 #7c1337;
156
+ box-shadow:inset 0 1px 0 #7c1337;
157
+ -webkit-transform:translateY(1px);
158
+ -ms-transform:translateY(1px);
159
+ transform:translateY(1px);
160
  }
161
 
162
  .notice.duplicator-message .duplicator-message-action .duplicator-link {
163
+ padding-top:5px;
164
  }
165
 
166
  .notice.duplicator-message .duplicator-message-actions {
167
+ margin-top:10px;
168
  }
169
 
170
  .notice.duplicator-message .duplicator-message-actions .button.button-primary {
171
+ margin-right:5px;
172
  }
173
 
174
  .notice.duplicator-message-announcement {
175
+ border-color:#D30C5C;
176
  }
177
 
178
  .notice.duplicator-message-announcement a {
179
+ color:#D30C5C;
180
  }
181
 
182
+ @media (min-width:1200px) {
183
  .duplicator-message-action {
184
+ padding-right:10px;
185
  }
186
  }
187
 
188
+ @media (max-width:600px) {
189
  .notice.duplicator-message {
190
+ padding:20px;
191
  }
192
  .notice.duplicator-message .duplicator-message-inner {
193
+ display:block;
194
+ text-align:center;
195
  }
196
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-icon,
197
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-content,
198
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-action {
199
+ display:block;
200
  }
201
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-action {
202
+ text-align:center;
203
  }
204
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-icon {
205
+ width:auto;
206
  }
207
  .notice.duplicator-message .duplicator-message-inner .duplicator-message-content {
208
+ padding:10px 0;
209
  }
210
  }
211
 
215
  }
216
 
217
  #dup-lite-inst-mode-details {
218
+ display:none;
219
  max-width:825px;
220
  padding-left:20px;
221
  line-height:18px;
222
  }
223
 
224
  #dup-lite-inst-mode-details p {
225
+ margin:1em 0;
226
  }
227
 
228
  .storage_pos_fixed_label {
229
+ display:inline-block;
230
+ width:90px;
231
  }
232
 
233
  /** Call to action **/
235
  margin:40px auto 20px auto;
236
  font-size:22px;
237
  line-height:30px;
238
+ font-weight:bold;
239
  width:100%;
240
  }
241
 
242
  div.txt-call-action-sub {
243
+ font-size:16px; line-height:24px; font-weight:bold; width:100%;
244
  margin:20px auto 40px auto;
245
  }
246
 
247
  a.dup-btn-call-action {
248
+ box-shadow:0px 10px 14px -7px #3e7327;
249
+ background:linear-gradient(to bottom, #5ca53a 5%, #72b352 100%);
250
+ background-color:#4f8e32;
251
+ border-radius:4px;
252
+ border:1px solid #4b8f29;
253
+ display:block;
254
+ cursor:pointer;
255
+ color:#ffffff;
256
+ font-family:Arial;
257
+ font-size:18px;
258
+ font-weight:bold;
259
+ padding:10px 30px;
260
+ text-decoration:none;
261
+ text-shadow:0px 1px 0px #5b8a3c;
262
  width:150px;
263
  margin:auto;
264
+ text-align:center;
265
  }
266
 
267
  a.dup-btn-call-action:hover {
273
  .dup-btn-call-action:active {
274
  color:#fff;
275
  }
276
+
277
+ td.dup-store-promo-area {padding:7px 0 7px 7px; border-top:1px solid silver; background-color: #F0F0F1}
assets/img/logo-box.png CHANGED
Binary file
assets/img/logo-dpro-300x50.png CHANGED
Binary file
assets/img/logo.png CHANGED
Binary file
classes/package/class.pack.installer.php CHANGED
@@ -144,11 +144,13 @@ class DUP_Installer
144
  $ac->version_db = $this->Package->VersionDB;
145
  $ac->version_php = $this->Package->VersionPHP;
146
  $ac->version_os = $this->Package->VersionOS;
 
147
  $ac->dbInfo = $this->Package->Database->info;
148
 
149
  //READ-ONLY: GENERAL
150
  // $ac->installer_base_name = $global->installer_base_name;
151
  $ac->installer_base_name = 'installer.php';
 
152
  $ac->package_name = "{$this->Package->NameHash}_archive.{$extension}";
153
  $ac->package_hash = $this->Package->getPackageHash();
154
  $ac->package_notes = $this->Package->Notes;
144
  $ac->version_db = $this->Package->VersionDB;
145
  $ac->version_php = $this->Package->VersionPHP;
146
  $ac->version_os = $this->Package->VersionOS;
147
+ $ac->dup_type = 'lite';
148
  $ac->dbInfo = $this->Package->Database->info;
149
 
150
  //READ-ONLY: GENERAL
151
  // $ac->installer_base_name = $global->installer_base_name;
152
  $ac->installer_base_name = 'installer.php';
153
+ $ac->installer_backup_name = $this->Package->NameHash.'_installer-backup.php';
154
  $ac->package_name = "{$this->Package->NameHash}_archive.{$extension}";
155
  $ac->package_hash = $this->Package->getPackageHash();
156
  $ac->package_notes = $this->Package->Notes;
classes/ui/class.ui.dialog.php CHANGED
@@ -132,6 +132,10 @@ class DUP_UI_Dialog
132
  }
133
  $onClickClose .= 'tb_remove();';
134
 
 
 
 
 
135
  $html = '
136
  <div id="'.esc_attr($this->id).'" style="display:none">
137
  <div class="dup-dlg-alert-txt">
@@ -139,7 +143,7 @@ class DUP_UI_Dialog
139
  <br/><br/>
140
  </div>
141
  <div class="dup-dlg-alert-btns">
142
- <input type="button" class="button button-large" value="'.esc_attr($this->okText).'" onclick="'.$onClickClose.'" />
143
  </div>
144
  </div>';
145
 
132
  }
133
  $onClickClose .= 'tb_remove();';
134
 
135
+ if (strlen($this->okText) == 0) {
136
+ $hideButton = "style='display:none'";
137
+ }
138
+
139
  $html = '
140
  <div id="'.esc_attr($this->id).'" style="display:none">
141
  <div class="dup-dlg-alert-txt">
143
  <br/><br/>
144
  </div>
145
  <div class="dup-dlg-alert-btns">
146
+ <input type="button" class="button button-large" value="'.esc_attr($this->okText).'" onclick="'.$onClickClose.'" '. $hideButton . '/>
147
  </div>
148
  </div>';
149
 
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.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
 
5
 
6
  if (function_exists('plugin_dir_url'))
7
  {
8
+ define('DUPLICATOR_VERSION', '1.4.4');
9
+ define('DUPLICATOR_VERSION_BUILD', '2022-02-01_14:00');
10
  define('DUPLICATOR_PLUGIN_URL', plugin_dir_url(__FILE__));
11
  define('DUPLICATOR_SITE_URL', get_site_url());
12
 
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.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/
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.4
7
  Requires at least: 4.0
8
+ Tested up to: 5.9
9
  Requires PHP: 5.3.8
10
  Author: Snap Creek
11
  Author URI: http://www.snapcreek.com/duplicator/
installer/dup-installer/assets/inc.css.php CHANGED
@@ -5,184 +5,185 @@
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;
175
- background-color: white;
176
- color: black;
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,
@@ -192,9 +193,9 @@
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,
@@ -203,310 +204,312 @@
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
@@ -514,348 +517,352 @@
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;
@@ -876,967 +883,995 @@
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 {
1774
- font-family: 'Font Awesome 5 Free';
1775
- margin-right: 10px;
1776
  }
1777
 
1778
  .expandable.close .expand-header::before {
1779
- content: "\f0fe";
1780
  }
1781
 
1782
  .expandable.open .expand-header::before {
1783
- content: "\f146";
1784
  }
1785
 
1786
  .expandable.close .content {
1787
- display: none;
1788
  }
1789
 
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;
1815
- text-align: right;
1816
- padding-right: 20px;
1817
- box-sizing: border-box;
1818
- width: 40%;
1819
- height: 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*/
@@ -1844,27 +1879,27 @@
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}
1864
  .dupx-debug label {font-weight:bold; display:block; margin:4px 0 1px 0}
1865
  .dupx-debug textarea {width:95%; height:100px; font-size:11px}
1866
  .dupx-debug input {font-size:11px; padding:3px}
1867
- <?php else : ?>
1868
  .dupx-debug {display:none}
1869
  <?php endif; ?>
1870
 
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;
175
+ background-color:white;
176
+ color:black;
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: #f0f0f0;
184
+ color: #0c0c0c;
185
  cursor: not-allowed;
186
+ border: 1px solid silver !important;
187
  }
188
 
189
  input:not([type=checkbox]):not([type=radio]):not([type=button]):disabled,
193
  select:disabled option:focus,
194
  select:disabled option:active,
195
  select:disabled option:checked {
196
+ background:#EBEBE4;
197
+ color:#ccc;
198
+ cursor:not-allowed;
199
  }
200
 
201
  select:disabled,
204
  select:disabled option:focus,
205
  select:disabled option:active,
206
  select:disabled option:checked {
207
+ text-decoration:line-through;
208
  }
209
 
210
  select[size] {
211
+ height:auto;
212
+ line-height:25px;
213
  }
214
 
215
  select,
216
  option {
217
+ color:black;
218
  }
219
 
220
  select {
221
+ padding-left:0;
222
  }
223
 
224
  select option {
225
+ padding:2px 5px;
226
  }
227
 
228
  select option:disabled {
229
+ text-decoration:line-through;
230
+ cursor:not-allowed;
231
+ color:#A9A9A9;
232
  }
233
 
234
  select:disabled {
235
+ background:#EBEBE4
236
  }
237
 
238
  input.readonly {
239
+ background-color:#efefef;
240
  }
241
  /* ============================
242
  COMMON VIEWS
243
  ============================ */
244
 
245
  div#content {
246
+ border:1px solid #CDCDCD;
247
+ width:850px;
248
+ min-height:550px;
249
+ margin:auto;
250
+ margin-top:18px;
251
+ border-radius:2px;
252
+ box-shadow:0 8px 6px -6px #999;
253
+ font-size:13px
254
  }
255
 
256
  div#content-inner {
257
+ padding:10px 25px;
258
+ min-height:550px
259
  }
260
 
261
  form.content-form {
262
+ min-height:550px;
263
+ position:relative;
264
+ line-height:17px
265
  }
266
 
267
  div.logfile-link {
268
+ float:right;
269
+ font-weight:normal;
270
+ font-size:11px;
271
+ font-style:italic
272
  }
273
 
274
  span.sub-notes {
275
+ font-size:10px;
276
  }
277
  /* Header */
278
 
279
  table.header-wizard {
280
+ width:100%;
281
+ box-shadow:0 5px 3px -3px #999;
282
+ background-color:#E0E0E0;
283
+ font-weight:bold
284
  }
285
 
286
  div.dupx-logfile-link {
287
+ float:right;
288
+ font-weight:normal;
289
+ font-style:italic;
290
+ font-size:11px;
291
+ cursor:pointer
292
  }
293
 
294
  .wiz-dupx-version {
295
+ white-space:nowrap;
296
+ color:#777;
297
+ font-size:11px;
298
+ font-style:italic;
299
+ text-align:right;
300
+ padding:3px 15px 5px 0;
301
+ line-height:14px;
302
+ font-weight:normal
303
  }
304
 
305
  .wiz-dupx-version a {
306
+ color:#777;
307
  }
308
 
309
  div.dupx-debug-hdr {
310
+ padding:5px 0 5px 0;
311
+ font-size:16px;
312
+ font-weight:bold
313
  }
314
 
315
  div.dupx-branding-header {
316
+ font-size:26px;
317
+ padding:10px 0 7px 15px;
318
  }
319
 
320
  .dupx-overwrite {
321
+ color:#AF0000;
322
  }
323
 
324
  .dupx-pass {
325
+ display:inline-block;
326
+ color:green;
327
  }
328
 
329
  .dupx-fail {
330
+ display:inline-block;
331
+ color:#AF0000;
332
  }
333
 
334
  .dupx-warn {
335
+ display:inline-block;
336
+ color:#555;
337
  }
338
 
339
  .dupx-notice {
340
+ display:inline-block;
341
+ color:#000;
342
  }
343
 
344
  i[data-tooltip].fa-question-circle {
345
+ cursor:pointer;
346
+ color:#C3C3C3
347
  }
348
 
349
  div.status-badge-pass {
350
+ background-color:#418446;
351
  }
352
 
353
  div.status-badge-fail {
354
+ background-color:maroon;
355
  }
356
 
357
  div.status-badge-warn {
358
+ background-color:#555;
359
  }
360
 
361
  div.status-badge-pass,
362
  div.status-badge-fail,
363
  div.status-badge-warn {
364
+ float:right;
365
+ border-radius:4px;
366
+ color:#fff;
367
+ padding:0 3px 0 3px;
368
+ font-size:11px !important;
369
+ min-width:30px;
370
+ text-align:center;
371
+ font-weight:normal;
372
  }
373
 
374
  button.default-btn,
375
  .default-btn,
376
  .default-btn:hover {
377
+ cursor:pointer;
378
+ color:#fff;
379
+ font-size:16px;
380
+ border-radius:5px;
381
+ padding:7px 25px 5px 25px;
382
+ background-color:#13659C;
383
+ border:1px solid gray;
384
+ text-decoration:none;
385
  }
386
 
387
  button.disabled,
388
  input.disabled {
389
+ background-color:#F4F4F4;
390
+ color:silver;
391
+ border:1px solid silver;
392
  }
393
 
394
  div.log-ui-error {
395
+ padding-top:2px;
396
+ font-size:13px
397
  }
398
 
399
  div#progress-area {
400
+ padding:5px;
401
+ margin:150px 0 0 0;
402
+ text-align:center;
403
  }
404
 
405
  div#ajaxerr-data {
406
+ padding:6px;
407
+ height:425px;
408
+ width:99%;
409
+ border:1px solid silver;
410
+ border-radius:2px;
411
+ background-color:#F1F1F1;
412
+ font-size:13px;
413
+ overflow-y:scroll;
414
+ line-height:20px
415
  }
416
 
417
  div.hdr-main {
418
+ font-size:22px;
419
+ padding:0 0 5px 0;
420
+ border-bottom:1px solid #D3D3D3;
421
+ font-weight:bold;
422
+ margin:5px 0 20px 0;
423
  }
424
 
425
  div.hdr-main span.step {
426
+ color:#DB4B38
427
  }
428
 
429
  div.sub-header {
430
+ font-size:11px;
431
+ font-style:italic;
432
+ font-weight:normal;
433
+ margin:5px 0 -1px 0
434
  }
435
 
436
  div.hdr-sub1 {
437
+ font-size:18px;
438
+ margin-bottom:5px;
439
+ border:1px solid #D3D3D3;
440
+ padding:10px;
441
+ background-color:#E0E0E0;
442
+ font-weight:bold;
443
+ border-radius:2px
444
  }
445
 
446
  div.hdr-sub1 a {
447
+ cursor:pointer;
448
+ text-decoration:none !important
449
  }
450
 
451
  div.hdr-sub1 i.fa {
452
+ font-size:15px;
453
+ display:inline-block;
454
+ margin:2px 5px 0 0;
455
+ vertical-align:top
456
  }
457
 
458
  div.hdr-sub1-area {
459
+ padding:5px
460
  }
461
 
462
  div.hdr-sub2 {
463
+ font-size:15px;
464
+ padding:2px 2px 2px 0;
465
+ font-weight:bold;
466
+ margin-bottom:5px;
467
+ border:none
468
  }
469
 
470
  div.hdr-sub3 {
471
+ font-size:15px;
472
+ padding:2px 2px 2px 0;
473
+ border-bottom:1px solid #D3D3D3;
474
+ font-weight:bold;
475
+ margin-bottom:5px;
476
  }
477
 
478
  div.hdr-sub4 {
479
+ font-size:15px;
480
+ padding:7px;
481
+ border:1px solid #D3D3D3;
482
  ;
483
+ font-weight:bold;
484
+ background-color:#e9e9e9;
485
  }
486
 
487
  div.hdr-sub4:hover {
488
+ background-color:#dfdfdf;
489
+ cursor:pointer
490
  }
491
 
492
  div.toggle-hdr:hover {
493
+ cursor:pointer;
494
+ background-color:#f1f1f1;
495
+ border:1px solid #dcdcdc;
496
  }
497
 
498
  div.toggle-hdr:hover a {
499
+ color:#000
500
  }
501
 
502
  [data-type="toggle"]>i.fa,
503
  i.fa.fa-toggle-empty {
504
+ min-width:8px;
505
  }
506
 
507
+ div#tabs .ui-widget-header,
508
+ div#tabs-opts .ui-widget-header
509
+ {
510
+ border:none;
511
+ border-bottom:1px solid #D3D3D3 !important;
512
+ background:#fff
513
  }
514
  /* ============================
515
  NOTICES
517
  /* step messages */
518
 
519
  #step-messages {
520
+ padding:10px 25px 0;
521
  }
522
 
523
  .notice {
524
+ background:#fff;
525
+ border:1px solid #dfdfdf;
526
+ border-left:4px solid #fff;
527
+ margin:4px;
528
+ padding:5px;
529
+ border-radius:2px;
530
+ font-size:12px;
531
  }
532
 
533
  .notice-report {
534
+ border-left:4px solid #fff;
535
+ padding-left:0;
536
+ padding-right:0;
537
+ margin-bottom:4px;
538
  }
539
 
540
  .next-step .title-separator {
541
+ margin-top:5px;
542
+ padding-top:5px;
543
+ border-top:1px solid lightgray;
544
  }
545
 
546
  .notice .info pre {
547
+ margin:0;
548
+ padding:0;
549
+ overflow:auto;
550
  }
551
 
552
  .notice-report .title {
553
+ padding:0 10px;
554
  }
555
 
556
  .notice-report .info {
557
+ border-top:1px solid #dedede;
558
+ padding:10px;
559
+ font-size:10px;
560
+ background:#FAFAFA;
561
+ word-wrap:break-word;
562
  }
563
 
564
  .notice.l-info,
565
  .notice.l-notice {
566
+ border-left-color:#197b19;
567
  }
568
 
569
  .notice.l-swarning {
570
+ border-left-color:#636363;
571
  }
572
 
573
  .notice.l-hwarning {
574
+ border-left-color:#636363;
575
  }
576
 
577
  .notice.l-critical {
578
+ border-left-color:maroon;
579
  }
580
 
581
  .notice.l-fatal {
582
+ border-left-color:#000000;
583
  }
584
 
585
  .report-sections-list .section {
586
+ border:1px solid #DFDFDF;
587
+ margin-bottom:25px;
588
+ box-shadow:4px 8px 11px -8px rgba(0, 0, 0, 0.41);
589
  }
590
 
591
  .report-sections-list .section>.section-title {
592
+ background-color:#efefef;
593
+ padding:3px;
594
+ font-weight:bold;
595
+ text-align:center;
596
+ font-size:14px;
597
  }
598
 
599
  .report-sections-list .section>.section-content {
600
+ padding:5px;
601
  }
602
 
603
  .notice-level-status {
604
+ border-radius:2px;
605
+ padding:2px;
606
+ margin:1px;
607
+ font-size:10px;
608
+ display:inline-block;
609
+ color:#FFF;
610
+ font-weight:bold;
611
+ min-width:55px;
612
  }
613
 
614
  .notice-level-status.l-info,
615
  .notice-level-status.l-notice {
616
+ background:#197b19;
617
  }
618
 
619
  .notice-level-status.l-swarning {
620
+ background:#636363;
621
  }
622
 
623
  .notice-level-status.l-hwarning {
624
+ background:#636363;
625
  }
626
 
627
  .notice-level-status.l-critical {
628
+ background:maroon;
629
  }
630
 
631
  .notice-level-status.l-fatal {
632
+ background:#000000;
633
  }
634
 
635
  .gray-panel {
636
+ border:1px solid silver;
637
+ margin:5px 0;
638
+ padding:10px;
639
+ background:#f9f9f9;
640
+ border-radius:2px
641
  }
642
 
643
  .gray-panel.warn-text,
644
  .gray-panel .warn-text {
645
+ font-size:12px;
646
+ color:maroon
647
  }
648
 
649
  .gray-panel-overwrite {
650
+ font-size:14px !important;
651
+ line-height:25px;
652
  }
653
  /*Adv Opts */
654
 
655
  table.dupx-opts {
656
+ width:100%;
657
+ border:0px;
658
  }
659
 
660
  table.dupx-opts td {
661
+ padding:5px;
662
  }
663
 
664
  table.dupx-opts td:first-child {
665
+ width:125px;
666
+ font-weight:bold
667
  }
668
 
669
  table.dupx-advopts td:first-child {
670
+ width:125px;
671
  }
672
 
673
  table.dupx-advopts label.radio {
674
+ width:50px;
675
+ display:inline-block
676
  }
677
 
678
  table.dupx-advopts label {
679
+ white-space:nowrap;
680
+ cursor:pointer
681
  }
682
 
683
  table.dupx-advopts-space {
684
+ line-height:24px
685
  }
686
 
687
  div.error-pane {
688
+ border:1px solid #efefef;
689
+ border-left:4px solid maroon;
690
+ padding:0 0 0 10px;
691
+ margin:2px 0 10px 0
692
  }
693
 
694
  div.dupx-ui-error {
695
+ padding-top:2px;
696
+ font-size:13px;
697
+ line-height:20px
698
  }
699
 
700
  div.footer-buttons {
701
+ position:absolute;
702
+ bottom:10px;
703
+ padding:10px;
704
+ right:0;
705
+ width:100%;
706
+ text-align:right
707
  }
708
 
709
  div.footer-buttons input:hover,
710
  button:hover {
711
+ border:1px solid #000
712
  }
713
 
714
  div.footer-buttons input[disabled=disabled],
715
  button[disabled=disabled] {
716
+ background-color:#F4F4F4;
717
+ color:silver;
718
+ border:1px solid silver;
719
  }
720
 
721
  form#form-debug {
722
+ display:block;
723
+ margin:10px auto;
724
+ width:750px;
725
  }
726
 
727
  form#form-debug a {
728
+ display:inline-block;
729
  }
730
 
731
  form#form-debug pre {
732
+ margin-top:-2px;
733
+ display:none
734
  }
735
  /*Dialog Info */
736
 
737
  div.dlg-serv-info {
738
+ line-height:22px;
739
+ font-size:12px
740
  }
741
 
742
  div.dlg-serv-info label {
743
+ display:inline-block;
744
+ width:200px;
745
+ font-weight:bold
746
  }
747
 
748
  div.dlg-serv-info div.hdr {
749
+ font-weight:bold;
750
+ margin-top:5px;
751
+ padding:2px 5px 2px 0;
752
+ border-bottom:1px solid #777;
753
+ font-size:14px
754
  }
755
 
756
  div.dupx-modes {
757
+ color:#999;
758
+ font-weight:normal;
759
+ font-style:italic;
760
+ font-size:11px;
761
+ padding:5px 10px 0 0;
762
+ text-align:right
763
+ }
764
+
765
+ div.dupx-panel-area {
766
+ padding:1em 1.4em;
767
  }
768
  /* ============================
769
  INIT 1:SECURE PASSWORD
770
  ============================ */
771
 
772
  button.pass-toggle {
773
+ height:26px;
774
+ width:26px;
775
+ position:absolute;
776
+ top:0px;
777
+ right:0px;
778
+ border:1px solid silver;
779
+ border-radius:0 4px 4px 0;
780
+ padding:2px 0 0 3px;
781
  }
782
 
783
  button.pass-toggle i {
784
+ padding:0;
785
+ display:block;
786
+ margin:-4px 0 0 -5px
787
  }
788
 
789
  div.i1-pass-area {
790
+ width:100%;
791
+ text-align:center;
792
+ max-width:300px;
793
+ margin:auto;
794
+ position:relative;
795
  }
796
 
797
  div.i1-pass-data table {
798
+ width:100%;
799
+ border-collapse:collapse;
800
+ padding:0
801
  }
802
 
803
  div.i1-pass-data label {
804
+ display:block;
805
+ margin-bottom:10px;
806
+ font-weight:bold;
807
  }
808
 
809
  div.i1-pass-errmsg {
810
+ color:maroon;
811
+ font-weight:bold
812
  }
813
 
814
  div#i1-pass-input {
815
+ position:relative;
816
+ margin:2px 0 15px 0
817
  }
818
 
819
  input#secure-pass {
820
+ border-radius:4px 0 0 4px;
821
+ width:250px
822
  }
823
 
824
  #body-secure .param-wrapper {
825
+ display:flex;
826
  }
827
 
828
  #body-secure .param-wrapper > label {
829
+ min-width:150px;
830
+ font-weight:bold;
831
+ line-height:27px;
832
  }
833
 
834
  #body-secure .param-wrapper > *:nth-child(2) {
835
+ width:100%;
836
  }
837
 
838
  .param-wrapper .sub-note {
839
+ display:block;
840
+ font-size:11px;
841
  margin-top:6px;
842
  }
843
 
844
  #body-secure .param-wrapper .sub-note {
845
+ text-align:right;
846
  }
847
 
848
  .box {
849
+ border:1px solid silver;
850
+ padding:10px;
851
+ background:#f9f9f9;
852
  border-radius:2px;
853
  }
854
 
855
  .box *:first-child {
856
+ margin-top:0;
857
  }
858
 
859
  .box *:last-child {
860
+ margin-bottom:0;
861
  }
862
 
863
  .box.warning {
864
+ color:maroon;
865
+ border-color:maroon;
866
  }
867
  #pass-quick-help-info {
868
  font-size:13px;
883
  ============================ */
884
 
885
  div#s1-area-setup-type label {
886
+ cursor:pointer
887
  }
888
 
889
  div.s1-setup-type-sub {
890
+ padding:5px 0 0 25px;
891
+ display:none
892
+ }
893
+
894
+
895
+ div#tabs,
896
+ div#tabs-opts {
897
+ border:0 !important;
898
  }
899
 
900
+ div#tabs-opts-1,
901
+ div#tabs-opts-2 {
902
+ min-height:250px;
903
  }
904
 
905
  table.s1-archive-local {
906
+ width:100%
907
  }
908
 
909
  table.s1-archive-local td {
910
+ padding:4px 4px 4px 4px
911
  }
912
 
913
  table.s1-archive-local td:first-child {
914
+ font-weight:bold;
915
+ width:55px
916
  }
917
 
918
  div.s1-archive-failed-msg {
919
+ padding:15px;
920
+ border:1px dashed maroon;
921
+ font-size:12px;
922
+ border-radius:2px;
923
  }
924
 
925
  div.s1-err-msg {
926
+ padding:0 0 80px 0;
927
+ line-height:20px
928
  }
929
 
930
  div.s1-err-msg i {
931
+ color:maroon
932
  }
933
 
934
  .maroon {
935
+ color:maroon
936
  }
937
 
938
  .green {
939
+ color:green
940
+ }
941
+
942
+ div.s1-hdr-sys-setup-hdr {
943
+ margin-bottom:0;
944
+ }
945
+
946
+ div#s1-area-sys-setup,
947
+ div#s2-dbtest-area-basic {
948
+ border: 2px dashed #D0D0D0;
949
+ border-top:none;
950
+ padding:10px 20px 20px 20px;
951
+ border-radius:2px;
952
+ margin-top:-4px;
953
  }
954
 
955
  div#s1-area-sys-setup div.info-top {
956
+ text-align:center;
957
+ font-style:italic;
958
+ font-size:11px;
959
+ padding:0 5px 5px 5px
960
  }
961
 
962
  table.s1-checks-area {
963
+ width:100%;
964
+ margin:0;
965
+ padding:0
966
  }
967
 
968
  table.s1-checks-area td.title {
969
+ font-size:16px;
970
+ width:100%
971
  }
972
 
973
  table.s1-checks-area td.title small {
974
+ font-size:11px;
975
+ font-weight:normal
976
  }
977
 
978
  table.s1-checks-area td.toggle {
979
+ font-size:11px;
980
+ margin-right:7px;
981
+ font-weight:normal
982
  }
983
 
984
  div.s1-reqs {
985
+ background-color:#efefef;
986
+ border:1px solid silver;
987
+ border-radius:2px;
988
+ padding-bottom:4px
989
  }
990
 
991
  div.s1-reqs div.header {
992
+ background-color:#E0E0E0;
993
+ color:#000;
994
+ border-bottom:1px solid silver;
995
+ padding:2px;
996
+ font-weight:bold
997
  }
998
 
999
  div.s1-reqs div.status {
1000
+ float:right;
1001
+ border-radius:2px;
1002
+ color:#fff;
1003
+ padding:0 3px 0 3px;
1004
+ margin:4px 5px 0 0;
1005
+ font-size:11px;
1006
+ min-width:30px;
1007
+ text-align:center;
1008
  }
1009
 
1010
  div.s1-reqs div.pass {
1011
+ background-color:green;
1012
  }
1013
 
1014
  div.s1-reqs div.fail {
1015
+ background-color:maroon;
1016
  }
1017
 
1018
  div.s1-reqs div.title {
1019
+ padding:3px 3px 3px 5px;
1020
+ font-size:13px;
1021
  }
1022
 
1023
  div.s1-reqs div.title:hover {
1024
+ background-color:#dfdfdf;
1025
+ cursor:pointer
1026
  }
1027
 
1028
  div.s1-reqs div.info {
1029
+ padding:8px 8px 20px 8px;
1030
+ background-color:#fff;
1031
+ display:none;
1032
+ line-height:18px;
1033
+ font-size:12px
1034
  }
1035
 
1036
  div.s1-reqs div.info a {
1037
+ color:#485AA3;
1038
  }
1039
 
1040
  #archive_engine,
1041
  #archive_action_input {
1042
+ cursor:pointer
 
1043
  }
1044
 
1045
  .info>*:first-child {
1046
+ margin-top:0;
1047
  }
1048
 
1049
  .info>*:last-child {
1050
+ margin-bottom:0;
1051
  }
1052
  /*Terms and Notices*/
1053
 
1054
  div#s1-warning-check label {
1055
+ cursor:pointer;
1056
  }
1057
 
1058
  div#s1-warning-msg {
1059
+ padding:5px;
1060
+ font-size:12px;
1061
+ color:#333;
1062
+ line-height:14px;
1063
+ font-style:italic;
1064
+ overflow-y:scroll;
1065
+ height:460px;
1066
+ border:1px solid #dfdfdf;
1067
+ background:#fff;
1068
+ border-radius:2px
1069
  }
1070
 
1071
  div#s1-warning-check {
1072
+ padding:3px;
1073
+ font-size:14px;
1074
+ font-weight:normal;
1075
  }
1076
 
1077
  .s1-warning-check [type=checkbox] {
1078
+ height:17px;
1079
+ width:17px;
1080
+ }
1081
+
1082
+ .config-files-helper{
1083
+ font-size:10px;
1084
+ display:block;
1085
+ margin:4px 0 4px 0;
1086
  }
1087
+
1088
  /* ============================
1089
  STEP 2 VIEW
1090
  ============================ */
1091
 
1092
  div.s2-opts label {
1093
+ cursor:pointer
1094
  }
1095
 
1096
  textarea#debug-dbtest-json {
1097
+ width:98%;
1098
+ height:200px
1099
  }
1100
 
1101
  div.php-chuncking-warning {
1102
+ font-style:italic;
1103
+ font-size:11px;
1104
+ color:maroon;
1105
+ white-space:normal;
1106
+ line-height:16px;
1107
+ padding-left:20px
1108
  }
1109
  /*Toggle Buttons */
1110
 
1111
  div.s2-btngrp {
1112
+ text-align:center;
1113
+ margin:0 auto 10px auto
1114
  }
1115
 
1116
  div.s2-btngrp input[type=button] {
1117
+ font-size:14px;
1118
+ padding:6px;
1119
+ width:120px;
1120
+ border:1px solid silver;
1121
+ cursor:pointer
1122
  }
1123
 
1124
  div.s2-btngrp input[type=button]:first-child {
1125
+ border-radius:5px 0 0 5px;
1126
+ margin-right:-2px
1127
  }
1128
 
1129
  div.s2-btngrp input[type=button]:last-child {
1130
+ border-radius:0 5px 5px 0;
1131
+ margin-left:-4px
1132
  }
1133
 
1134
  div.s2-btngrp input[type=button].active {
1135
+ background-color:#13659C;
1136
+ color:#fff;
1137
  }
1138
 
1139
  div.s2-btngrp input[type=button].in-active {
1140
+ background-color:#E4E4E4;
1141
  }
1142
 
1143
  div.s2-btngrp input[type=button]:hover {
1144
+ border:1px solid #999
1145
  }
1146
  /*Basic DB */
1147
 
1148
  select#dbname-select {
1149
+ width:100%;
1150
+ border-radius:3px;
1151
+ height:20px;
1152
+ font-size:12px;
1153
+ border:1px solid silver;
1154
  }
1155
 
1156
  div#s2-dbrefresh-basic {
1157
+ float:right;
1158
+ font-size:12px;
1159
+ display:none;
1160
+ font-weight:bold;
1161
+ margin:5px 5px 1px 0
1162
  }
1163
 
1164
  div#s2-db-basic-overwrite div.warn-text {
1165
+ padding:5px 0 5px 0;
1166
  }
1167
 
1168
  div#s2-db-basic-overwrite div.btn-area {
1169
+ text-align:right;
1170
+ margin:5px 0
 
 
 
 
 
 
 
1171
  }
1172
 
1173
  input.overwrite-btn {
1174
+ cursor:pointer;
1175
+ color:#fff;
1176
+ font-size:13px;
1177
+ border-radius:5px;
1178
+ padding:5px 20px 4px 20px;
1179
+ background-color:#989898;
1180
+ border:1px solid #777;
1181
  }
1182
  /*cPanel DB */
1183
 
1184
  div.s2-cpnl-pane {
1185
+ margin-top:5px
1186
  }
1187
 
1188
  div.s2-gopro {
1189
+ color:black;
1190
+ margin-top:10px;
1191
+ padding:0 20px 10px 20px;
1192
+ border:1px solid silver;
1193
+ background-color:#F6F6F6;
1194
+ border-radius:2px
1195
  }
1196
 
1197
  div.s2-gopro h2 {
1198
+ text-align:center;
1199
+ margin:10px
1200
  }
1201
 
1202
  div.s2-gopro small {
1203
+ font-style:italic
1204
  }
1205
 
1206
  div.s2-cpanel-login {
1207
+ padding:15px;
1208
+ color:#fff;
1209
+ text-align:center;
1210
+ margin:15px 5px 15px 5px;
1211
+ border:1px solid silver;
1212
+ border-radius:2px;
1213
+ background-color:#13659C;
1214
+ font-size:14px;
1215
+ line-height:22px
1216
  }
1217
 
1218
  div.s2-cpanel-off {
1219
+ padding:15px;
1220
+ color:#fff;
1221
+ text-align:center;
1222
+ margin:15px 5px 15px 5px;
1223
+ border:1px solid silver;
1224
+ border-radius:2px;
1225
+ background-color:#b54949;
1226
+ font-size:14px;
1227
+ line-height:22px
1228
  }
1229
 
1230
  div.s2-cpnl-panel-no-support {
1231
+ text-align:center;
1232
+ font-size:18px;
1233
+ font-weight:bold;
1234
+ line-height:30px;
1235
+ margin-top:40px
1236
  }
1237
  /*DATABASE CHECKS */
1238
 
1239
+ div#s2-dbtest-area-basic {
1240
+ margin-top:-8px;
1241
+ }
1242
  div.s2-dbtest-area {
1243
+ margin:auto;
1244
+ margin:5px 0 15px 0;
1245
+ min-height:110px
1246
  }
1247
 
1248
  div.s2-dbtest-area input[type=button] {
1249
+ font-size:11px;
1250
+ height:20px;
1251
+ border:1px solid gray;
1252
+ border-radius:3px;
1253
+ cursor:pointer
1254
  }
1255
 
1256
  div.s2-dbtest-area small.db-check {
1257
+ color:#000;
1258
+ text-align:center;
1259
+ padding:3px;
1260
+ font-size:11px;
1261
+ font-weight:normal
1262
  }
1263
 
1264
+
1265
  div.s2-dbtest-area div.message {
1266
+ padding:25px 10px 10px 10px;
1267
+ margin:5px auto 5px auto;
1268
+ text-align:center;
1269
+ font-size:15px;
1270
+ line-height:22px;
1271
+ width:100%;
 
1272
  }
1273
 
1274
  div.s2-dbtest-area div.sub-message {
1275
+ padding:15px 5px 15px 5px;
1276
+ text-align:center;
1277
+ font-style:italic;
1278
+ color:maroon
1279
  }
1280
 
1281
  div.s2-dbtest-area div.error-msg {
1282
+ color:maroon
1283
  }
1284
 
1285
  div.s2-dbtest-area div.success-msg {
1286
+ color:green
1287
  }
1288
 
1289
  div.s2-dbtest-area pre {
1290
+ font-family:Verdana, Arial, sans-serif;
1291
+ font-size:13px;
1292
+ margin:0;
1293
+ white-space:normal;
1294
  }
1295
 
1296
  div.s2-reqs-hdr {
1297
+ border-radius:2px 2px 0 0;
1298
+ border-bottom:none
1299
  }
1300
 
1301
  div.s2-notices-hdr {
1302
+ border-radius:0;
1303
+ border-bottom:1px solid #D3D3D3;
1304
  }
1305
 
1306
  div#s2-reqs-all {
1307
+ display:none
1308
  }
1309
 
1310
  div#s2-notices-all {
1311
+ display:none
1312
  }
1313
 
1314
  div.s2-reqs {
1315
+ background-color:#efefef;
1316
+ border:1px solid #D3D3D3;
1317
+ border-top:none
1318
  }
1319
 
1320
  div.s2-reqs div.status {
1321
+ float:right;
1322
+ border-radius:2px;
1323
+ color:#fff;
1324
+ padding:0 4px 0 4px;
1325
+ margin:4px 7px 0 0;
1326
+ font-size:12px;
1327
+ min-width:30px;
1328
+ text-align:center;
1329
  }
1330
 
1331
  div.s2-reqs div.title {
1332
+ padding:3px 8px 3px 20px;
1333
+ font-size:13px;
1334
+ background-color:#f1f1f1;
1335
+ border-top:1px solid #D3D3D3;
1336
  }
1337
 
1338
  div.s2-reqs div.title:hover {
1339
+ background-color:#dfdfdf;
1340
+ cursor:pointer
1341
  }
1342
 
1343
  div.s2-reqs div.info {
1344
+ padding:4px 12px 15px 12px;
1345
  ;
1346
+ background-color:#fff;
1347
+ display:none;
1348
+ line-height:18px;
1349
+ font-size:12px
1350
  }
1351
 
1352
  div.s2-reqs div.info a {
1353
+ color:#485AA3;
1354
  }
1355
 
1356
  div.s2-reqs div.info ul {
1357
+ padding-left:25px
1358
  }
1359
 
1360
  div.s2-reqs div.info ul li {
1361
+ padding:2px
1362
  }
1363
 
1364
  div.s2-reqs div.info ul.vids {
1365
+ list-style-type:none;
1366
  }
1367
 
1368
  div.s2-reqs div.sub-title {
1369
+ border-bottom:1px solid #d3d3d3;
1370
+ font-weight:bold;
1371
+ margin:7px 0 3px 0
1372
  }
1373
 
1374
  div.s2-reqs10 table {
1375
+ margin-top:5px;
1376
  }
1377
 
1378
  div.s2-reqs10 table td {
1379
+ padding:1px;
1380
  }
1381
 
1382
  div.s2-reqs10 table td:first-child {
1383
+ font-weight:bold;
1384
+ padding-right:10px
1385
  }
1386
 
1387
  div.s2-reqs40 div.db-list {
1388
+ height:70px;
1389
+ width:95%;
1390
+ overflow-y:scroll;
1391
+ padding:2px 5px 5px 5px;
1392
+ border:1px solid #d3d3d3;
1393
  }
1394
 
1395
  div.s2-reqs60 div.tbl-list {
1396
+ padding:2px 5px 5px 5px;
1397
+ border:0
1398
  }
1399
 
1400
  div.s2-reqs60 div.tbl-list b {
1401
+ display:inline-block;
1402
+ width:55px;
1403
  }
1404
 
1405
  div.s2-notice20 table.collation-list table {
1406
+ padding:2px;
1407
  }
1408
 
1409
  div.s2-notice20 table.collation-list td:first-child {
1410
+ font-weight:bold;
1411
+ padding-right:5px
1412
  }
1413
 
1414
  textarea[readonly] {
1415
+ background-color:#efefef;
1416
  }
1417
 
1418
  .copy-to-clipboard-block textarea {
1419
+ width:100%;
1420
+ height:100px;
1421
  }
1422
 
1423
  .copy-to-clipboard-block button,
1424
  .copy-to-clipboard-block button:hover {
1425
+ font-size:14px;
1426
+ padding:5px 8px;
1427
+ margin-bottom:15px;
1428
  }
1429
  /*Warning Area and Message */
1430
 
1431
  div.s2-warning-emptydb {
1432
+ color:maroon;
1433
+ margin:2px 0 0 0;
1434
+ font-size:11px;
1435
+ display:none;
1436
+ white-space:normal;
1437
+ width:550px
1438
  }
1439
 
1440
  div.s2-warning-manualdb {
1441
+ color:#1B67FF;
1442
+ margin:2px 0 0 0;
1443
+ font-size:11px;
1444
+ display:none;
1445
+ white-space:normal;
1446
+ width:550px
1447
  }
1448
 
1449
  div.s2-warning-renamedb {
1450
+ color:#1B67FF;
1451
+ margin:2px 0 0 0;
1452
+ font-size:11px;
1453
+ display:none;
1454
+ white-space:normal;
1455
+ width:550px
1456
  }
1457
 
1458
  div#s2-tryagain {
1459
+ padding-top:50px;
1460
+ text-align:center;
1461
+ width:100%;
1462
+ font-size:16px;
1463
+ color:#444;
1464
+ font-weight:bold;
1465
  }
1466
  /* ============================
1467
  STEP 3 VIEW
1468
  ============================ */
1469
 
1470
  table.s3-opts {
1471
+ width:96%;
1472
+ border:0;
1473
  }
1474
 
1475
  table.s3-opts i.fa {
1476
+ font-size:16px
1477
  }
1478
 
1479
  table.s3-opts td {
1480
+ white-space:nowrap;
1481
+ padding:3px;
1482
  }
1483
 
1484
  table.s3-opts td:first-child {
1485
+ width:90px;
1486
+ font-weight:bold
1487
  }
1488
 
1489
  div#s3-adv-opts {
1490
+ margin-top:5px;
1491
  }
1492
 
1493
  div.s3-allnonelinks {
1494
+ font-size:11px;
1495
+ float:right;
1496
  }
1497
 
1498
  div.s3-manaual-msg {
1499
+ font-style:italic;
1500
+ margin:-2px 0 5px 0
1501
  }
1502
 
1503
  small.s3-warn {
1504
+ color:maroon;
1505
+ font-style:italic
1506
  }
1507
  /* ============================
1508
  STEP 4 VIEW
1509
  ============================ */
1510
 
1511
  div.s4-final-msg {
1512
+ height:110px;
1513
+ border:1px solid #CDCDCD;
1514
+ padding:8px;
1515
+ font-size:12px;
1516
+ border-radius:2px;
1517
+ box-shadow:0 4px 2px -2px #777;
1518
  }
1519
 
1520
  div.s4-final-title {
1521
+ color:#BE2323;
1522
+ font-size:18px
1523
  }
1524
 
1525
  div.s4-connect {
1526
+ font-size:12px;
1527
+ text-align:center;
1528
+ font-style:italic;
1529
+ position:absolute;
1530
+ bottom:10px;
1531
+ padding:10px;
1532
+ width:100%;
1533
+ margin-top:20px
1534
  }
1535
 
1536
  table.s4-report-results,
1537
  table.s4-report-errs {
1538
+ border-collapse:collapse;
1539
+ box-shadow:4px 8px 11px -8px rgba(0, 0, 0, 0.41);
1540
  }
1541
 
1542
  table.s4-report-errs td {
1543
+ text-align:center;
1544
+ width:33%
1545
  }
1546
 
1547
  table.s4-report-results th,
1548
  table.s4-report-errs th {
1549
+ background-color:#d0d0d0;
1550
+ padding:3px;
1551
+ font-size:14px;
1552
  }
1553
 
1554
  table.s4-report-results td,
1555
  table.s4-report-errs td {
1556
+ padding:3px;
1557
+ white-space:nowrap;
1558
+ border:1px solid #dfdfdf;
1559
+ text-align:center;
1560
+ font-size:11px
1561
  }
1562
 
1563
  table.s4-report-results td:first-child {
1564
+ text-align:left;
1565
+ font-weight:bold;
1566
+ padding-left:3px
1567
  }
1568
 
1569
  div.s4-err-title {
1570
+ background-color:#dfdfdf;
1571
+ font-weight:bold;
1572
+ margin:-3px 0 15px 0;
1573
+ padding:5px;
1574
+ border-radius:2px;
1575
+ font-size:13px
1576
  }
1577
 
1578
  div.s4-err-msg {
1579
+ padding:8px;
1580
+ display:none;
1581
+ border:1px dashed #999;
1582
+ margin:10px 0 20px 0;
1583
+ border-radius:2px;
1584
  }
1585
 
1586
  div.s4-err-msg div.content {
1587
+ padding:5px;
1588
+ font-size:11px;
1589
+ line-height:17px;
1590
+ max-height:125px;
1591
+ overflow-y:scroll;
1592
+ border:1px solid silver;
1593
+ margin:3px;
1594
  }
1595
 
1596
  div.s4-err-msg div.info-error {
1597
+ padding:7px;
1598
+ background-color:#f9c9c9;
1599
+ border:1px solid silver;
1600
+ border-radius:2px;
1601
+ font-size:12px;
1602
+ line-height:16px
1603
  }
1604
 
1605
  div.s4-err-msg div.info-notice {
1606
+ padding:7px;
1607
+ background-color:#FCFEC5;
1608
+ border:1px solid silver;
1609
+ border-radius:2px;
1610
+ font-size:12px;
1611
+ line-height:16px;
1612
  }
1613
 
1614
  table.s4-final-step {
1615
+ width:100%;
1616
  }
1617
 
1618
  table.s4-final-step td {
1619
+ padding:5px 15px 5px 5px;
1620
+ font-size:13px;
1621
  }
1622
 
1623
  table.s4-final-step td:first-child {
1624
+ white-space:nowrap;
1625
+ width:165px
1626
  }
1627
 
1628
  div.s4-go-back {
1629
+ border-top:1px dotted #dfdfdf;
1630
+ margin:auto;
1631
+ font-size:11px;
1632
+ color:#333;
1633
+ padding-top:4px
1634
  }
1635
 
1636
  div.s4-go-back ul {
1637
+ line-height:18px
1638
  }
1639
 
1640
  button.s4-final-btns {
1641
  cursor: pointer;
1642
  color: #fff;
1643
+ font-size: 17px;
1644
+ border-radius:4px;
1645
+ padding:8px;
1646
  background-color: #13659C;
1647
  border: 1px solid gray;
1648
+ width: 175px;
1649
  }
1650
 
1651
  button.s4-final-btns:hover {
1652
+ background-color:#bdbdbd;
1653
  }
1654
 
1655
  div.s4-gopro-btn {
1656
+ text-align:center;
1657
+ font-size:14px;
1658
+ margin:auto;
1659
+ width:200px;
1660
+ font-style:italic;
1661
+ font-weight:bold
1662
  }
1663
 
1664
  div.s4-gopro-btn a {
1665
+ color:green
1666
  }
1667
 
1668
+ div.s4-final-steps {
1669
+ border:1px solid #cdcdcd;
1670
+ border-radius:3px;
1671
+ padding:15px;
1672
+ color:maroon;
1673
+ font-size:12px;
1674
+ font-style:italic;
1675
+ margin:5px 0 10px 0;
1676
  }
1677
+
1678
  pre.s4-diff-viewer {
1679
+ line-height:11px
1680
  }
1681
 
1682
  div#s4-notice-reports div.section-content div.title {
1683
+ cursor:pointer
1684
  }
1685
  /* ============================
1686
  STEP 5 HELP
1687
  ============================ */
1688
 
1689
  #body-help div#content {
1690
+ width:100%;
1691
+ max-width:1024px;
1692
  }
1693
 
1694
  div.help-target {
1695
+ float:right;
1696
  }
1697
 
1698
  div.help-target a {
1699
+ float:right;
1700
+ font-size:16px;
1701
+ color:#13659C
1702
  }
1703
 
1704
  div#main-help sup {
1705
+ font-size:11px;
1706
+ font-weight:normal;
1707
+ font-style:italic;
1708
+ color:blue
1709
  }
1710
 
1711
  div.help-online {
1712
+ text-align:center;
1713
+ font-size:18px;
1714
+ padding:10px 0 0 0;
1715
+ line-height:24px
1716
  }
1717
 
1718
  div.help {
1719
+ color:#555;
1720
+ font-style:italic;
1721
+ font-size:11px;
1722
+ padding:4px;
1723
+ border-top:1px solid #dfdfdf
1724
  }
1725
 
1726
  div.help-page fieldset {
1727
+ margin-bottom:25px
1728
  }
1729
 
1730
  div#main-help {
1731
+ font-size:13px;
1732
+ line-height:17px
1733
  }
1734
 
1735
  div#main-help h3 {
1736
+ border-bottom:1px solid silver;
1737
+ padding:8px;
1738
+ margin:4px 0 8px 0;
1739
+ font-size:20px
1740
  }
1741
 
1742
  div#main-help span.step {
1743
+ color:#DB4B38
1744
  }
1745
 
1746
  .help-opt {
1747
+ width:100%;
1748
+ border:none;
1749
+ border-collapse:collapse;
1750
+ margin:5px 0 0 0;
1751
  }
1752
 
1753
  .help-opt .col-opt {
1754
+ width:250px;
1755
  }
1756
 
1757
  .help-opt td.section {
1758
+ background-color:#dfdfdf;
1759
  }
1760
 
1761
  .help-opt td,
1762
  .help-opt th {
1763
+ padding:15px 10px;
1764
+ border:1px solid silver;
1765
  }
1766
 
1767
  .help-opt td:first-child {
1768
+ font-weight:bold;
1769
+ padding-right:10px;
1770
+ white-space:nowrap
1771
  }
1772
 
1773
  .help-opt th {
1774
+ background:#333;
1775
+ color:#fff;
1776
+ border:1px solid #333
1777
  }
1778
 
1779
  #main-help section {
1780
+ border:1px solid silver;
1781
+ margin-top:28px;
1782
+ border-radius:2px;
1783
+ overflow:hidden;
1784
  }
1785
 
1786
  #main-help section h2.header {
1787
+ background-color:#F1F1F1;
1788
+ padding:15px;
1789
+ margin:0;
1790
+ font-size:20px;
1791
  }
1792
 
1793
  #main-help section .content {
1794
+ padding:10px;
1795
  }
1796
  /* ============================
1797
  Expandable section
1798
  ============================ */
1799
 
1800
  .expandable.close .expand-header {
1801
+ cursor:pointer;
1802
  }
1803
 
1804
  .expandable.open .expand-header {
1805
+ cursor:pointer;
1806
  }
1807
 
1808
  .expandable .expand-header::before {
1809
+ font-family:'Font Awesome 5 Free';
1810
+ margin-right:10px;
1811
  }
1812
 
1813
  .expandable.close .expand-header::before {
1814
+ content:"\f0fe";
1815
  }
1816
 
1817
  .expandable.open .expand-header::before {
1818
+ content:"\f146";
1819
  }
1820
 
1821
  .expandable.close .content {
1822
+ display:none;
1823
  }
1824
 
1825
  .expandable.open .content {
1826
+ display:block;
1827
  }
1828
  /* ============================
1829
  VIEW EXCEPTION
1830
  ============================ */
1831
 
1832
  .exception-trace {
1833
+ overflow:auto;
1834
+ border:1px solid lightgray;
1835
+ padding:10px;
1836
+ margin:0;
1837
  }
1838
  /*!
1839
  * password indicator
1840
  */
1841
 
1842
  .top_testresult {
1843
+ font-weight:bold;
1844
+ font-size:11px;
1845
+ color:#222;
1846
+ display:block;
1847
+ position:absolute;
1848
+ top:0;
1849
+ right:30px;
1850
+ text-align:right;
1851
+ padding-right:20px;
1852
+ box-sizing:border-box;
1853
+ width:40%;
1854
+ height:30px;
1855
+ line-height:30px;
1856
  }
1857
 
1858
  .top_shortPass,
1859
  .top_badPass {
1860
+ background:#edabab;
1861
+ background:transparent linear-gradient(90deg, transparent 20%, #edabab);
1862
+ display:block;
1863
  }
1864
 
1865
  .top_goodPass {
1866
+ background:#ffffe0;
1867
+ background:transparent linear-gradient(90deg, transparent 20%, #ffffe0);
1868
+ display:block;
1869
  }
1870
 
1871
  .top_strongPass {
1872
+ background:#d3edab;
1873
+ background:transparent linear-gradient(90deg, transparent 20%, #d3edab);
1874
+ display:block;
1875
  }
1876
  /*================================================
1877
  LIB OVERIDES*/
1879
  input.parsley-error,
1880
  textarea.parsley-error,
1881
  select.parsley-error {
1882
+ color:#B94A48 !important;
1883
+ background-color:#F2DEDE !important;
1884
+ border:1px solid #EED3D7 !important;
1885
  }
1886
 
1887
  ul.parsley-errors-list {
1888
+ margin:1px 0 0 -40px;
1889
+ list-style-type:none;
1890
+ font-size:10px
1891
  }
1892
 
1893
  .ui-widget {
1894
+ font-size:13px
1895
  }
1896
 
1897
+ <?php if (DUPX_Log::isLevel(DUPX_Log::LV_DEBUG)):?>
1898
  .dupx-debug {display:block; margin:0 0 25px 0; font-size:11px; background-color:#f5dbda; padding:8px; border:1px solid silver; border-radius:2px}
1899
  .dupx-debug label {font-weight:bold; display:block; margin:4px 0 1px 0}
1900
  .dupx-debug textarea {width:95%; height:100px; font-size:11px}
1901
  .dupx-debug input {font-size:11px; padding:3px}
1902
+ <?php else :?>
1903
  .dupx-debug {display:none}
1904
  <?php endif; ?>
1905
 
installer/dup-installer/classes/class.s3.func.php CHANGED
@@ -13,7 +13,7 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
13
 
14
  /**
15
  * Step 3 functions
16
- * Singlethon
17
  */
18
  final class DUPX_S3_Funcs
19
  {
@@ -223,7 +223,7 @@ final class DUPX_S3_Funcs
223
  }
224
 
225
  /**
226
- * get vaule post if thepost isn't initialized inizialize it
227
  *
228
  * @param string $key
229
  * @return mixed
@@ -1042,16 +1042,15 @@ LONGMSG;
1042
  $reactivate_plugins_after_installation_str)."','duplicator_reactivate_plugins_after_installation')");
1043
  }
1044
 
1045
- // Start
1046
- // Force Duplicator active so we the security cleanup will be available
1047
  if (!in_array('duplicator/duplicator.php', $plugin_list)) {
1048
  $plugin_list[] = 'duplicator/duplicator.php';
1049
  }
1050
  $serial_plugin_list = @serialize($plugin_list);
1051
- // End
1052
 
1053
  mysqli_query($this->dbh,
1054
- "UPDATE `".mysqli_real_escape_string($this->dbh, $GLOBALS['DUPX_AC']->wp_tableprefix)."options` SET option_value = '".mysqli_real_escape_string($this->dbh, $serial_plugin_list)."' WHERE option_name = 'active_plugins' ");
 
1055
  }
1056
 
1057
  /**
@@ -1094,7 +1093,7 @@ LONGMSG;
1094
  'reactivate' => true
1095
  );
1096
 
1097
- DUPX_Log::info('Deactivated plugins list here: '.DUPX_Log::varToString(array_keys($excludePlugins)));
1098
  return $excludePlugins;
1099
  }
1100
 
13
 
14
  /**
15
  * Step 3 functions
16
+ * Singleton
17
  */
18
  final class DUPX_S3_Funcs
19
  {
223
  }
224
 
225
  /**
226
+ * get value post if the post isn't initialized initialize it
227
  *
228
  * @param string $key
229
  * @return mixed
1042
  $reactivate_plugins_after_installation_str)."','duplicator_reactivate_plugins_after_installation')");
1043
  }
1044
 
1045
+ // Force Duplicator active so the security cleanup will be available
 
1046
  if (!in_array('duplicator/duplicator.php', $plugin_list)) {
1047
  $plugin_list[] = 'duplicator/duplicator.php';
1048
  }
1049
  $serial_plugin_list = @serialize($plugin_list);
 
1050
 
1051
  mysqli_query($this->dbh,
1052
+ "UPDATE `".mysqli_real_escape_string($this->dbh, $GLOBALS['DUPX_AC']->wp_tableprefix)."options` "
1053
+ . "SET option_value = '".mysqli_real_escape_string($this->dbh, $serial_plugin_list)."' WHERE option_name = 'active_plugins' ");
1054
  }
1055
 
1056
  /**
1093
  'reactivate' => true
1094
  );
1095
 
1096
+ DUPX_Log::info('Auto Deactivated plugins list here: '.DUPX_Log::varToString(array_keys($excludePlugins)));
1097
  return $excludePlugins;
1098
  }
1099
 
installer/dup-installer/classes/utilities/class.u.php CHANGED
@@ -425,8 +425,10 @@ class DUPX_U
425
  $table = "options";
426
  $where = "option_name = 'active_plugins'";
427
 
 
 
 
428
 
429
- $query = @mysqli_query($dbh, "SELECT {$select} FROM `".mysqli_real_escape_string($dbh, $GLOBALS['DUPX_AC']->wp_tableprefix).mysqli_real_escape_string($dbh, $table)."` WHERE {$where} ");
430
  if ($query) {
431
  $row = @mysqli_fetch_array($query);
432
  $plugins_ser_str = stripslashes($row[0]);
425
  $table = "options";
426
  $where = "option_name = 'active_plugins'";
427
 
428
+ $query = @mysqli_query($dbh, "SELECT {$select} "
429
+ . " FROM `".mysqli_real_escape_string($dbh, $GLOBALS['DUPX_AC']->wp_tableprefix) . mysqli_real_escape_string($dbh, $table)
430
+ . "` WHERE {$where} ");
431
 
 
432
  if ($query) {
433
  $row = @mysqli_fetch_array($query);
434
  $plugins_ser_str = stripslashes($row[0]);
installer/dup-installer/ctrls/classes/class.ctrl.extraction.php CHANGED
@@ -35,7 +35,7 @@ class DUP_LITE_Extraction
35
  }
36
 
37
  /**
38
- * inizialize extraction data
39
  */
40
  public function initData()
41
  {
@@ -199,8 +199,6 @@ class DUP_LITE_Extraction
199
  unset($POST_LOG['dbpass']);
200
  ksort($POST_LOG);
201
 
202
-
203
-
204
  //ACTION VARS
205
  $ajax1_start = DUPX_U::getMicrotime();
206
  $root_path = $GLOBALS['DUPX_ROOT'];
@@ -249,7 +247,7 @@ class DUP_LITE_Extraction
249
  }
250
 
251
  DUPX_Log::info("********************************************************************************");
252
- DUPX_Log::info('* DUPLICATOR-PRO: Install-Log');
253
  DUPX_Log::info('* STEP-1 START @ '.@date('h:i:s'));
254
  DUPX_Log::info("* VERSION: {$GLOBALS['DUPX_AC']->version_dup}");
255
  DUPX_Log::info('* NOTICE: Do NOT post to public sites or forums!!');
35
  }
36
 
37
  /**
38
+ * initialize extraction data
39
  */
40
  public function initData()
41
  {
199
  unset($POST_LOG['dbpass']);
200
  ksort($POST_LOG);
201
 
 
 
202
  //ACTION VARS
203
  $ajax1_start = DUPX_U::getMicrotime();
204
  $root_path = $GLOBALS['DUPX_ROOT'];
247
  }
248
 
249
  DUPX_Log::info("********************************************************************************");
250
+ DUPX_Log::info('* DUPLICATOR-LITE: Install-Log');
251
  DUPX_Log::info('* STEP-1 START @ '.@date('h:i:s'));
252
  DUPX_Log::info("* VERSION: {$GLOBALS['DUPX_AC']->version_dup}");
253
  DUPX_Log::info('* NOTICE: Do NOT post to public sites or forums!!');
installer/dup-installer/ctrls/ctrl.s2.base.php CHANGED
@@ -146,23 +146,24 @@ if ($_POST['dbaction'] != 'manual') {
146
  $dbinstall->prepareDB();
147
  }
148
  }
 
149
  if($not_yet_logged) {
150
 
151
- //Fatal Memory errors from file_get_contents is not catchable.
152
- //Try to warn ahead of time with a check on buffer in memory difference
153
- $current_php_mem = DUPX_U::returnBytes($GLOBALS['PHP_MEMORY_LIMIT']);
154
- $current_php_mem = is_numeric($current_php_mem) ? $current_php_mem : null;
155
-
156
- if ($current_php_mem != null && $dbinstall->dbFileSize > $current_php_mem) {
157
- $readable_size = DUPX_U::readableByteSize($dbinstall->dbFileSize);
158
- $msg = "\nWARNING: The database script is '".DUPX_U::sanitize_text_field($readable_size)."' in size. The PHP memory allocation is set\n";
159
- $msg .= "at '".DUPX_U::sanitize_text_field($GLOBALS['PHP_MEMORY_LIMIT'])."'. There is a high possibility that the installer script will fail with\n";
160
- $msg .= "a memory allocation error when trying to load the database.sql file. It is\n";
161
- $msg .= "recommended to increase the 'memory_limit' setting in the php.ini config file.\n";
162
- $msg .= "see: ".DUPX_U::esc_url($faq_url.'#faq-trouble-056-q')." \n";
163
- DUPX_Log::info($msg);
164
- unset($msg);
165
- }
166
 
167
  DUPX_Log::info("--------------------------------------");
168
  DUPX_Log::info("DATABASE RESULTS");
@@ -170,17 +171,17 @@ if($not_yet_logged) {
170
  }
171
 
172
  if ($_POST['dbaction'] == 'manual') {
173
- DUPX_Log::info("\n** SQL EXECUTION IS IN MANUAL MODE **");
174
- DUPX_Log::info("- No SQL script has been executed -");
175
- $JSON['pass'] = 1;
176
  } elseif(!isset($_POST['continue_chunking'])) {
177
  $dbinstall->writeInDB();
178
  $rowCountMisMatchTables = $dbinstall->getRowCountMisMatchTables();
179
  $JSON['pass'] = 1;
180
  if (!empty($rowCountMisMatchTables)) {
181
- $errMsg = 'ERROR: Database Table row count verification was failed for table(s): '.implode(', ', $rowCountMisMatchTables);
182
- DUPX_Log::info($errMsg);
183
- }
184
  }
185
 
186
  $dbinstall->profile_end = DUPX_U::getMicrotime();
@@ -194,4 +195,4 @@ DUPX_Log::info("\nINSERT DATA RUNTIME: " . DUPX_U::elapsedTime($dbinstall->profi
194
  DUPX_Log::info('STEP-2 COMPLETE @ '.@date('h:i:s')." - RUNTIME: {$ajax1_sum}");
195
 
196
  error_reporting($ajax2_error_level);
197
- die(DupLiteSnapJsonU::wp_json_encode($JSON));
146
  $dbinstall->prepareDB();
147
  }
148
  }
149
+
150
  if($not_yet_logged) {
151
 
152
+ //Fatal Memory errors from file_get_contents is not catchable.
153
+ //Try to warn ahead of time with a check on buffer in memory difference
154
+ $current_php_mem = DUPX_U::returnBytes($GLOBALS['PHP_MEMORY_LIMIT']);
155
+ $current_php_mem = is_numeric($current_php_mem) ? $current_php_mem : null;
156
+
157
+ if ($current_php_mem != null && $dbinstall->dbFileSize > $current_php_mem) {
158
+ $readable_size = DUPX_U::readableByteSize($dbinstall->dbFileSize);
159
+ $msg = "\nWARNING: The database script is '".DUPX_U::sanitize_text_field($readable_size)."' in size. The PHP memory allocation is set\n";
160
+ $msg .= "at '".DUPX_U::sanitize_text_field($GLOBALS['PHP_MEMORY_LIMIT'])."'. There is a high possibility that the installer script will fail with\n";
161
+ $msg .= "a memory allocation error when trying to load the database.sql file. It is\n";
162
+ $msg .= "recommended to increase the 'memory_limit' setting in the php.ini config file.\n";
163
+ $msg .= "see: ".DUPX_U::esc_url($faq_url.'#faq-trouble-056-q')." \n";
164
+ DUPX_Log::info($msg);
165
+ unset($msg);
166
+ }
167
 
168
  DUPX_Log::info("--------------------------------------");
169
  DUPX_Log::info("DATABASE RESULTS");
171
  }
172
 
173
  if ($_POST['dbaction'] == 'manual') {
174
+ DUPX_Log::info("\n** SQL EXECUTION IS IN MANUAL MODE **");
175
+ DUPX_Log::info("- No SQL script has been executed -");
176
+ $JSON['pass'] = 1;
177
  } elseif(!isset($_POST['continue_chunking'])) {
178
  $dbinstall->writeInDB();
179
  $rowCountMisMatchTables = $dbinstall->getRowCountMisMatchTables();
180
  $JSON['pass'] = 1;
181
  if (!empty($rowCountMisMatchTables)) {
182
+ $errMsg = 'ERROR: Database Table row count verification was failed for table(s): '.implode(', ', $rowCountMisMatchTables);
183
+ DUPX_Log::info($errMsg);
184
+ }
185
  }
186
 
187
  $dbinstall->profile_end = DUPX_U::getMicrotime();
195
  DUPX_Log::info('STEP-2 COMPLETE @ '.@date('h:i:s')." - RUNTIME: {$ajax1_sum}");
196
 
197
  error_reporting($ajax2_error_level);
198
+ die(DupLiteSnapJsonU::wp_json_encode($JSON));
installer/dup-installer/ctrls/ctrl.s2.dbinstall.php CHANGED
@@ -54,7 +54,7 @@ class DUPX_DBInstall
54
  $this->root_path = $GLOBALS['DUPX_ROOT'];
55
  $this->sql_file_path = "{$GLOBALS['DUPX_INIT']}/dup-database__{$GLOBALS['DUPX_AC']->package_hash}.sql";
56
  $this->sql_result_file_path = "{$GLOBALS['DUPX_INIT']}/{$GLOBALS['SQL_FILE_NAME']}";
57
- $this->dbFileSize = @filesize($this->sql_file_path);
58
 
59
  //ESTABLISH CONNECTION
60
  $this->dbh = DUPX_DB::connect($post['dbhost'], $post['dbuser'], $post['dbpass']);
@@ -64,9 +64,17 @@ class DUPX_DBInstall
64
  or DUPX_Log::error(sprintf(ERR_DBCREATE, $post['dbname']));
65
  }
66
 
67
- @mysqli_query($this->dbh, "SET wait_timeout = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_TIME']));
68
- @mysqli_query($this->dbh, "SET GLOBAL max_allowed_packet = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_PACKETS']));
69
- @mysqli_query($this->dbh, "SET max_allowed_packet = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_PACKETS']));
 
 
 
 
 
 
 
 
70
 
71
  $this->profile_start = isset($post['profile_start']) ? DUPX_U::sanitize_text_field($post['profile_start']) : DUPX_U::getMicrotime();
72
  $this->start_microtime = isset($post['start_microtime']) ? DUPX_U::sanitize_text_field($post['start_microtime']) : $start_microtime;
@@ -94,8 +102,18 @@ class DUPX_DBInstall
94
  public function prepareDB()
95
  {
96
  //RUN DATABASE SCRIPT
97
- @mysqli_query($this->dbh, "SET wait_timeout = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_TIME']));
98
- @mysqli_query($this->dbh, "SET max_allowed_packet = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_PACKETS']));
 
 
 
 
 
 
 
 
 
 
99
  DUPX_DB::setCharset($this->dbh, $this->post['dbcharset'], $this->post['dbcollate']);
100
 
101
  //Will set mode to null only for this db handle session
@@ -116,7 +134,6 @@ class DUPX_DBInstall
116
  break;
117
  }
118
 
119
-
120
  //Set defaults incase the variable could not be read
121
  $this->drop_tbl_log = 0;
122
  $this->rename_tbl_log = 0;
@@ -179,6 +196,7 @@ class DUPX_DBInstall
179
  }
180
  break;
181
  }
 
182
  }
183
 
184
  public function getRowCountMisMatchTables()
@@ -237,12 +255,13 @@ class DUPX_DBInstall
237
 
238
  @mysqli_autocommit($this->dbh, false);
239
 
240
- $query = null;
241
  $delimiter = ';';
 
242
  while (($line = fgets($handle)) !== false) {
243
  if ('DELIMITER ;' == trim($query)) {
244
  $delimiter = ';';
245
- $query = null;
246
  continue;
247
  }
248
  $query .= $line;
@@ -277,7 +296,7 @@ class DUPX_DBInstall
277
  }
278
 
279
  DUPX_Log::info("Skipping delimiter query");
280
- $query = null;
281
  continue;
282
  }
283
 
@@ -340,7 +359,7 @@ class DUPX_DBInstall
340
  $this->dbquery_rows++;
341
  }
342
  }
343
- $query = null;
344
  $counter++;
345
  }
346
  }
54
  $this->root_path = $GLOBALS['DUPX_ROOT'];
55
  $this->sql_file_path = "{$GLOBALS['DUPX_INIT']}/dup-database__{$GLOBALS['DUPX_AC']->package_hash}.sql";
56
  $this->sql_result_file_path = "{$GLOBALS['DUPX_INIT']}/{$GLOBALS['SQL_FILE_NAME']}";
57
+ $this->dbFileSize = @filesize($this->sql_file_path);
58
 
59
  //ESTABLISH CONNECTION
60
  $this->dbh = DUPX_DB::connect($post['dbhost'], $post['dbuser'], $post['dbpass']);
64
  or DUPX_Log::error(sprintf(ERR_DBCREATE, $post['dbname']));
65
  }
66
 
67
+ //PHP 8.1 throws exceptions vs pre 8.1 which silently fails
68
+ try {
69
+ @mysqli_query($this->dbh, "SET wait_timeout = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_TIME']));
70
+ $qryResult = @mysqli_query($this->dbh, "SET GLOBAL max_allowed_packet = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_PACKETS']));
71
+ if ($qryResult === false) {
72
+ @mysqli_query($this->dbh, "SET max_allowed_packet = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_PACKETS']));
73
+ }
74
+ }
75
+ catch (Exception $ex) {
76
+ DUPX_Log::info("SQL ERROR:" . $ex->getMessage() . "\n" . $ex->getTraceAsString());
77
+ }
78
 
79
  $this->profile_start = isset($post['profile_start']) ? DUPX_U::sanitize_text_field($post['profile_start']) : DUPX_U::getMicrotime();
80
  $this->start_microtime = isset($post['start_microtime']) ? DUPX_U::sanitize_text_field($post['start_microtime']) : $start_microtime;
102
  public function prepareDB()
103
  {
104
  //RUN DATABASE SCRIPT
105
+ //PHP 8.1 throws exceptions vs pre-8.1 which silently fails
106
+ try {
107
+ @mysqli_query($this->dbh, "SET wait_timeout = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_TIME']));
108
+ $qryResult = @mysqli_query($this->dbh, "SET GLOBAL max_allowed_packet = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_PACKETS']));
109
+ if ($qryResult === false) {
110
+ @mysqli_query($this->dbh, "SET max_allowed_packet = ".mysqli_real_escape_string($this->dbh, $GLOBALS['DB_MAX_PACKETS']));
111
+ }
112
+ }
113
+ catch (Exception $ex) {
114
+ DUPX_Log::info("SQL ERROR:" . $ex->getMessage() . "\n" . $ex->getTraceAsString());
115
+ }
116
+
117
  DUPX_DB::setCharset($this->dbh, $this->post['dbcharset'], $this->post['dbcollate']);
118
 
119
  //Will set mode to null only for this db handle session
134
  break;
135
  }
136
 
 
137
  //Set defaults incase the variable could not be read
138
  $this->drop_tbl_log = 0;
139
  $this->rename_tbl_log = 0;
196
  }
197
  break;
198
  }
199
+
200
  }
201
 
202
  public function getRowCountMisMatchTables()
255
 
256
  @mysqli_autocommit($this->dbh, false);
257
 
258
+ $query = '';
259
  $delimiter = ';';
260
+
261
  while (($line = fgets($handle)) !== false) {
262
  if ('DELIMITER ;' == trim($query)) {
263
  $delimiter = ';';
264
+ $query = '';
265
  continue;
266
  }
267
  $query .= $line;
296
  }
297
 
298
  DUPX_Log::info("Skipping delimiter query");
299
+ $query = '';
300
  continue;
301
  }
302
 
359
  $this->dbquery_rows++;
360
  }
361
  }
362
+ $query = '';
363
  $counter++;
364
  }
365
  }
installer/dup-installer/ctrls/ctrl.s2.dbtest.php CHANGED
@@ -70,17 +70,17 @@ class DUPX_DBTest
70
  //REQUIRMENTS
71
  //Pass States: skipped = -1 failed = 0 passed = 1 warned = 2
72
  $this->reqs[5] = array('title' => "Create Database User", 'info' => "{$default_msg}", 'pass' => -1);
73
- $this->reqs[10] = array('title' => "Verify Host Connection", 'info' => "{$default_msg}", 'pass' => -1);
74
- $this->reqs[20] = array('title' => "Check Server Version", 'info' => "{$default_msg}", 'pass' => -1);
75
- $this->reqs[30] = array('title' => "Create New Database Tests", 'info' => "{$default_msg}", 'pass' => -1);
76
- $this->reqs[40] = array('title' => "Confirm Database Visibility", 'info' => "{$default_msg}", 'pass' => -1);
77
  $this->reqs[50] = array('title' => "Manual Table Check", 'info' => "{$default_msg}", 'pass' => -1);
78
- $this->reqs[60] = array('title' => "Test User Table Privileges", 'info' => "{$default_msg}", 'pass' => -1);
79
  $this->reqs[70] = array('title' => "Check Collation Capability", 'info' => "{$default_msg}", 'pass' => -1);
80
- $this->reqs[80] = array('title' => "Check GTID mode", 'info' => "{$default_msg}", 'pass' => -1);
81
  //NOTICES
82
  $this->notices[10] = array('title' => "Table Case Sensitivity", 'info' => "{$default_msg}", 'pass' => -1);
83
- $this->notices[20] = array('title' => "Source Site Triggers", 'info' => "{$default_msg}", 'pass' => -1);
84
  }
85
 
86
  public function run()
@@ -224,7 +224,7 @@ class DUPX_DBTest
224
 
225
  /**
226
  * Create New Database Basic Test
227
- * Use selects: 'Create New Database' for basic
228
  *
229
  * @return null
230
  */
@@ -354,7 +354,7 @@ class DUPX_DBTest
354
 
355
  if ($this->tblPerms['all']) {
356
  $test['pass'] = 1;
357
- $test['info'] = "The user <b>[".htmlentities($this->in->dbuser)."]</b> the correct privileges on the database <b>[".htmlentities($this->in->dbname)."]</b>";
358
  } else {
359
  $list = array();
360
  $test['pass'] = 0;
70
  //REQUIRMENTS
71
  //Pass States: skipped = -1 failed = 0 passed = 1 warned = 2
72
  $this->reqs[5] = array('title' => "Create Database User", 'info' => "{$default_msg}", 'pass' => -1);
73
+ $this->reqs[10] = array('title' => "Host Connection", 'info' => "{$default_msg}", 'pass' => -1);
74
+ $this->reqs[20] = array('title' => "Database Version", 'info' => "{$default_msg}", 'pass' => -1);
75
+ $this->reqs[30] = array('title' => "Database Create New Tests", 'info' => "{$default_msg}", 'pass' => -1);
76
+ $this->reqs[40] = array('title' => "Privileges: User Visibility", 'info' => "{$default_msg}", 'pass' => -1);
77
  $this->reqs[50] = array('title' => "Manual Table Check", 'info' => "{$default_msg}", 'pass' => -1);
78
+ $this->reqs[60] = array('title' => "Privileges: User Resources", 'info' => "{$default_msg}", 'pass' => -1);
79
  $this->reqs[70] = array('title' => "Check Collation Capability", 'info' => "{$default_msg}", 'pass' => -1);
80
+ $this->reqs[80] = array('title' => "Database GTID mode", 'info' => "{$default_msg}", 'pass' => -1);
81
  //NOTICES
82
  $this->notices[10] = array('title' => "Table Case Sensitivity", 'info' => "{$default_msg}", 'pass' => -1);
83
+ $this->notices[20] = array('title' => "Source Database Triggers", 'info' => "{$default_msg}", 'pass' => -1);
84
  }
85
 
86
  public function run()
224
 
225
  /**
226
  * Create New Database Basic Test
227
+ * Use selects: 'Create New Database for basic
228
  *
229
  * @return null
230
  */
354
 
355
  if ($this->tblPerms['all']) {
356
  $test['pass'] = 1;
357
+ $test['info'] = "The user <b>[".htmlentities($this->in->dbuser)."]</b> has the correct privileges on the database <b>[".htmlentities($this->in->dbname)."]</b>";
358
  } else {
359
  $list = array();
360
  $test['pass'] = 0;
installer/dup-installer/favicon/android-chrome-192x192.png ADDED
Binary file
installer/dup-installer/favicon/android-chrome-384x384.png ADDED
Binary file
installer/dup-installer/favicon/apple-touch-icon.png ADDED
Binary file
installer/dup-installer/favicon/browserconfig.xml CHANGED
@@ -2,8 +2,8 @@
2
  <browserconfig>
3
  <msapplication>
4
  <tile>
5
- <square150x150logo src="/dup-installer/favicon/lite01_mstile-150x150.png"/>
6
- <TileColor>#00aba9</TileColor>
7
  </tile>
8
  </msapplication>
9
  </browserconfig>
2
  <browserconfig>
3
  <msapplication>
4
  <tile>
5
+ <square150x150logo src="/mstile-150x150.png"/>
6
+ <TileColor>#da532c</TileColor>
7
  </tile>
8
  </msapplication>
9
  </browserconfig>
installer/dup-installer/favicon/favicon-16x16.png ADDED
Binary file
installer/dup-installer/favicon/favicon-32x32.png ADDED
Binary file
installer/dup-installer/favicon/favicon.ico ADDED
Binary file
installer/dup-installer/favicon/lite01_android-chrome-192x192.png DELETED
Binary file
installer/dup-installer/favicon/lite01_android-chrome-256x256.png DELETED
Binary file
installer/dup-installer/favicon/lite01_apple-touch-icon.png DELETED
Binary file
installer/dup-installer/favicon/lite01_favicon-16x16.png DELETED
Binary file
installer/dup-installer/favicon/lite01_favicon-32x32.png DELETED
Binary file
installer/dup-installer/favicon/lite01_favicon.ico DELETED
Binary file
installer/dup-installer/favicon/lite01_mstile-150x150.png DELETED
Binary file
installer/dup-installer/favicon/lite01_safari-pinned-tab.svg DELETED
@@ -1,42 +0,0 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
- <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
- width="256.000000pt" height="256.000000pt" viewBox="0 0 256.000000 256.000000"
6
- preserveAspectRatio="xMidYMid meet">
7
- <metadata>
8
- Created by potrace 1.11, written by Peter Selinger 2001-2013
9
- </metadata>
10
- <g transform="translate(0.000000,256.000000) scale(0.100000,-0.100000)"
11
- fill="#000000" stroke="none">
12
- <path d="M945 2506 c-38 -11 -72 -21 -74 -23 -4 -3 -10 -69 -16 -163 -1 -30
13
- -3 -63 -4 -72 0 -9 -11 -20 -23 -24 -12 -3 -50 -24 -85 -45 -35 -22 -67 -39
14
- -72 -39 -5 0 -53 23 -107 50 -54 28 -103 50 -108 50 -6 0 -38 -28 -73 -62
15
- l-62 -61 56 -111 c43 -86 53 -113 44 -126 -6 -8 -29 -48 -52 -87 -22 -40 -46
16
- -73 -52 -74 -7 0 -23 -2 -37 -4 -14 -2 -62 -4 -108 -5 -45 -2 -85 -7 -89 -13
17
- -4 -6 -16 -46 -28 -89 -26 -90 -35 -75 94 -159 l86 -56 0 -105 1 -105 -103
18
- -68 c-113 -75 -109 -65 -77 -160 8 -22 14 -48 14 -57 0 -26 12 -29 123 -34 56
19
- -3 107 -7 114 -9 7 -2 20 28 33 78 12 45 28 103 36 128 8 25 16 56 19 68 2 12
20
- 7 31 10 42 4 11 7 57 7 102 0 286 134 547 367 719 59 43 193 106 277 130 67
21
- 19 102 23 229 22 133 -1 160 -4 238 -27 49 -15 107 -37 129 -48 l41 -21 -586
22
- -586 c-322 -322 -588 -584 -590 -582 -3 3 -8 50 -11 105 -8 110 -17 199 -20
23
- 202 -1 2 -44 -150 -95 -336 -51 -187 -99 -361 -107 -387 l-14 -48 41 39 c23
24
- 22 401 399 840 838 l799 799 -37 27 c-21 15 -69 46 -108 69 -96 57 -95 55 -96
25
- 120 0 88 -8 165 -16 172 -7 6 -75 26 -155 45 -12 2 -35 -25 -83 -98 l-68 -102
26
- -103 1 c-58 1 -106 3 -108 5 -2 2 -31 48 -65 101 -41 63 -68 96 -79 95 -9 -1
27
- -48 -10 -87 -21z"/>
28
- <path d="M1452 1307 l-833 -833 23 -20 c26 -24 154 -104 165 -104 5 0 17 -7
29
- 27 -15 20 -15 23 -31 26 -157 2 -42 6 -81 10 -88 4 -6 45 -22 91 -34 l84 -23
30
- 67 101 68 101 102 0 103 0 64 -95 c35 -52 66 -98 70 -102 8 -10 170 35 179 49
31
- 4 6 9 58 10 114 4 104 12 139 35 139 7 0 44 20 82 44 l70 43 104 -54 c57 -29
32
- 108 -53 112 -53 5 0 37 28 73 62 l64 62 -55 111 -56 112 47 76 c25 42 46 81
33
- 46 87 0 5 3 10 8 11 30 3 89 8 161 13 46 3 85 6 86 8 5 5 45 154 45 166 0 7
34
- -45 42 -100 78 l-100 67 0 102 0 102 104 69 103 68 -23 84 c-13 47 -25 87 -28
35
- 89 -2 3 -35 7 -73 9 -37 3 -89 6 -115 8 l-48 3 -19 -66 c-61 -206 -74 -269
36
- -76 -366 -4 -126 -9 -158 -47 -272 -84 -255 -290 -461 -548 -546 -100 -33
37
- -126 -38 -250 -42 -113 -5 -226 14 -338 55 -116 43 -166 -22 492 636 322 323
38
- 587 583 587 578 1 -5 2 -22 4 -39 5 -59 17 -191 20 -230 2 -22 4 -42 5 -45 1
39
- -4 73 244 85 295 11 49 25 101 70 259 45 164 58 216 53 216 -2 0 -378 -375
40
- -836 -833z"/>
41
- </g>
42
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
installer/dup-installer/favicon/mstile-150x150.png ADDED
Binary file
installer/dup-installer/favicon/site.webmanifest CHANGED
@@ -3,13 +3,13 @@
3
  "short_name": "",
4
  "icons": [
5
  {
6
- "src": "/dup-installer/favicon/lite01_android-chrome-192x192.png",
7
  "sizes": "192x192",
8
  "type": "image/png"
9
  },
10
  {
11
- "src": "/dup-installer/favicon/lite01_android-chrome-256x256.png",
12
- "sizes": "256x256",
13
  "type": "image/png"
14
  }
15
  ],
3
  "short_name": "",
4
  "icons": [
5
  {
6
+ "src": "/android-chrome-192x192.png",
7
  "sizes": "192x192",
8
  "type": "image/png"
9
  },
10
  {
11
+ "src": "/android-chrome-384x384.png",
12
+ "sizes": "384x384",
13
  "type": "image/png"
14
  }
15
  ],
installer/dup-installer/main.installer.php CHANGED
@@ -4,7 +4,7 @@
4
  * Copyright (C) 2020, Snap Creek LLC
5
  * website: snapcreek.com
6
  *
7
- * Duplicator (Pro) Plugin is distributed under the GNU General Public License, Version 3,
8
  * June 2007. Copyright (C) 2007 Free Software Foundation, Inc., 51 Franklin
9
  * St, Fifth Floor, Boston, MA 02110, USA
10
  *
@@ -285,12 +285,12 @@ if ($exceptionError != false) {
285
  <title>Duplicator</title>
286
  <link rel='stylesheet' href='assets/font-awesome/css/all.min.css' type='text/css' media='all' />
287
 
288
- <link rel="apple-touch-icon" sizes="180x180" href="favicon/lite01_apple-touch-icon.png">
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">
296
  <meta name="theme-color" content="#ffffff">
@@ -316,7 +316,7 @@ if ($exceptionError != false) {
316
  </td>
317
  <td class="wiz-dupx-version">
318
  <?php if ($GLOBALS["VIEW"] !== 'help') { ?>
319
- <a href="javascript:void(0)" onclick="DUPX.openServerDetails()">version:<?php echo DUPX_U::esc_html($GLOBALS['DUPX_AC']->version_dup); ?></a>&nbsp;
320
  <?php DUPX_View_Funcs::helpLockLink(); ?>
321
  <div style="padding: 6px 0">
322
  <?php DUPX_View_Funcs::helpLink($GLOBALS["VIEW"]); ?>
@@ -329,15 +329,15 @@ if ($exceptionError != false) {
329
  <div class="dupx-modes">
330
  <?php
331
  $php_enforced_txt = ($GLOBALS['DUPX_ENFORCE_PHP_INI']) ? '<i style="color:red"><br/>*PHP ini enforced*</i>' : '';
332
- $db_only_txt = ($GLOBALS['DUPX_AC']->exportOnlyDB) ? ' - Database Only' : '';
333
  $db_only_txt = $db_only_txt . $php_enforced_txt;
334
 
335
  if ($GLOBALS['DUPX_AC']->installSiteOverwriteOn) {
336
  echo ($GLOBALS['DUPX_STATE']->mode === DUPX_InstallerMode::OverwriteInstall)
337
- ? "<span class='dupx-overwrite'>Mode: Overwrite Install (Beta) {$db_only_txt}</span>"
338
- : "Mode: Standard Install {$db_only_txt}";
339
  } else {
340
- echo "Mode: Standard Install {$db_only_txt}";
341
  }
342
  ?>
343
  </div>
4
  * Copyright (C) 2020, Snap Creek LLC
5
  * website: snapcreek.com
6
  *
7
+ * Duplicator Plugin is distributed under the GNU General Public License, Version 3,
8
  * June 2007. Copyright (C) 2007 Free Software Foundation, Inc., 51 Franklin
9
  * St, Fifth Floor, Boston, MA 02110, USA
10
  *
285
  <title>Duplicator</title>
286
  <link rel='stylesheet' href='assets/font-awesome/css/all.min.css' type='text/css' media='all' />
287
 
288
+ <link rel="apple-touch-icon" sizes="180x180" href="favicon/apple-touch-icon.png">
289
+ <link rel="icon" type="image/png" sizes="32x32" href="favicon/favicon-32x32.png">
290
+ <link rel="icon" type="image/png" sizes="16x16" href="favicon/favicon-16x16.png">
291
  <link rel="manifest" href="favicon/site.webmanifest">
292
+ <link rel="mask-icon" href="favicon/safari-pinned-tab.svg">
293
+ <link rel="shortcut icon" href="favicon/favicon.ico">
294
  <meta name="msapplication-TileColor" content="#da532c">
295
  <meta name="msapplication-config" content="favicon/browserconfig.xml">
296
  <meta name="theme-color" content="#ffffff">
316
  </td>
317
  <td class="wiz-dupx-version">
318
  <?php if ($GLOBALS["VIEW"] !== 'help') { ?>
319
+ <a href="javascript:void(0)" onclick="DUPX.openServerDetails()">version:&nbsp;<?php echo DUPX_U::esc_html($GLOBALS['DUPX_AC']->version_dup); ?></a>&nbsp;
320
  <?php DUPX_View_Funcs::helpLockLink(); ?>
321
  <div style="padding: 6px 0">
322
  <?php DUPX_View_Funcs::helpLink($GLOBALS["VIEW"]); ?>
329
  <div class="dupx-modes">
330
  <?php
331
  $php_enforced_txt = ($GLOBALS['DUPX_ENFORCE_PHP_INI']) ? '<i style="color:red"><br/>*PHP ini enforced*</i>' : '';
332
+ $db_only_txt = ($GLOBALS['DUPX_AC']->exportOnlyDB) ? ' - Database Only]' : ']';
333
  $db_only_txt = $db_only_txt . $php_enforced_txt;
334
 
335
  if ($GLOBALS['DUPX_AC']->installSiteOverwriteOn) {
336
  echo ($GLOBALS['DUPX_STATE']->mode === DUPX_InstallerMode::OverwriteInstall)
337
+ ? "<span class='dupx-overwrite'>[Overwrite Install{$db_only_txt}</span>"
338
+ : "[Standard Install{$db_only_txt}";
339
  } else {
340
+ echo "[Standard Install{$db_only_txt}";
341
  }
342
  ?>
343
  </div>
installer/dup-installer/views/view.s1.base.php CHANGED
@@ -10,7 +10,7 @@ require_once($GLOBALS['DUPX_INIT'].'/ctrls/classes/class.ctrl.extraction.php');
10
 
11
  $is_wpconfarc_present = file_exists(DUPX_Package::getWpconfigArkPath());
12
  //ARCHIVE FILE
13
- if (file_exists($GLOBALS['FW_PACKAGE_PATH'])) {
14
  $arcCheck = 'Pass';
15
  } else {
16
  if ($is_wpconfarc_present) {
@@ -31,6 +31,7 @@ $managed_host = $mh_manager->isManaged();
31
 
32
  //REQUIRMENTS
33
  $req = array();
 
34
  $req['10'] = DUPX_Server::is_dir_writable($GLOBALS['DUPX_ROOT']) ? 'Pass' : 'Fail';
35
  $req['20'] = function_exists('mysqli_connect') ? 'Pass' : 'Fail';
36
  $req['30'] = DUPX_Server::$php_version_safe ? 'Pass' : 'Fail';
@@ -94,696 +95,750 @@ $archive_config = DUPX_ArchiveConfig::getInstance();
94
  ?>
95
 
96
  <form id="s1-input-form" method="post" class="content-form" autocomplete="off">
97
- <input type="hidden" name="view" value="step1" />
98
- <input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step1'); ?>">
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">
106
- Step <span class="step">1</span> of 4: Deployment
107
- <div class="sub-header">This step will extract the archive file contents.</div>
 
 
 
 
 
 
 
 
 
 
108
  </div><br/>
109
 
110
- <!-- ====================================
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
-
118
- <!-- STANDARD INSTALL -->
119
- <input type="radio" id="setup-type-fresh" name="setup_type" value="1" checked="true" onclick="DUPX.toggleSetupType()" />
120
- <label for="setup-type-fresh"><b>Standard Install</b></label>
121
- <i class="fas fa-question-circle fa-sm"
122
- data-tooltip-title="Standard Install"
123
- data-tooltip="A standard install is the default way Duplicator has always worked. Setup your package in an empty directory and run the installer."></i>
124
- <br/>
125
- <div class="s1-setup-type-sub" id="s1-setup-type-sub-1">
126
- <input type="checkbox" name="setup-backup-files" id="setup-backup-files-fresh" />
127
- <label for="setup-backup-files-fresh">Backup Existing Files</label><br/>
128
- <input type="checkbox" name="setup-remove-files" id="setup-remove-files-fresh" />
129
- <label for="setup-remove-files-fresh">Remove Existing Files</label><br/>
130
- </div><br/>
131
-
132
- <!-- OVERWRITE INSTALL -->
133
- <input type="radio" id="setup-type-overwrite" name="setup_type" value="2" onclick="DUPX.toggleSetupType()" />
134
- <label for="setup-type-overwrite"><b>Overwrite Install (Beta)</b></label>
135
- <i class="fas fa-question-circle fa-sm"
136
- data-tooltip-title="Overwrite Install"
137
- data-tooltip="An Overwrite Install allows Duplicator to overwrite an existing WordPress Site."></i><br/>
138
- <div class="s1-setup-type-sub" id="s1-setup-type-sub-2">
139
- <input type="checkbox" name="setup-backup-files" id="setup-backup-files-overwrite" />
140
- <label for="setup-backup-files-overwrite">Backup Existing Files</label><br/>
141
- <input type="checkbox" name="setup-remove-files" id="setup-remove-files-overwrite" />
142
- <label for="setup-remove-files-overwrite">Remove Existing Files</label><br/>
143
- <input type="checkbox" name="setup-backup-database" id="setup-backup-database-overwrite" />
144
- <label for="setup-backup-database-overwrite">Backup Existing Database</label> <br/>
145
- </div><br/>
146
-
147
- <!-- DB-ONLY INSTALL -->
148
- <input type="radio" id="setup-type-db" name="setup_type" value="3" onclick="DUPX.toggleSetupType()" />
149
- <label for="setup-type-db"><b>Database Only Install</b></label>
150
- <i class="fas fa-question-circle fa-sm"
151
- data-tooltip-title="Database Only"
152
- data-tooltip="A database only install allows Duplicator to connect to a database and install only the database."></i><br/>
153
- <div class="s1-setup-type-sub" id="s1-setup-type-sub-3">
154
- <input type="checkbox" name="setup-backup-database" id="setup-backup-database-db" />
155
- <label for="setup-backup-database-db">Backup Existing Database</label> <br/>
156
- </div><br/>
 
 
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  </div>
159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
 
161
- <!-- ====================================
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
- ?>
169
- <div class="<?php echo $badge; ?>">
170
- <?php echo $arcCheck; ?>
171
  </div>
172
- </div>
173
- <div id="s1-area-archive-file" style="display:none" class="hdr-sub1-area">
174
- <div id="tabs">
175
- <ul>
176
- <li><a href="#tabs-1">Archive</a></li>
177
- </ul>
178
- <div id="tabs-1">
179
 
180
- <table class="s1-archive-local">
181
- <tr>
182
- <td colspan="2"><div class="hdr-sub3">Site Details</div></td>
183
- </tr>
184
- <tr>
185
- <td>Site:</td>
186
- <td><?php echo DUPX_U::esc_html($GLOBALS['DUPX_AC']->blogname); ?> </td>
187
- </tr>
188
- <tr>
189
- <td>Notes:</td>
190
- <td><?php echo strlen($GLOBALS['DUPX_AC']->package_notes) ? DUPX_U::esc_html($GLOBALS['DUPX_AC']->package_notes) : " - no notes - "; ?></td>
191
- </tr>
192
- <?php if ($GLOBALS['DUPX_AC']->exportOnlyDB) : ?>
193
- <tr>
194
- <td>Mode:</td>
195
- <td>Archive only database was enabled during package package creation.</td>
196
- </tr>
197
- <?php endif; ?>
198
- </table>
199
-
200
- <table class="s1-archive-local">
201
- <tr>
202
- <td colspan="2"><div class="hdr-sub3">File Details</div></td>
203
- </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  <tr>
205
- <td style="vertical-align:top">Status:</td>
206
  <td>
207
- <?php if ($arcCheck == 'Fail' || $arcCheck == 'Warn') : ?>
208
- <span class="dupx-fail" style="font-style:italic">
209
- <?php
210
- if ($arcCheck == 'Warn') {
211
- ?>
212
- An archive/installer mismatch has been detected. Be sure to download the installer.php and archive.zip/daf files from the same
213
- package line in your WordPress Admin. The correct installer can also be found inside of the archive.zip/daf file named
214
- "installer-backup.php". Users can still proceed with the install by choosing Manual Archive Extraction to ignore this message,
215
- but must manually extract the archive themselves.
216
- <?php
217
- } else {
218
- ?>
219
- An archive/installer mismatch has been detected. Be sure to download the installer.php and archive.zip/daf files from the same
220
- package line in your WordPress Admin. The correct installer can also be found inside of the archive.zip/daf file named
221
- "installer-backup.php". <br/><br/>
222
-
223
- If the contents of the archive were manually transferred to this location without the archive file then simply create a temp file named with
224
- the exact name of the archive see WordPress Admin > Duplicator > Package Line > Details > Archive Name and place the file in the same directory
225
- as the installer.php file. The temp file will not need to contain any data. Afterward, refresh this page and continue with the install process.
226
- <?php
227
- }
228
- ?>
229
- </span>
230
- <?php else : ?>
231
- <span class="dupx-pass">Archive file successfully detected.</span>
232
- <?php endif; ?>
233
  </td>
234
  </tr>
235
- <tr>
236
- <td>Path:</td>
237
- <td><?php echo DUPX_U::esc_html($root_path); ?> </td>
238
- </tr>
239
- <tr>
240
- <td>Size:</td>
241
- <td><?php echo DUPX_U::readableByteSize($arcSize); ?> </td>
242
- </tr>
243
- </table>
244
-
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> &nbsp;
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> &nbsp;
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> &nbsp;
382
- <input type="radio" name="logging" id="logging-detailed" value="<?php echo DUPX_Log::LV_DETAILED; ?>"> <label for="logging-detailed" class="radio">Detailed</label> &nbsp;
383
- <input type="radio" name="logging" id="logging-debug" value="<?php echo DUPX_Log::LV_DEBUG; ?>"> <label for="logging-debug" class="radio">Debug</label> &nbsp;
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
408
- ==================================== -->
409
- <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s1-area-sys-setup">
410
- <a id="s1-area-sys-setup-link"><i class="fa fa-plus-square"></i>Validation</a>
411
- <div class="<?php echo ( $req_success) ? 'status-badge-pass' : 'status-badge-fail'; ?> ">
412
- <?php echo ( $req_success) ? 'Pass' : 'Fail'; ?>
413
  </div>
414
- </div>
415
- <div id="s1-area-sys-setup" style="display:none" class="hdr-sub1-area">
416
- <div class='info-top'>The system validation checks help to make sure the system is ready for install.</div>
 
 
 
 
 
 
 
 
 
 
 
 
417
 
418
- <!-- REQUIREMENTS -->
419
- <div class="s1-reqs" id="s1-reqs-all">
420
- <div class="header">
421
- <table class="s1-checks-area">
422
- <tr>
423
- <td class="title">Requirements <small>(must pass)</small></td>
424
- <td class="toggle"><a href="javascript:void(0)" onclick="DUPX.toggleAllReqs('#s1-reqs-all')">[toggle]</a></td>
425
- </tr>
426
- </table>
427
- </div>
428
 
429
- <!-- REQ 10 -->
430
- <?php
431
- $status = strtolower($req['10']);
432
- ?>
433
- <div class="status <?php echo DUPX_U::esc_attr($status); ?>"><?php echo DUPX_U::esc_html($req['10']); ?></div>
434
- <div class="title" data-status="<?php echo DUPX_U::esc_attr($status); ?>" data-type="toggle auto" data-target="#s1-reqs10"><i class="fa fa-caret-right"></i> Permissions</div>
435
- <div class="info" id="s1-reqs10">
436
- <table>
437
- <tr>
438
- <td><b>Deployment Path:</b> </td>
439
- <td><i><?php echo "{$GLOBALS['DUPX_ROOT']}"; ?></i> </td>
440
- </tr>
441
- <tr>
442
- <td><b>Suhosin Extension:</b> </td>
443
- <td><?php echo extension_loaded('suhosin') ? "<i class='dupx-fail'>Enabled</i>" : "<i class='dupx-pass'>Disabled</i>"; ?> </td>
444
- </tr>
445
- <tr>
446
- <td><b>PHP Safe Mode:</b> </td>
447
- <td><?php echo (DUPX_Server::$php_safe_mode_on) ? "<i class='dupx-fail'>Enabled</i>" : "<i class='dupx-pass'>Disabled</i>"; ?> </td>
448
- </tr>
449
- </table><br/>
450
 
451
- The deployment path must be writable by PHP in order to extract the archive file. Incorrect permissions and extension such as
452
- <a href="https://suhosin.org/stories/index.html" target="_blank">suhosin</a> can sometimes interfere with PHP being able to write/extract files.
453
- Please see the <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-trouble-055-q" target="_blank">FAQ permission</a> help link for complete details.
454
- PHP with <a href='http://php.net/manual/en/features.safe-mode.php' target='_blank'>safe mode</a> should be disabled. If Safe Mode is enabled then
455
- please contact your hosting provider or server administrator to disable PHP safe mode.
456
- </div>
457
 
458
- <!-- REQ 20 -->
459
- <div class="status <?php echo strtolower($req['20']); ?>"><?php echo DUPX_U::esc_html($req['20']); ?></div>
460
- <div class="title" data-status="<?php echo strtolower($req['20']); ?>" data-type="toggle auto" data-target="#s1-reqs20"><i class="fa fa-caret-right"></i> PHP Mysqli</div>
461
- <div class="info" id="s1-reqs20">
462
- Support for the PHP <a href='http://us2.php.net/manual/en/mysqli.installation.php' target='_blank'>mysqli extension</a> is required.
463
- Please contact your hosting provider or server administrator to enable the mysqli extension. <i>The detection for this call uses
464
- the function_exists('mysqli_connect') call.</i>
465
- </div>
466
 
467
- <!-- REQ 30 -->
468
- <div class="status <?php echo strtolower($req['30']); ?>"><?php echo DUPX_U::esc_html($req['30']); ?></div>
469
- <div class="title" data-status="<?php echo strtolower($req['30']); ?>" data-type="toggle auto" data-target="#s1-reqs30"><i class="fa fa-caret-right"></i> PHP Version</div>
470
- <div class="info" id="s1-reqs30">
471
- This server is running: <b>PHP <?php echo DUPX_Server::$php_version ?></b>. <i>A minimum of PHP 5.3.8+ is required. PHP 7.0+ is recommended.</i>
472
- <br/><br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
473
 
474
- If this requirement fails contact your host or server administrator and let them know you would like to upgrade your PHP version.
475
- For more information on this topic see the FAQ titled <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-licensing-017-q" target="_blank">What version of PHP Does Duplicator Support?</a>
476
- </div>
 
 
 
 
 
 
 
 
477
 
478
- <!-- REQ 40 -->
479
- <div class="status <?php echo strtolower($req['40']); ?>"><?php echo DUPX_U::esc_html($req['40']); ?></div>
480
- <div class="title" data-status="<?php echo strtolower($req['40']); ?>" data-type="toggle auto" data-target="#s1-reqs40"><i class="fa fa-caret-right"></i> Managed Environment</div>
481
- <div class="info" id="s1-reqs40">
482
- <p>
483
- <?php if ($managed_host !== false): ?>
484
- The installer has detected that this server is possibly in a managed hosting setup. The followings checks
485
- have been made which will not allow the installer to continue.
486
- <?php else: ?>
487
- Current host is not managed.
488
- <?php endif; ?>
 
 
 
489
  </p>
490
- <ul>
491
- <li>
492
- <b>Managed system: </b> <?php echo is_string($managed_host)
493
- ? '<span class="maroon">It appears the installer is being executed on "' . $mh_manager->getHosting($managed_host)->getLabel() . '". Managed hosting is not presently supported in Duplicator Lite.</span>'
494
- : "<span class='green'>No restrictions have been found for this host.</span>" ?>
495
- </li>
496
- <li>
497
- <b>Configuration file: </b><?php echo $mh_manager->wpConfigIsNotWriteable()
498
- ? "<span class='maroon'>The WordPress configuration file (wp-config.php) must be accessible and writeable to the installer</span>"
499
- : "<span class='green'>The wp-config.php is accessible to the installer.</span>" ?>
500
- </li>
501
- <li>
502
- <b>Core Directories: </b><?php echo $mh_manager->notAccessibleCoreDirPresent() > 0
503
- ? "<span class='maroon'>The WordPress core directories wp-admin, wp-content and wp-includes must be accessible and writeable to the installer</span>"
504
- : "<span class='green'>The WordPress core directories are accessible to the installer</span>"; ?>
505
- </li>
506
- </ul>
507
- </div>
508
- </div><br/>
509
-
510
- <!-- ====================================
511
- NOTICES -->
512
- <div class="s1-reqs" id="s1-notice-all">
513
- <div class="header">
514
- <table class="s1-checks-area">
515
- <tr>
516
- <td class="title">Notices <small>(optional)</small></td>
517
- <td class="toggle"><a href="javascript:void(0)" onclick="DUPX.toggleAllNotices('#s1-notice-all')">[toggle]</a></td>
518
- </tr>
519
- </table>
520
- </div>
521
-
522
- <!-- NOTICE 10: OVERWRITE INSTALL -->
523
- <?php if ($is_overwrite_mode && $is_wordpress) : ?>
524
- <div class="status fail">Warn</div>
525
- <div class="title" data-status="warn" data-type="toggle auto" data-target="#s1-notice10"><i class="fa fa-caret-right"></i> Overwrite Install (Beta)</div>
526
- <div class="info" id="s1-notice10">
527
- <?php if ($GLOBALS['DUPX_AC']->installSiteOverwriteOn || $is_dbonly) { ?>
528
- <div class="gray-panel warn-text gray-panel-overwrite" >
529
- <i class="fas fa-exclamation-triangle fa-lg"></i> WARNING: The Duplicator installer file is currently placed in a location that has an existing WordPress site!
530
- Continuing with this install process will <u>overwrite</u> all existing files and the database associated with this WordPress site. Only continue
531
- with this process if this site is no longer needed.<br/>
532
- </div>
533
- <?php } ?>
534
- <p style="font-size:14px">
535
- <b><i class="fas fa-folder-open"></i> Deployment Path:</b> <i><?php echo "{$GLOBALS['DUPX_ROOT']}"; ?></i>
536
  </p>
537
- <?php if ($GLOBALS['DUPX_AC']->installSiteOverwriteOn || $is_dbonly) { ?>
538
- <p>
539
- Duplicator is in "Overwrite Install (Beta)" mode because it has detected an existing WordPress site at the deployment path above. This mode allows for the installer
540
- to be dropped directly into an existing WordPress site and overwrite its contents. Any content inside of the archive file
541
- will <u>overwrite</u> the existing contents in the deployment path above. To continue choose one of these options:
542
- </p>
543
-
544
- <ol>
545
- <li>Ignore this notice and continue with the install to overwrite this WordPress site.</li>
546
- <li>Move the installer and archive to an <u>empty directory</u>. Then install from there to keep this site intact.</li>
547
- </ol>
548
-
549
- <p style="color:maroon">
550
- <b>Notice:</b> Existing content such as plugin/themes/images will still show-up after the install is complete if they did not already exist in
551
- the archive file. For example, if plugin X is in the current site but that same plugin X <u>does not exist</u> in the archive file
552
- then that plugin will display as a disabled plugin after the install is completed. The same concept with themes, images and files apply.
553
- This will not impact the site's operation, and the behavior is expected since the install process only extracts the archive files to the deployment
554
- path.
555
- </p>
556
-
557
- <p>
558
- <b>Recommendation:</b> It is recommended you only overwrite WordPress sites that have no value, such as a temporary staging site. On step 2
559
- of this installer you will be given the option to change the database if needed. However, by default the current sites database will be
560
- replaced with the one in this Duplicator package.
561
- </p>
562
- <?php
563
- } else {
564
- ?>
565
- <p>
566
- Duplicator works best by placing the installer and archive files into an empty directory. If a wp-config.php file is found in the extraction
567
- directory it might indicate that a pre-existing WordPress site exists which can lead to a bad install.
568
- </p>
569
- <b>Options:</b>
570
- <ul style="margin-bottom: 0">
571
- <li>If the archive was already manually extracted then <a href="javascript:void(0)" onclick="DUPX.getManaualArchiveOpt()">[Enable Manual Archive Extraction]</a></li>
572
- <li>Empty the directory of all files, except for the installer.php and archive.zip/daf files.</li>
573
- <li>Advanced Users: Can attempt to manually remove the wp-config file only if the archive was manually extracted.</li>
574
- </ul>
575
- <?php
576
- }
577
- ?>
578
- </div>
579
-
580
- <!-- NOTICE 20: ARCHIVE EXTRACTED -->
581
- <?php elseif ($is_wpconfarc_present && file_exists("{$root_path}/dup-installer")) : ?>
582
- <div class="status fail">Warn</div>
583
- <div class="title" data-type="toggle" data-target="#s1-notice20"><i class="fa fa-caret-right"></i> Archive Extracted</div>
584
- <div class="info" id="s1-notice20">
585
- <b>Deployment Path:</b> <i><?php echo "{$GLOBALS['DUPX_ROOT']}"; ?></i>
586
- <br/><br/>
587
-
588
- The installer has detected that the archive file has been extracted to the deployment path above. To continue choose one of these options:
589
 
590
  <ol>
591
- <li>Skip the extraction process by <a href="javascript:void(0)" onclick="DUPX.getManaualArchiveOpt()">[enabling manual archive extraction]</a> </li>
592
- <li>Ignore this message and continue with the install process to re-extract the archive file.</li>
593
  </ol>
594
 
595
- <small>Note: This test looks for a file named <i>dup-wp-config-arc__[HASH].txt</i> in the dup-installer directory. If the file exists then this notice is shown.
596
- The <i>dup-wp-config-arc__[HASH].txt</i> file is created with every archive and removed once the install is complete. For more details on this process see the
597
- <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-015-q" target="_blank">manual extraction FAQ</a>.</small>
598
- </div>
599
- <?php endif; ?>
600
-
601
- <!-- NOTICE 25: DATABASE ONLY -->
602
- <?php if ($is_dbonly && !$is_wordpress) : ?>
603
- <div class="status fail">Warn</div>
604
- <div class="title" data-type="toggle" data-target="#s1-notice25"><i class="fa fa-caret-right"></i> Database Only</div>
605
- <div class="info" id="s1-notice25">
606
- <b>Deployment Path:</b> <i><?php echo "{$GLOBALS['DUPX_ROOT']}"; ?></i>
607
- <br/><br/>
608
 
609
- The installer has detected that a WordPress site does not exist at the deployment path above. This installer is currently in 'Database Only' mode because that is
610
- how the archive was created. If core WordPress site files do not exist at the path above then they will need to be placed there in order for a WordPress site
611
- to properly work. To continue choose one of these options:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
612
 
613
- <ol>
614
- <li>Place this installer and archive at a path where core WordPress files already exist to hide this message. </li>
615
- <li>Create a new package that includes both the database and the core WordPress files.</li>
616
- <li>Ignore this message and install only the database (for advanced users only).</li>
617
- </ol>
 
 
618
 
619
- <small>Note: This test simply looks for the directories <?php echo DUPX_Server::$wpCoreDirsList; ?> and a wp-config.php file. If they are not found in the
620
- deployment path above then this notice is shown.</small>
621
 
622
- </div>
623
- <?php endif; ?>
 
 
624
 
625
- <!-- NOTICE 30 -->
626
- <div class="status <?php echo ($notice['30'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['30']); ?></div>
627
- <div class="title" data-type="toggle" data-target="#s1-notice30"><i class="fa fa-caret-right"></i> Package Age</div>
628
- <div class="info" id="s1-notice30">
629
- This package is <?php echo "{$fulldays}"; ?> day(s) old. Packages older than 180 days might be considered stale. It is recommended to build a new
630
- package unless your aware of the content and its data. This is message is simply a recommendation.
631
  </div>
 
 
 
 
 
 
 
 
 
632
 
 
 
 
633
 
634
- <!-- NOTICE 40:
635
- Legacy PHP 5.2 Version check (Removed) -->
 
 
 
636
 
 
 
637
 
638
- <!-- NOTICE 45 -->
639
- <div class="status <?php echo ($notice['45'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo $notice['45']; ?></div>
640
- <div class="title" data-type="toggle" data-target="#s1-notice45"><i class="fa fa-caret-right"></i> PHP Version Mismatch</div>
641
- <div class="info" id="s1-notice45">
642
- <?php
643
- $cssStyle = $notice['45'] == 'Good' ? 'color:green' : 'color:red';
644
- echo "<b style='{$cssStyle}'>You are migrating site from the PHP {$packagePHP} to the PHP {$currentPHP}</b>.<br/>"
645
- ."If this servers PHP version is different from the PHP version of where the package was created it might cause problems with various parts of your website
646
- and/or plugins and themes. It is highly recommended to try and use the same version of PHP if you are able to do so. This is simply a warning
647
- and in the event no problems arise then you can igonre this message.<br/>";
648
- ?>
649
  </div>
 
 
 
 
 
 
 
 
 
650
 
651
- <!-- NOTICE 50 -->
652
- <div class="status <?php echo ($notice['50'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['50']); ?></div>
653
- <div class="title" data-type="toggle" data-target="#s1-notice50"><i class="fa fa-caret-right"></i> PHP Open Base</div>
654
- <div class="info" id="s1-notice50">
655
- <b>Open BaseDir:</b> <i><?php echo $notice['50'] == 'Good' ? "<i class='dupx-pass'>Disabled</i>" : "<i class='dupx-fail'>Enabled</i>"; ?></i>
656
- <br/><br/>
657
 
658
- If <a href="http://php.net/manual/en/ini.core.php#ini.open-basedir" target="_blank">open_basedir</a> is enabled and your
659
- having issues getting your site to install properly; please work with your host and follow these steps to prevent issues:
660
- <ol style="margin:7px; line-height:19px">
661
- <li>Disable the open_basedir setting in the php.ini file</li>
662
- <li>If the host will not disable, then add the path below to the open_basedir setting in the php.ini<br/>
663
- <i style="color:maroon">"<?php echo str_replace('\\', '/', dirname(__FILE__)); ?>"</i>
664
- </li>
665
- <li>Save the settings and restart the web server</li>
666
- </ol>
667
- Note: This warning will still show if you choose option #2 and open_basedir is enabled, but should allow the installer to run properly. Please work with your
668
- hosting provider or server administrator to set this up correctly.
669
- </div>
670
 
671
- <!-- NOTICE 60 -->
672
- <div class="status <?php echo ($notice['60'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['60']); ?></div>
673
- <div class="title" data-type="toggle" data-target="#s1-notice60"><i class="fa fa-caret-right"></i> PHP Timeout</div>
674
- <div class="info" id="s1-notice60">
675
- <b>Archive Size:</b> <?php echo DUPX_U::readableByteSize($arcSize) ?> <small>(detection limit is set at <?php echo DUPX_U::readableByteSize($max_time_size) ?>) </small><br/>
676
- <b>PHP max_execution_time:</b> <?php echo "{$max_time_ini}"; ?> <small>(zero means not limit)</small> <br/>
677
- <b>PHP set_time_limit:</b> <?php echo ($max_time_zero) ? '<i style="color:green">Success</i>' : '<i style="color:maroon">Failed</i>' ?>
678
- <br/><br/>
679
 
680
- The PHP <a href="http://php.net/manual/en/info.configuration.php#ini.max-execution-time" target="_blank">max_execution_time</a> setting is used to
681
- determine how long a PHP process is allowed to run. If the setting is too small and the archive file size is too large then PHP may not have enough
682
- time to finish running before the process is killed causing a timeout.
683
- <br/><br/>
 
 
 
 
 
 
 
 
684
 
685
- Duplicator attempts to turn off the timeout by using the
686
- <a href="http://php.net/manual/en/function.set-time-limit.php" target="_blank">set_time_limit</a> setting. If this notice shows as a warning then it is
687
- still safe to continue with the install. However, if a timeout occurs then you will need to consider working with the max_execution_time setting or extracting the
688
- archive file using the 'Manual Archive Extraction' method.
689
- Please see the <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-trouble-100-q" target="_blank">FAQ timeout</a> help link for more details.
690
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
691
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
692
 
693
- <!-- NOTICE 8 -->
694
- <div class="status <?php echo ($notice['70'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['70']); ?></div>
695
- <div class="title" data-type="toggle" data-target="#s1-notice70"><i class="fa fa-caret-right"></i> WordPress Multisite</div>
696
- <div class="info" id="s1-notice70">
697
- <b>Status:</b> <?php echo $notice['70'] == 'Good' ? 'This archive is not a Multisite' : 'This is an unsupported Multisite archive'; ?>
698
- <br/><br/>
699
 
700
- Duplicator does not support WordPress Multisite (MU) migrations. We recommend using Duplicator Pro which currently supports full Multisite migrations and
701
- subsite to standalone site migrations.
702
- <br/><br/>
703
- While it is not recommended you can still continue with the build of this package. Please note that after the install the site may not be working correctly.
704
- Additional manual custom configurations will need to be made to finalize this Multisite migration.
 
705
 
706
- <i><a href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_is_mu_warn_exe&utm_campaign=duplicator_pro' target='_blank'>[upgrade to pro]</a></i>
707
- </div>
 
 
 
708
 
709
- <!-- NOTICE 80 -->
710
- <div class="status <?php echo ($notice['80'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['80']); ?></div>
711
- <div class="title" data-type="toggle" data-target="#s1-notice80"><i class="fa fa-caret-right"></i> WordPress wp-config Location</div>
712
- <div class="info" id="s1-notice80">
713
- If the wp-config.php file was moved up one level and out of the WordPress root folder in the package creation site then this test will show a warning.
714
- <br/><br/>
715
- This Duplicator installer will place this wp-config.php file in the WordPress setup root folder of this installation site to help stabilize the install process.
716
- This process will not break anything in your installation site, but the details are here for your information.
717
- </div>
718
 
719
- <!-- NOTICE 90 -->
720
- <div class="status <?php echo ($notice['90'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['90']); ?></div>
721
- <div class="title" data-type="toggle" data-target="#s1-notice90"><i class="fa fa-caret-right"></i> WordPress wp-content Location</div>
722
- <div class="info" id="s1-notice90">
723
- If the wp-content directory was moved and not located at the WordPress root folder in the package creation site then this test will show a warning.
724
- <br/><br/>
725
- Duplicator Installer will place this wp-content directory in the WordPress setup root folder of this installation site. It will not break anything in your installation
726
- site. It is just for your information.
727
- </div>
728
 
729
- <!-- NOTICE 100 -->
730
- <div class="status <?php echo ($notice['100'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['100']); ?></div>
731
- <div class="title" data-type="toggle" data-target="#s1-notice100"><i class="fa fa-caret-right"></i> Sufficient Disk Space</div>
732
- <div class="info" id="s1-notice100">
733
- <?php
734
- echo ($notice['100'] == 'Good') ? 'You have sufficient disk space in your machine to extract the archive.' : 'You don’t have sufficient disk space in your machine to extract the archive. Ask your host to increase disk space.'
735
- ?>
736
- </div>
 
737
 
738
- <!-- NOTICE 110 -->
739
- <div class="status <?php echo ($notice['110'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['110']); ?></div>
740
- <div class="title" data-type="toggle" data-target="#s1-notice110"><i class="fa fa-caret-right"></i> Wordfence</div>
741
- <div class="info" id="s1-notice110">
742
- <b>Wordfence Firewall:</b> <?php echo ($notice['110'] == 'Warn') ? "<span style='color:red;'>detected at {$parentWordFencePath}</span>" : "<span style='color:green;'>not detected</span>"; ?>
743
- <p>
744
- The Wordfence Web Application Firewall is a PHP based, application level firewall that filters out malicious
745
- requests to your site. Sometimes Wordfence returns false positives on requests done during the installation process,
746
- because of which it might fail. We recommend turning off the Wordfence firewall of the WordPress instance located at the mentioned path.
747
- </p>
748
- </div>
749
 
 
 
 
 
 
 
 
 
 
 
750
  </div>
751
 
752
  </div>
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) { ?>
759
- <input id="accept-overwrite" name="accept-overwrite" type="checkbox" onclick="DUPX.acceptWarning()" />
760
- <label for="accept-overwrite">Continue with site overwrite mode <small style="font-style:italic">(required to continue)</small></label><br/>
761
- <?php } ?>
762
- <input id="accept-warnings" name="accpet-warnings" type="checkbox" onclick="DUPX.acceptWarning()" />
763
- <label for="accept-warnings">I have read and accept all <a href="javascript:void(0)" onclick="DUPX.viewTerms()">terms &amp; notices</a> <small style="font-style:italic">(required to continue)</small></label><br/>
764
- </div>
765
- <?php include ('view.s1.terms.php'); ?>
766
- <br/><br/>
767
- <br/><br/>
768
- <?php endif; ?>
769
-
770
-
771
- <?php if (!$req_success || $arcCheck == 'Fail') : ?>
772
- <div class="s1-err-msg">
773
- <i>
774
- This installation will not be able to proceed until the setup and validation sections above both pass. Please adjust your servers settings or contact your
775
- server administrator, hosting provider or visit the resources below for additional help.
776
- </i>
777
- <div style="padding:10px">
778
- &raquo; <a href="https://snapcreek.com/duplicator/docs/faqs-tech/" target="_blank">Technical FAQs</a> <br/>
779
- &raquo; <a href="https://snapcreek.com/support/docs/" target="_blank">Online Documentation</a> <br/>
780
- </div>
781
- </div>
782
- <?php else : ?>
783
- <div class="footer-buttons" >
784
- <button id="s1-deploy-btn" type="button" title="<?php echo DUPX_U::esc_attr($agree_msg); ?>" onclick="DUPX.processNext()" class="default-btn"> Next <i class="fa fa-caret-right"></i> </button>
785
  </div>
786
- <?php endif; ?>
 
 
 
 
 
787
 
788
  </form>
789
 
@@ -1081,7 +1136,7 @@ Auto Posts to view.step2.php
1081
  $('#s1-result-form').submit();
1082
  }, 500);
1083
  <?php endif; ?>
1084
- $('#progress-area').fadeOut(1000);
1085
  //Failures aren't necessarily fatal - just record them for later display
1086
 
1087
  $("#ajax-json-debug").val(dataJSON);
@@ -1297,7 +1352,7 @@ Auto Posts to view.step2.php
1297
  $('#s1-result-form').submit();
1298
  }, 500);
1299
  <?php endif; ?>
1300
- $('#progress-area').fadeOut(1000);
1301
  } else {
1302
  $('#ajaxerr-data').html('Error Processing Step 1');
1303
  DUPX.hideProgressBar();
@@ -1400,6 +1455,15 @@ Auto Posts to view.step2.php
1400
  $('#s1-input-form').show(200);
1401
  }
1402
 
 
 
 
 
 
 
 
 
 
1403
  /**
1404
  * Accetps Usage Warning */
1405
  DUPX.acceptWarning = function ()
@@ -1445,18 +1509,16 @@ Auto Posts to view.step2.php
1445
  //INIT Routines
1446
  DUPX.initToggle();
1447
  $("#tabs").tabs();
 
1448
  DUPX.acceptWarning();
1449
 
1450
- // <td id="archive_action_wrapper" >
1451
- // <select id="archive_action_input"
1452
-
1453
  $('#archive_action_wrapper').each(function () {
1454
  let paramWrapper = $(this);
1455
  let noteWrapper = paramWrapper.find('.sub-note');
1456
 
1457
  paramWrapper.find('.input-item').change(function () {
1458
- noteWrapper.find('.archive-action-note').addClass('no-display');
1459
- noteWrapper.find('.archive-action-' + $(this).val()).removeClass('no-display');
1460
  });
1461
  });
1462
  <?php
10
 
11
  $is_wpconfarc_present = file_exists(DUPX_Package::getWpconfigArkPath());
12
  //ARCHIVE FILE
13
+ if ( file_exists($GLOBALS['FW_PACKAGE_PATH']) ) {
14
  $arcCheck = 'Pass';
15
  } else {
16
  if ($is_wpconfarc_present) {
31
 
32
  //REQUIRMENTS
33
  $req = array();
34
+ $req['05'] = $arcCheck;
35
  $req['10'] = DUPX_Server::is_dir_writable($GLOBALS['DUPX_ROOT']) ? 'Pass' : 'Fail';
36
  $req['20'] = function_exists('mysqli_connect') ? 'Pass' : 'Fail';
37
  $req['30'] = DUPX_Server::$php_version_safe ? 'Pass' : 'Fail';
95
  ?>
96
 
97
  <form id="s1-input-form" method="post" class="content-form" autocomplete="off">
98
+ <input type="hidden" name="view" value="step1" />
99
+ <input type="hidden" name="csrf_token" value="<?php echo DUPX_CSRF::generate('step1'); ?>">
100
+ <input type="hidden" name="ctrl_action" value="ctrl-step1" />
101
+ <input type="hidden" name="ctrl_csrf_token" value="<?php echo DUPX_U::esc_attr(DUPX_CSRF::generate('ctrl-step1')); ?>">
102
+ <input type="hidden" name="secure-pass" value="<?php echo DUPX_U::esc_html($_POST['secure-pass']); ?>" />
103
+ <input type="hidden" name="secure-archive" value="<?php echo DUPX_U::esc_html($_POST['secure-archive']); ?>" />
104
+ <input type="hidden" id="s1-input-form-extra-data" name="extra_data" />
105
+
106
+ <div class="hdr-main">
107
+ Step <span class="step">1</span> of 4: Deployment
108
+ <div class="sub-header">This step will extract the archive file contents.</div>
109
+ </div>
110
+
111
+ <!-- ====================================
112
+ SETUP TYPE:
113
+ ==================================== -->
114
+ <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s1-area-setup-type" style="display:none">
115
+ <a id="s1-area-setup-type-link"><i class="fa fa-plus-square"></i>Overview</a>
116
+ </div>
117
+ <div id="s1-area-setup-type" style="display:none">
118
+
119
+ <!-- STANDARD INSTALL -->
120
+ <input type="radio" id="setup-type-fresh" name="setup_type" value="1" checked="true" onclick="DUPX.toggleSetupType()" />
121
+ <label for="setup-type-fresh"><b>Standard Install</b></label>
122
+ <i class="fas fa-question-circle fa-sm"
123
+ data-tooltip-title="Standard Install"
124
+ data-tooltip="A standard install is the default way Duplicator has always worked. Setup your package in an empty directory and run the installer."></i>
125
+ <br/>
126
+ <div class="s1-setup-type-sub" id="s1-setup-type-sub-1">
127
+ <input type="checkbox" name="setup-backup-files" id="setup-backup-files-fresh" />
128
+ <label for="setup-backup-files-fresh">Backup Existing Files</label><br/>
129
+ <input type="checkbox" name="setup-remove-files" id="setup-remove-files-fresh" />
130
+ <label for="setup-remove-files-fresh">Remove Existing Files</label><br/>
131
+ </div><br/>
132
 
133
+ <!-- OVERWRITE INSTALL -->
134
+ <input type="radio" id="setup-type-overwrite" name="setup_type" value="2" onclick="DUPX.toggleSetupType()" />
135
+ <label for="setup-type-overwrite"><b>Overwrite Install</b></label>
136
+ <i class="fas fa-question-circle fa-sm"
137
+ data-tooltip-title="Overwrite Install"
138
+ data-tooltip="An Overwrite Install allows Duplicator to overwrite an existing WordPress Site."></i><br/>
139
+ <div class="s1-setup-type-sub" id="s1-setup-type-sub-2">
140
+ <input type="checkbox" name="setup-backup-files" id="setup-backup-files-overwrite" />
141
+ <label for="setup-backup-files-overwrite">Backup Existing Files</label><br/>
142
+ <input type="checkbox" name="setup-remove-files" id="setup-remove-files-overwrite" />
143
+ <label for="setup-remove-files-overwrite">Remove Existing Files</label><br/>
144
+ <input type="checkbox" name="setup-backup-database" id="setup-backup-database-overwrite" />
145
+ <label for="setup-backup-database-overwrite">Backup Existing Database</label> <br/>
146
  </div><br/>
147
 
148
+ <!-- DB-ONLY INSTALL -->
149
+ <input type="radio" id="setup-type-db" name="setup_type" value="3" onclick="DUPX.toggleSetupType()" />
150
+ <label for="setup-type-db"><b>Database Only Install</b></label>
151
+ <i class="fas fa-question-circle fa-sm"
152
+ data-tooltip-title="Database Only"
153
+ data-tooltip="A database only install allows Duplicator to connect to a database and install only the database."></i><br/>
154
+ <div class="s1-setup-type-sub" id="s1-setup-type-sub-3">
155
+ <input type="checkbox" name="setup-backup-database" id="setup-backup-database-db" />
156
+ <label for="setup-backup-database-db">Backup Existing Database</label> <br/>
157
+ </div><br/>
158
+ </div>
159
+
160
+
161
+ <!-- ====================================
162
+ ARCHIVE
163
+ ==================================== -->
164
+ <div class="hdr-sub1 toggle-hdr" 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
+ </div>
167
+ <div id="s1-area-archive-file" style="display:none" class="hdr-sub1-area">
168
+ <div id="tabs">
169
+ <ul>
170
+ <li><a href="#tabs-1">Package Details</a></li>
171
+ </ul>
172
+ <div id="tabs-1">
173
+
174
+ <table class="s1-archive-local">
175
+ <tr>
176
+ <td colspan="2"><div class="hdr-sub3">Site Details</div></td>
177
+ </tr>
178
+ <tr>
179
+ <td>Site:</td>
180
+ <td><?php echo DUPX_U::esc_html($GLOBALS['DUPX_AC']->blogname); ?> </td>
181
+ </tr>
182
+ <tr>
183
+ <td>Url:</td>
184
+ <td><?php echo DUPX_U::esc_html($GLOBALS['DUPX_AC']->url_old); ?> </td>
185
+ </tr>
186
+ <tr>
187
+ <td>Notes:</td>
188
+ <td><?php echo strlen($GLOBALS['DUPX_AC']->package_notes) ? DUPX_U::esc_html($GLOBALS['DUPX_AC']->package_notes) : " - no notes - "; ?></td>
189
+ </tr>
190
+ <?php if ($GLOBALS['DUPX_AC']->exportOnlyDB) : ?>
191
+ <tr>
192
+ <td>Mode:</td>
193
+ <td>Archive only database was enabled during package package creation.</td>
194
+ </tr>
195
+ <?php endif; ?>
196
+ </table>
197
 
198
+ <table class="s1-archive-local">
199
+ <tr>
200
+ <td colspan="2"><div class="hdr-sub3">Archive Details</div></td>
201
+ </tr>
202
+ <tr>
203
+ <td style="vertical-align:top">Status:</td>
204
+ <td>
205
+ <?php if ($req['05'] == 'Fail' || $req['05'] == 'Warn') : ?>
206
+ <span class="dupx-fail" style="font-style:italic">
207
+ Archive validation issue detected. <br/>
208
+ <small>Please see validation section below for full details.</small>
209
+ </span>
210
+ <?php else : ?>
211
+ <span class="dupx-pass">Archive file successfully detected.</span>
212
+ <?php endif; ?>
213
+ </td>
214
+ </tr>
215
+ <tr>
216
+ <td>Path:</td>
217
+ <td><?php echo DUPX_U::esc_html($root_path); ?> </td>
218
+ </tr>
219
+ <tr>
220
+ <td>Size:</td>
221
+ <td><?php echo DUPX_U::readableByteSize($arcSize); ?> </td>
222
+ </tr>
223
+ </table>
224
+ </div>
225
+ <!--div id="tabs-2"><p>Content Here</p></div-->
226
+ </div>
227
+ </div><br/>
228
+
229
+
230
+ <!-- ====================================
231
+ OPTIONS
232
+ ==================================== -->
233
+ <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s1-area-adv-opts">
234
+ <a href="javascript:void(0)"><i class="fa fa-plus-square"></i>Options</a>
235
+ </div>
236
+ <div id="s1-area-adv-opts" class="hdr-sub1-area" style="display:none">
237
+ <div class="help-target">
238
+ <?php DUPX_View_Funcs::helpIconLink('step1'); ?>
239
  </div>
240
 
241
+ <div id="tabs-opts">
242
+ <ul>
243
+ <li><a href="#tabs-opts-1">General</a></li>
244
+ <li><a href="#tabs-opts-2">Advanced</a></li>
245
+ </ul>
246
+ <div id="tabs-opts-1">
247
+
248
+ <div class="hdr-sub3">Extraction Settings</div>
249
+ <table class="dupx-opts dupx-advopts">
250
+ <tr>
251
+ <td>Extraction:</td>
252
+ <td>
253
+ <?php
254
+ $options = array();
255
+ $extra_attr = ($arcCheck == 'Warn' && $is_wpconfarc_present) ? ' selected="selected"' : '';
256
+ $options[] = '<option '.($is_wpconfarc_present ? '' : 'disabled').$extra_attr.' value="manual">Manual Archive Extraction '.($is_wpconfarc_present ? '' : '*').'</option>';
257
+ if ($archive_config->isZipArchive()) {
258
+ //ZIP-ARCHIVE
259
+ $extra_attr = ('Pass' == $arcCheck && $zip_archive_enabled && !$shell_exec_zip_enabled) ? ' selected="selected"' : '';
260
+ $extra_attr .= ('Pass' != $arcCheck || !$zip_archive_enabled) ? ' disabled="disabled"' : '';
261
+ $options[] = '<option value="ziparchive"'.$extra_attr.'>PHP ZipArchive</option>';
262
+
263
+ //SHELL-EXEC UNZIP
264
+ $extra_attr = ('Pass' != $arcCheck || !$shell_exec_zip_enabled) ? ' disabled="disabled"' : '';
265
+ $extra_attr .= ('Pass' == $arcCheck && $shell_exec_zip_enabled) ? ' selected="selected"' : '';
266
+ $options[] = '<option value="shellexec_unzip"'.$extra_attr.'>Shell Exec Unzip</option>';
267
+ } else { // DUPARCHIVE
268
+ $extra_attr = ('Pass' == $arcCheck) ? ' selected="selected"' : 'disabled="disabled"';
269
+ $options[] = '<option value="duparchive"'.$extra_attr.'>DupArchive</option>';
270
+ }
271
+ $num_selections = count($options);
272
+ ?>
273
+ <select id="archive_engine" name="archive_engine" size="<?php echo DUPX_U::esc_attr($num_selections); ?>">
274
+ <?php echo implode('', $options); ?>
275
+ </select><br/>
276
+ <?php if (!$is_wpconfarc_present): ?>
277
+ <span class="sub-notes">
278
+ *Option enabled when archive has been pre-extracted
279
+ <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-015-q" target="_blank">[more info]</a>
280
+ </span>
281
+ <?php endif; ?>
282
+ </td>
283
+ </tr>
284
+ <tr>
285
+ <td style="vertical-align: top;padding-top: 10px;">Archive Action:</td>
286
+ <td id="archive_action_wrapper">
287
+ <select id="archive_action_input" name="<?php echo DUP_LITE_Extraction::INPUT_NAME_ARCHIVE_ACTION; ?>" class="input-item">
288
+ <option value="<?php echo DUP_LITE_Extraction::ACTION_DO_NOTHING; ?>" selected="selected">
289
+ Extract files over current files
290
+ </option>
291
+ <option value="<?php echo DUP_LITE_Extraction::ACTION_REMOVE_WP_FILES; ?>">
292
+ Remove WP core and content and extract
293
+ </option>
294
+ <option value="<?php echo DUP_LITE_Extraction::ACTION_REMOVE_ALL_FILES; ?>">
295
+ Remove all files and extract
296
+ </option>
297
+ </select>
298
+ <div class="sub-note" style="margin-top:5px; max-width:98%; font-size:10px">
299
+ <div class="archive-action-note archive-action-<?php echo DUP_LITE_Extraction::ACTION_DO_NOTHING; ?>">
300
+ Note: <b>Files are extracted over existing files.</b> After install, the destination folder will contain a combination of the old
301
+ site files and the files extracted from the archive. This option is the most conservative option for those who want to make sure
302
+ they do not want to lose data.
303
+ </div>
304
+ <div class="archive-action-note archive-action-<?php echo DUP_LITE_Extraction::ACTION_REMOVE_ALL_FILES; ?> no-display">
305
+ Note: Before extracting the package files, <b>all files and folders in the installation folder will be removed</b> except for folders
306
+ that contain WordPress installations or Duplicator backup folders. This option is recommended for those who want to delete all files
307
+ related to old installations or external applications.
308
+ </div>
309
+ <div class="archive-action-note archive-action-<?php echo DUP_LITE_Extraction::ACTION_REMOVE_WP_FILES; ?> no-display">
310
+ Note: Before extracting the package files, <b>all current WordPress core and content files and folders will be removed</b>
311
+ (wp-include, wp-content ... ) This option is for those who want to avoid having old site media mixed with new but have other
312
+ files/folders in the home path that they don't want to delete.
313
+ </div>
314
+ </div>
315
+ </td>
316
+ </tr>
317
+ </table><br/><br/>
318
 
 
 
 
 
 
 
 
 
 
 
319
  </div>
320
+ <!-- ================
321
+ TAB 2 -->
322
+ <div id="tabs-opts-2">
 
 
 
 
323
 
324
+ <div class="hdr-sub3">File Settings</div>
325
+ <table class="dupx-opts dupx-advopts">
326
+ <tr>
327
+ <td valign="top">Config Files:</td>
328
+ <td>
329
+ <select name="config_mode" id="config_mode" onchange="DUPX.toggleConfigMode(this)">
330
+ <option value="NEW" data-title="Details: Ceates new config files streamlined to ensure no conflicts are created.">Create New (recommended)</option>
331
+ <optgroup label="Advanced">
332
+ <option value="RESTORE" data-title="Details: Retains old config files from the server where the package was created.">Restore Original from Archive.zip/daf</option>
333
+ <option value="IGNORE" data-title="Details: This option does not create or import any config files.">Ignore All</option>
334
+ </optgroup>
335
+ </select> <br/>
336
+ <span class="config-files-helper">
337
+ This option creates new streamlined config files to help ensure no conflicts are created. It also controls how
338
+ the htaccess, user.ini and web.config are applied in step 3 of this installer.
339
+ <?php DUPX_View_Funcs::helpLink('step1', '[more info]'); ?>
340
+ </span>
341
+
342
+ </td>
343
+ </tr>
344
+ <tr>
345
+ <td>Permissions:</td>
346
+ <td>
347
+ <input type="checkbox" name="set_file_perms" id="set_file_perms" value="1" onclick="jQuery('#file_perms_value').prop('disabled', !jQuery(this).is(':checked'));"/>
348
+ <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> &nbsp;
349
+ <input type="checkbox" name="set_dir_perms" id="set_dir_perms" value="1" onclick="jQuery('#dir_perms_value').prop('disabled', !jQuery(this).is(':checked'));"/>
350
+ <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>
351
+ </td>
352
+ </tr>
353
+ <tr>
354
+ <td>File Times:</td>
355
+ <td>
356
+ <input type="radio" name="zip_filetime" id="zip_filetime_now" value="current" checked="checked" />
357
+ <label class="radio" for="zip_filetime_now" title='Set the files current date time to now'>Current</label> &nbsp;
358
+ <input type="radio" name="zip_filetime" id="zip_filetime_orginal" value="original" />
359
+ <label class="radio" for="zip_filetime_orginal" title="Keep the files date time the same">Original</label>
360
+ </td>
361
+ </tr>
362
+ </table><br/>
363
+
364
+
365
+ <div class="hdr-sub3">Utilities</div>
366
+ <table class="dupx-opts dupx-advopts">
367
+ <tr>
368
+ <td>Safe Mode:</td>
369
+ <td>
370
+ <select name="exe_safe_mode" id="exe_safe_mode" onchange="DUPX.onSafeModeSwitch();">
371
+ <option value="0">Off</option>
372
+ <option value="1">Basic</option>
373
+ <option value="2">Advanced</option>
374
+ </select>
375
+ </td>
376
+ </tr>
377
+ <?php if (!$archive_config->isZipArchive()): ?>
378
  <tr>
379
+ <td>Client-Kickoff:</td>
380
  <td>
381
+ <input type="checkbox" name="clientside_kickoff" id="clientside_kickoff" value="1" checked/>
382
+ <label for="clientside_kickoff" style="font-weight: normal">Browser drives the archive engine.</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
383
  </td>
384
  </tr>
385
+ <?php endif; ?>
386
+ <tr>
387
+ <td>Testing:</td>
388
+ <td>
389
+ <a href="javascript:void(0)" target="db-test" onclick="DUPX.openDBValidationWindow(); return false;">[Perform Quick Database Connection Test]</a>
390
+ </td>
391
+ </tr>
392
+ <tr>
393
+ <td>Logging:</td>
394
+ <td>
395
+ <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> &nbsp;
396
+ <input type="radio" name="logging" id="logging-detailed" value="<?php echo DUPX_Log::LV_DETAILED; ?>"> <label for="logging-detailed" class="radio">Detailed</label> &nbsp;
397
+ <input type="radio" name="logging" id="logging-debug" value="<?php echo DUPX_Log::LV_DEBUG; ?>"> <label for="logging-debug" class="radio">Debug</label> &nbsp;
398
+ <input type="radio" name="logging" id="logging-h-debug" value="<?php echo DUPX_Log::LV_HARD_DEBUG; ?>"> <label for="logging-h-debug" class="radio">Verbose Debug</label>
399
+ </td>
400
+ </tr>
401
+ </table>
402
  </div>
403
+ </div>
404
+ </div><br/>
405
 
406
 
407
+ <!-- ====================================
408
+ VALIDATION
409
+ ==================================== -->
410
+ <div class="hdr-sub1 toggle-hdr s1-hdr-sys-setup-hdr" data-type="toggle" data-target="#s1-area-sys-setup">
411
+ <a id="s1-area-sys-setup-link"><i class="fa fa-plus-square"></i>Validation</a>
412
+ <div class="<?php echo ( $req_success) ? 'status-badge-pass' : 'status-badge-fail'; ?> ">
413
+ <?php echo ( $req_success) ? 'Pass' : 'Fail'; ?>
414
  </div>
415
+ </div>
416
+ <div id="s1-area-sys-setup" style="display:none" class="hdr-sub1-area">
417
+ <div class='info-top'>The system validation checks help to make sure the system is ready for install.</div>
418
+
419
+ <!-- REQUIREMENTS -->
420
+ <div class="s1-reqs" id="s1-reqs-all">
421
+ <div class="header">
422
+ <table class="s1-checks-area">
423
+ <tr>
424
+ <td class="title">Requirements <small>(must pass)</small></td>
425
+ <td class="toggle"><a href="javascript:void(0)" onclick="DUPX.toggleAllReqs('#s1-reqs-all')">[toggle]</a></td>
426
+ </tr>
427
+ </table>
428
  </div>
429
+
430
+ <!-- REQ 05 -->
431
+ <?php
432
+ $status = strtolower($req['05']);
433
+ ?>
434
+ <div class="status <?php echo DUPX_U::esc_attr($status); ?>"><?php echo DUPX_U::esc_html($req['05']); ?></div>
435
+ <div class="title" data-status="<?php echo DUPX_U::esc_attr($status); ?>" data-type="toggle auto" data-target="#s1-reqs05">
436
+ <i class="fa fa-caret-right"></i> Archive Check
437
+ </div>
438
+ <div class="info" id="s1-reqs05">
439
+ <table class="s1-archive-local">
440
+ <tr>
441
+ <td colspan="2"><div class="hdr-sub3">Archive Details</div></td>
442
+ </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
443
  <tr>
444
+ <td style="vertical-align:top">Status:</td>
445
  <td>
446
+ <span class="dupx-fail">
447
+ <?php if ($arcCheck == 'Fail' || $arcCheck == 'Warn') : ?>
448
+ An archive/installer mismatch has been detected. Each archive file has a unique installer file associated with it for security reasons.
449
+ Be sure to download the installer.php and archive.zip/daf files from the same package line in the Duplicator Packages screen
450
+ located in the WordPress admin. The correct installer can also be found inside of the archive.zip/daf file named "installer-backup.php".
451
+ <br/><br/>
452
+ <?php if ($arcCheck == 'Warn') : ?>
453
+ Users can still proceed with the install by choosing Manual Archive Extraction to ignore this message, but must manually
454
+ extract the archive themselves.
455
+ <?php else : ?>
456
+ If the contents of the archive were manually transferred to this location without the archive.zip/daf file (e.g. FTP). Then
457
+ simply create a temp archive.zip/daf file named with the correct archive name. To get the original archive name go to WordPress
458
+ Admin ❯ Duplicator ❯ Package Line ❯ Details ❯ Archive Name and place the file in the same directory as the installer.php file.
459
+ The temp file will not need to contain any data. Afterward, refresh this page and continue with the install process.
460
+ <?php endif; ?>
461
+ </span>
462
+ <?php else : ?>
463
+ <span class="dupx-pass">Archive file successfully detected.</span>
464
+ <?php endif; ?>
465
  </td>
466
  </tr>
467
+ <tr>
468
+ <td>Path:</td>
469
+ <td><?php echo DUPX_U::esc_html($root_path); ?> </td>
470
+ </tr>
471
+ <tr>
472
+ <td>Size:</td>
473
+ <td><?php echo DUPX_U::readableByteSize($arcSize); ?> </td>
474
+ </tr>
475
+ </table>
476
+ </div>
477
 
478
+ <!-- REQ 10 -->
479
+ <?php
480
+ $status = strtolower($req['10']);
481
+ ?>
482
+ <div class="status <?php echo DUPX_U::esc_attr($status); ?>"><?php echo DUPX_U::esc_html($req['10']); ?></div>
483
+ <div class="title" data-status="<?php echo DUPX_U::esc_attr($status); ?>" data-type="toggle auto" data-target="#s1-reqs10">
484
+ <i class="fa fa-caret-right"></i> Permissions
485
  </div>
486
+ <div class="info" id="s1-reqs10">
487
+ <table>
488
+ <tr>
489
+ <td><b>Deployment Path:</b> </td>
490
+ <td><i><?php echo "{$GLOBALS['DUPX_ROOT']}"; ?></i> </td>
491
+ </tr>
492
+ <tr>
493
+ <td><b>Suhosin Extension:</b> </td>
494
+ <td><?php echo extension_loaded('suhosin') ? "<i class='dupx-fail'>Enabled</i>" : "<i class='dupx-pass'>Disabled</i>"; ?> </td>
495
+ </tr>
496
+ <tr>
497
+ <td><b>PHP Safe Mode:</b> </td>
498
+ <td><?php echo (DUPX_Server::$php_safe_mode_on) ? "<i class='dupx-fail'>Enabled</i>" : "<i class='dupx-pass'>Disabled</i>"; ?> </td>
499
+ </tr>
500
+ </table><br/>
501
 
502
+ The deployment path must be writable by PHP in order to extract the archive file. Incorrect permissions and extension such as
503
+ <a href="https://suhosin.org/stories/index.html" target="_blank">suhosin</a> can sometimes interfere with PHP being able to write/extract files.
504
+ Please see the <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-trouble-055-q" target="_blank">FAQ permission</a> help link for complete details.
505
+ PHP with <a href='http://php.net/manual/en/features.safe-mode.php' target='_blank'>safe mode</a> should be disabled. If Safe Mode is enabled then
506
+ please contact your hosting provider or server administrator to disable PHP safe mode.
507
+ </div>
 
 
 
 
508
 
509
+ <!-- REQ 20 -->
510
+ <div class="status <?php echo strtolower($req['20']); ?>"><?php echo DUPX_U::esc_html($req['20']); ?></div>
511
+ <div class="title" data-status="<?php echo strtolower($req['20']); ?>" data-type="toggle auto" data-target="#s1-reqs20"><i class="fa fa-caret-right"></i> PHP Mysqli</div>
512
+ <div class="info" id="s1-reqs20">
513
+ Support for the PHP <a href='http://us2.php.net/manual/en/mysqli.installation.php' target='_blank'>mysqli extension</a> is required.
514
+ Please contact your hosting provider or server administrator to enable the mysqli extension. <i>The detection for this call uses
515
+ the function_exists('mysqli_connect') call.</i>
516
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
517
 
518
+ <!-- REQ 30 -->
519
+ <div class="status <?php echo strtolower($req['30']); ?>"><?php echo DUPX_U::esc_html($req['30']); ?></div>
520
+ <div class="title" data-status="<?php echo strtolower($req['30']); ?>" data-type="toggle auto" data-target="#s1-reqs30"><i class="fa fa-caret-right"></i> PHP Version</div>
521
+ <div class="info" id="s1-reqs30">
522
+ This server is running: <b>PHP <?php echo DUPX_Server::$php_version ?></b>. <i>A minimum of PHP 5.3.8+ is required. PHP 7.0+ is recommended.</i>
523
+ <br/><br/>
524
 
525
+ If this requirement fails contact your host or server administrator and let them know you would like to upgrade your PHP version.
526
+ For more information on this topic see the FAQ titled <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-licensing-017-q" target="_blank">What version of PHP Does Duplicator Support?</a>
527
+ </div>
 
 
 
 
 
528
 
529
+ <!-- REQ 40 -->
530
+ <div class="status <?php echo strtolower($req['40']); ?>"><?php echo DUPX_U::esc_html($req['40']); ?></div>
531
+ <div class="title" data-status="<?php echo strtolower($req['40']); ?>" data-type="toggle auto" data-target="#s1-reqs40">
532
+ <i class="fa fa-caret-right"></i> Managed Hosts
533
+ </div>
534
+ <div class="info" id="s1-reqs40">
535
+ <p>
536
+ <?php if ($managed_host !== false): ?>
537
+ The installer has detected that this server is possibly in a managed hosting setup. The followings checks
538
+ have been made which will not allow the installer to continue.
539
+ <?php else: ?>
540
+ Current host is not managed.
541
+ <?php endif; ?>
542
+ </p>
543
+ <ul>
544
+ <li>
545
+ <b>Managed system: </b> <?php echo is_string($managed_host)
546
+ ? '<span class="maroon">It appears the installer is being executed on "' . $mh_manager->getHosting($managed_host)->getLabel() . '". Managed hosting is not presently supported in Duplicator Lite.</span>'
547
+ : "<span class='green'>No restrictions have been found for this host.</span>" ?>
548
+ </li>
549
+ <li>
550
+ <b>Configuration file: </b><?php echo $mh_manager->wpConfigIsNotWriteable()
551
+ ? "<span class='maroon'>The WordPress configuration file (wp-config.php) must be accessible and writeable to the installer</span>"
552
+ : "<span class='green'>The wp-config.php is accessible to the installer.</span>" ?>
553
+ </li>
554
+ <li>
555
+ <b>Core Directories: </b><?php echo $mh_manager->notAccessibleCoreDirPresent() > 0
556
+ ? "<span class='maroon'>The WordPress core directories wp-admin, wp-content and wp-includes must be accessible and writeable to the installer</span>"
557
+ : "<span class='green'>The WordPress core directories are accessible to the installer</span>"; ?>
558
+ </li>
559
+ </ul>
560
+ </div>
561
+ </div><br/>
562
 
563
+ <!-- ====================================
564
+ NOTICES -->
565
+ <div class="s1-reqs" id="s1-notice-all">
566
+ <div class="header">
567
+ <table class="s1-checks-area">
568
+ <tr>
569
+ <td class="title">Notices <small>(optional)</small></td>
570
+ <td class="toggle"><a href="javascript:void(0)" onclick="DUPX.toggleAllNotices('#s1-notice-all')">[toggle]</a></td>
571
+ </tr>
572
+ </table>
573
+ </div>
574
 
575
+ <!-- NOTICE 10: OVERWRITE INSTALL -->
576
+ <?php if ($is_overwrite_mode && $is_wordpress) : ?>
577
+ <div class="status fail">Warn</div>
578
+ <div class="title" data-status="warn" data-type="toggle auto" data-target="#s1-notice10"><i class="fa fa-caret-right"></i> Overwrite Install</div>
579
+ <div class="info" id="s1-notice10">
580
+ <?php if ($GLOBALS['DUPX_AC']->installSiteOverwriteOn || $is_dbonly) { ?>
581
+ <div class="gray-panel warn-text gray-panel-overwrite">
582
+ <i class="fas fa-exclamation-triangle fa-lg"></i> WARNING: The Duplicator installer file is currently placed in a location that has an existing WordPress site!
583
+ Continuing with this install process will <u>overwrite</u> all existing files and the database associated with this WordPress site. Only continue
584
+ with this process if this site is no longer needed.<br/>
585
+ </div>
586
+ <?php } ?>
587
+ <p style="font-size:14px">
588
+ <b><i class="fas fa-folder-open"></i> Deployment Path:</b> <i><?php echo "{$GLOBALS['DUPX_ROOT']}"; ?></i>
589
  </p>
590
+ <?php if ($GLOBALS['DUPX_AC']->installSiteOverwriteOn || $is_dbonly) { ?>
591
+ <p>
592
+ Duplicator is in "Overwrite Install " mode because it has detected an existing WordPress site at the deployment path above. This mode allows for the installer
593
+ to be dropped directly into an existing WordPress site and overwrite its contents. Any content inside of the archive file
594
+ will <u>overwrite</u> the existing contents in the deployment path above. To continue choose one of these options:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
595
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
596
 
597
  <ol>
598
+ <li>Ignore this notice and continue with the install to overwrite this WordPress site.</li>
599
+ <li>Move the installer and archive to an <u>empty directory</u>. Then install from there to keep this site intact.</li>
600
  </ol>
601
 
602
+ <p style="color:maroon">
603
+ <b>Notice:</b> Existing content such as plugin/themes/images will still show-up after the install is complete if they did not already exist in
604
+ the archive file. For example, if plugin X is in the current site but that same plugin X <u>does not exist</u> in the archive file
605
+ then that plugin will display as a disabled plugin after the install is completed. The same concept with themes, images and files apply.
606
+ This will not impact the site's operation, and the behavior is expected since the install process only extracts the archive files to the deployment
607
+ path.
608
+ </p>
 
 
 
 
 
 
609
 
610
+ <p>
611
+ <b>Recommendation:</b> It is recommended you only overwrite WordPress sites that have no value, such as a temporary staging site. On step 2
612
+ of this installer you will be given the option to change the database if needed. However, by default the current sites database will be
613
+ replaced with the one in this Duplicator package.
614
+ </p>
615
+ <?php
616
+ } else {
617
+ ?>
618
+ <p>
619
+ Duplicator works best by placing the installer and archive files into an empty directory. If a wp-config.php file is found in the extraction
620
+ directory it might indicate that a pre-existing WordPress site exists which can lead to a bad install.
621
+ </p>
622
+ <b>Options:</b>
623
+ <ul style="margin-bottom: 0">
624
+ <li>If the archive was already manually extracted then <a href="javascript:void(0)" onclick="DUPX.getManaualArchiveOpt()">[Enable Manual Archive Extraction]</a></li>
625
+ <li>Empty the directory of all files, except for the installer.php and archive.zip/daf files.</li>
626
+ <li>Advanced Users: Can attempt to manually remove the wp-config file only if the archive was manually extracted.</li>
627
+ </ul>
628
+ <?php
629
+ }
630
+ ?>
631
+ </div>
632
 
633
+ <!-- NOTICE 20: ARCHIVE EXTRACTED -->
634
+ <?php elseif ($is_wpconfarc_present && file_exists("{$root_path}/dup-installer")) : ?>
635
+ <div class="status fail">Warn</div>
636
+ <div class="title" data-type="toggle" data-target="#s1-notice20"><i class="fa fa-caret-right"></i> Archive Extracted</div>
637
+ <div class="info" id="s1-notice20">
638
+ <b>Deployment Path:</b> <i><?php echo "{$GLOBALS['DUPX_ROOT']}"; ?></i>
639
+ <br/><br/>
640
 
641
+ The installer has detected that the archive file has been extracted to the deployment path above. To continue choose one of these options:
 
642
 
643
+ <ol>
644
+ <li>Skip the extraction process by <a href="javascript:void(0)" onclick="DUPX.getManaualArchiveOpt()">[enabling manual archive extraction]</a> </li>
645
+ <li>Ignore this message and continue with the install process to re-extract the archive file.</li>
646
+ </ol>
647
 
648
+ <small>Note: This test looks for a file named <i>dup-wp-config-arc__[HASH].txt</i> in the dup-installer directory. If the file exists then this notice is shown.
649
+ The <i>dup-wp-config-arc__[HASH].txt</i> file is created with every archive and removed once the install is complete. For more details on this process see the
650
+ <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-015-q" target="_blank">manual extraction FAQ</a>.</small>
 
 
 
651
  </div>
652
+ <?php endif; ?>
653
+
654
+ <!-- NOTICE 25: DATABASE ONLY -->
655
+ <?php if ($is_dbonly && !$is_wordpress) : ?>
656
+ <div class="status fail">Warn</div>
657
+ <div class="title" data-type="toggle" data-target="#s1-notice25"><i class="fa fa-caret-right"></i> Database Only</div>
658
+ <div class="info" id="s1-notice25">
659
+ <b>Deployment Path:</b> <i><?php echo "{$GLOBALS['DUPX_ROOT']}"; ?></i>
660
+ <br/><br/>
661
 
662
+ The installer has detected that a WordPress site does not exist at the deployment path above. This installer is currently in 'Database Only' mode because that is
663
+ how the archive was created. If core WordPress site files do not exist at the path above then they will need to be placed there in order for a WordPress site
664
+ to properly work. To continue choose one of these options:
665
 
666
+ <ol>
667
+ <li>Place this installer and archive at a path where core WordPress files already exist to hide this message. </li>
668
+ <li>Create a new package that includes both the database and the core WordPress files.</li>
669
+ <li>Ignore this message and install only the database (for advanced users only).</li>
670
+ </ol>
671
 
672
+ <small>Note: This test simply looks for the directories <?php echo DUPX_Server::$wpCoreDirsList; ?> and a wp-config.php file. If they are not found in the
673
+ deployment path above then this notice is shown.</small>
674
 
 
 
 
 
 
 
 
 
 
 
 
675
  </div>
676
+ <?php endif; ?>
677
+
678
+ <!-- NOTICE 30 -->
679
+ <div class="status <?php echo ($notice['30'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['30']); ?></div>
680
+ <div class="title" data-type="toggle" data-target="#s1-notice30"><i class="fa fa-caret-right"></i> Package Age</div>
681
+ <div class="info" id="s1-notice30">
682
+ This package is <?php echo "{$fulldays}"; ?> day(s) old. Packages older than 180 days might be considered stale. It is recommended to build a new
683
+ package unless your aware of the content and its data. This is message is simply a recommendation.
684
+ </div>
685
 
 
 
 
 
 
 
686
 
687
+ <!-- NOTICE 40:
688
+ Legacy PHP 5.2 Version check (Removed) -->
 
 
 
 
 
 
 
 
 
 
689
 
 
 
 
 
 
 
 
 
690
 
691
+ <!-- NOTICE 45 -->
692
+ <div class="status <?php echo ($notice['45'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo $notice['45']; ?></div>
693
+ <div class="title" data-type="toggle" data-target="#s1-notice45"><i class="fa fa-caret-right"></i> PHP Version Mismatch</div>
694
+ <div class="info" id="s1-notice45">
695
+ <?php
696
+ $cssStyle = $notice['45'] == 'Good' ? 'color:green' : 'color:red';
697
+ echo "<b style='{$cssStyle}'>You are migrating site from the PHP {$packagePHP} to the PHP {$currentPHP}</b>.<br/>"
698
+ ."If this servers PHP version is different from the PHP version of where the package was created it might cause problems with various parts of your website
699
+ and/or plugins and themes. It is highly recommended to try and use the same version of PHP if you are able to do so. This is simply a warning
700
+ and in the event no problems arise then you can igonre this message.<br/>";
701
+ ?>
702
+ </div>
703
 
704
+ <!-- NOTICE 50 -->
705
+ <div class="status <?php echo ($notice['50'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['50']); ?></div>
706
+ <div class="title" data-type="toggle" data-target="#s1-notice50"><i class="fa fa-caret-right"></i> PHP Open Base</div>
707
+ <div class="info" id="s1-notice50">
708
+ <b>Open BaseDir:</b> <i><?php echo $notice['50'] == 'Good' ? "<i class='dupx-pass'>Disabled</i>" : "<i class='dupx-fail'>Enabled</i>"; ?></i>
709
+ <br/><br/>
710
+
711
+ If <a href="http://php.net/manual/en/ini.core.php#ini.open-basedir" target="_blank">open_basedir</a> is enabled and your
712
+ having issues getting your site to install properly; please work with your host and follow these steps to prevent issues:
713
+ <ol style="margin:7px; line-height:19px">
714
+ <li>Disable the open_basedir setting in the php.ini file</li>
715
+ <li>If the host will not disable, then add the path below to the open_basedir setting in the php.ini<br/>
716
+ <i style="color:maroon">"<?php echo str_replace('\\', '/', dirname(__FILE__)); ?>"</i>
717
+ </li>
718
+ <li>Save the settings and restart the web server</li>
719
+ </ol>
720
+ Note: This warning will still show if you choose option #2 and open_basedir is enabled, but should allow the installer to run properly. Please work with your
721
+ hosting provider or server administrator to set this up correctly.
722
+ </div>
723
 
724
+ <!-- NOTICE 60 -->
725
+ <div class="status <?php echo ($notice['60'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['60']); ?></div>
726
+ <div class="title" data-type="toggle" data-target="#s1-notice60"><i class="fa fa-caret-right"></i> PHP Timeout</div>
727
+ <div class="info" id="s1-notice60">
728
+ <b>Archive Size:</b> <?php echo DUPX_U::readableByteSize($arcSize) ?> <small>(detection limit is set at <?php echo DUPX_U::readableByteSize($max_time_size) ?>) </small><br/>
729
+ <b>PHP max_execution_time:</b> <?php echo "{$max_time_ini}"; ?> <small>(zero means not limit)</small> <br/>
730
+ <b>PHP set_time_limit:</b> <?php echo ($max_time_zero) ? '<i style="color:green">Success</i>' : '<i style="color:maroon">Failed</i>' ?>
731
+ <br/><br/>
732
+
733
+ The PHP <a href="http://php.net/manual/en/info.configuration.php#ini.max-execution-time" target="_blank">max_execution_time</a> setting is used to
734
+ determine how long a PHP process is allowed to run. If the setting is too small and the archive file size is too large then PHP may not have enough
735
+ time to finish running before the process is killed causing a timeout.
736
+ <br/><br/>
737
+
738
+ Duplicator attempts to turn off the timeout by using the
739
+ <a href="http://php.net/manual/en/function.set-time-limit.php" target="_blank">set_time_limit</a> setting. If this notice shows as a warning then it is
740
+ still safe to continue with the install. However, if a timeout occurs then you will need to consider working with the max_execution_time setting or extracting the
741
+ archive file using the 'Manual Archive Extraction' method.
742
+ Please see the <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-trouble-100-q" target="_blank">FAQ timeout</a> help link for more details.
743
+ </div>
744
 
 
 
 
 
 
 
745
 
746
+ <!-- NOTICE 8 -->
747
+ <div class="status <?php echo ($notice['70'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['70']); ?></div>
748
+ <div class="title" data-type="toggle" data-target="#s1-notice70"><i class="fa fa-caret-right"></i> WordPress Multisite</div>
749
+ <div class="info" id="s1-notice70">
750
+ <b>Status:</b> <?php echo $notice['70'] == 'Good' ? 'This archive is not a Multisite' : 'This is an unsupported Multisite archive'; ?>
751
+ <br/><br/>
752
 
753
+ Duplicator does not support WordPress Multisite (MU) migrations. We recommend using Duplicator Pro which currently supports full Multisite migrations and
754
+ subsite to standalone site migrations.
755
+ <br/><br/>
756
+ While it is not recommended you can still continue with the build of this package. Please note that after the install the site may not be working correctly.
757
+ Additional manual custom configurations will need to be made to finalize this Multisite migration.
758
 
759
+ <i><a href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_is_mu_warn_exe&utm_campaign=duplicator_pro' target='_blank'>[upgrade to pro]</a></i>
760
+ </div>
 
 
 
 
 
 
 
761
 
762
+ <!-- NOTICE 80 -->
763
+ <div class="status <?php echo ($notice['80'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['80']); ?></div>
764
+ <div class="title" data-type="toggle" data-target="#s1-notice80"><i class="fa fa-caret-right"></i> WordPress wp-config Location</div>
765
+ <div class="info" id="s1-notice80">
766
+ If the wp-config.php file was moved up one level and out of the WordPress root folder in the package creation site then this test will show a warning.
767
+ <br/><br/>
768
+ This Duplicator installer will place this wp-config.php file in the WordPress setup root folder of this installation site to help stabilize the install process.
769
+ This process will not break anything in your installation site, but the details are here for your information.
770
+ </div>
771
 
772
+ <!-- NOTICE 90 -->
773
+ <div class="status <?php echo ($notice['90'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['90']); ?></div>
774
+ <div class="title" data-type="toggle" data-target="#s1-notice90"><i class="fa fa-caret-right"></i> WordPress wp-content Location</div>
775
+ <div class="info" id="s1-notice90">
776
+ If the wp-content directory was moved and not located at the WordPress root folder in the package creation site then this test will show a warning.
777
+ <br/><br/>
778
+ Duplicator Installer will place this wp-content directory in the WordPress setup root folder of this installation site. It will not break anything in your installation
779
+ site. It is just for your information.
780
+ </div>
781
 
782
+ <!-- NOTICE 100 -->
783
+ <div class="status <?php echo ($notice['100'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['100']); ?></div>
784
+ <div class="title" data-type="toggle" data-target="#s1-notice100"><i class="fa fa-caret-right"></i> Sufficient Disk Space</div>
785
+ <div class="info" id="s1-notice100">
786
+ <?php
787
+ echo ($notice['100'] == 'Good') ? 'You have sufficient disk space in your machine to extract the archive.' : 'You don’t have sufficient disk space in your machine to extract the archive. Ask your host to increase disk space.'
788
+ ?>
789
+ </div>
 
 
 
790
 
791
+ <!-- NOTICE 110 -->
792
+ <div class="status <?php echo ($notice['110'] == 'Good') ? 'pass' : 'fail' ?>"><?php echo DUPX_U::esc_html($notice['110']); ?></div>
793
+ <div class="title" data-type="toggle" data-target="#s1-notice110"><i class="fa fa-caret-right"></i> Wordfence</div>
794
+ <div class="info" id="s1-notice110">
795
+ <b>Wordfence Firewall:</b> <?php echo ($notice['110'] == 'Warn') ? "<span style='color:red;'>detected at {$parentWordFencePath}</span>" : "<span style='color:green;'>not detected</span>"; ?>
796
+ <p>
797
+ The Wordfence Web Application Firewall is a PHP based, application level firewall that filters out malicious
798
+ requests to your site. Sometimes Wordfence returns false positives on requests done during the installation process,
799
+ because of which it might fail. We recommend turning off the Wordfence firewall of the WordPress instance located at the mentioned path.
800
+ </p>
801
  </div>
802
 
803
  </div>
 
804
 
805
+ </div>
806
+ <br/><br/>
807
+
808
+
809
+ <?php if ($req_success && $arcCheck != 'Fail') : ?>
810
+ <div id="s1-warning-check">
811
+ <?php if ($is_overwrite_mode && $is_wordpress) { ?>
812
+ <input id="accept-overwrite" name="accept-overwrite" type="checkbox" onclick="DUPX.acceptWarning()" />
813
+ <label for="accept-overwrite">Continue with site overwrite mode*</label><br/>
814
+ <?php } ?>
815
+ <input id="accept-warnings" name="accpet-warnings" type="checkbox" onclick="DUPX.acceptWarning()" />
816
+ <label for="accept-warnings">I have read and accept all <a href="javascript:void(0)" onclick="DUPX.viewTerms()">terms &amp; notices</a>*<br/>
817
+ <small style="font-style:italic">* required to continue</small>
818
+ </label><br/>
819
+ </div>
820
+ <?php include ('view.s1.terms.php'); ?>
821
+ <br/><br/>
822
+ <br/><br/>
823
+ <?php endif; ?>
824
 
825
+
826
+ <?php if (!$req_success || $arcCheck == 'Fail') : ?>
827
+ <div class="s1-err-msg">
828
+ <i>
829
+ This installation will not be able to proceed until the setup and validation sections above both pass. Please adjust your servers settings or contact your
830
+ server administrator, hosting provider or visit the resources below for additional help.
831
+ </i>
832
+ <div style="padding:10px">
833
+ &raquo; <a href="https://snapcreek.com/duplicator/docs/faqs-tech/" target="_blank">Technical FAQs</a> <br/>
834
+ &raquo; <a href="https://snapcreek.com/support/docs/" target="_blank">Online Documentation</a> <br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
835
  </div>
836
+ </div>
837
+ <?php else : ?>
838
+ <div class="footer-buttons">
839
+ <button id="s1-deploy-btn" type="button" title="<?php echo DUPX_U::esc_attr($agree_msg); ?>" onclick="DUPX.processNext()" class="default-btn"> Next <i class="fa fa-caret-right"></i> </button>
840
+ </div>
841
+ <?php endif; ?>
842
 
843
  </form>
844
 
1136
  $('#s1-result-form').submit();
1137
  }, 500);
1138
  <?php endif; ?>
1139
+ //$('#progress-area').fadeOut(1000);
1140
  //Failures aren't necessarily fatal - just record them for later display
1141
 
1142
  $("#ajax-json-debug").val(dataJSON);
1352
  $('#s1-result-form').submit();
1353
  }, 500);
1354
  <?php endif; ?>
1355
+ // $('#progress-area').fadeOut(1000);
1356
  } else {
1357
  $('#ajaxerr-data').html('Error Processing Step 1');
1358
  DUPX.hideProgressBar();
1455
  $('#s1-input-form').show(200);
1456
  }
1457
 
1458
+ /** Config Mode Changes */
1459
+ DUPX.toggleConfigMode = function(select)
1460
+ {
1461
+ var $notes = $('.config-files-helper');
1462
+ var $data = $(select).find('option:selected').attr('data-title');
1463
+ $notes.html($data).hide();
1464
+ $notes.html($data).show(400);
1465
+ }
1466
+
1467
  /**
1468
  * Accetps Usage Warning */
1469
  DUPX.acceptWarning = function ()
1509
  //INIT Routines
1510
  DUPX.initToggle();
1511
  $("#tabs").tabs();
1512
+ $("#tabs-opts").tabs();
1513
  DUPX.acceptWarning();
1514
 
 
 
 
1515
  $('#archive_action_wrapper').each(function () {
1516
  let paramWrapper = $(this);
1517
  let noteWrapper = paramWrapper.find('.sub-note');
1518
 
1519
  paramWrapper.find('.input-item').change(function () {
1520
+ noteWrapper.find('.archive-action-note').hide();
1521
+ noteWrapper.find('.archive-action-' + $(this).val()).show(500);
1522
  });
1523
  });
1524
  <?php
installer/dup-installer/views/view.s2.base.php CHANGED
@@ -320,7 +320,7 @@ Auto Posts to view.step3.php -->
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);
320
  <?php if (!DUPX_Log::isLevel(DUPX_Log::LV_DEBUG)) : ?>
321
  setTimeout(function () {$formResult.submit();}, 1000);
322
  <?php endif; ?>
323
+ //$('#progress-area').fadeOut(1500);
324
  } else {
325
  if (data.error_message) {
326
  $('#ajaxerr-data').html(data.error_message);
installer/dup-installer/views/view.s2.basic.php CHANGED
@@ -54,10 +54,9 @@ BASIC PANEL -->
54
  <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s2-db-basic">
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/>
@@ -134,11 +133,11 @@ BASIC PANEL -->
134
  <div class="hdr-sub1 toggle-hdr" id="s2-opts-hdr-basic" data-type="toggle" data-target="#s2-opts-basic">
135
  <a href="javascript:void(0)"><i class="fa fa-plus-square"></i>Options</a>
136
  </div>
137
- <div id="s2-opts-basic" class="s2-opts hdr-sub1-area" style="display:none;padding-top:0">
138
  <div class="help-target">
139
  <?php DUPX_View_Funcs::helpIconLink('step2'); ?>
140
  </div>
141
-
142
  <table class="dupx-opts dupx-advopts dupx-advopts-space">
143
  <tr>
144
  <td>Legacy:</td>
@@ -213,14 +212,12 @@ BASIC: DB VALIDATION -->
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
 
@@ -234,7 +231,7 @@ BASIC: DB VALIDATION -->
234
  </div>
235
  <?php else : ?>
236
  <button id="s2-dbtest-btn-basic" type="button" onclick="DUPX.testDBConnect()" class="default-btn" /><i class="fas fa-database fa-sm"></i> Test Database</button>
237
- <button id="s2-next-btn-basic" type="button" onclick="DUPX.confirmDeployment()" class="default-btn disabled" disabled="true"
238
  title="The 'Test Database' connectivity requirements must pass to continue with install!">
239
  Next <i class="fa fa-caret-right"></i>
240
  </button>
54
  <div class="hdr-sub1 toggle-hdr" data-type="toggle" data-target="#s2-db-basic">
55
  <a href="javascript:void(0)"><i class="fa fa-minus-square"></i>Setup</a>
56
  </div>
57
+ <div id="s2-db-basic" class="dupx-panel-area">
58
+ <div class="hdr-sub3">Database Connection</div>
59
+
 
60
  <?php if ($is_overwrite_mode) : ?>
61
  <div id="s2-db-basic-overwrite" class="gray-panel" >
62
  <b style='color:maroon'>Ready to connect to existing sites database? </b><br/>
133
  <div class="hdr-sub1 toggle-hdr" id="s2-opts-hdr-basic" data-type="toggle" data-target="#s2-opts-basic">
134
  <a href="javascript:void(0)"><i class="fa fa-plus-square"></i>Options</a>
135
  </div>
136
+ <div id="s2-opts-basic" class="s2-opts hdr-sub1-area dupx-panel-area" style="display:none;">
137
  <div class="help-target">
138
  <?php DUPX_View_Funcs::helpIconLink('step2'); ?>
139
  </div>
140
+ <div class="hdr-sub3">Database Configuration</div>
141
  <table class="dupx-opts dupx-advopts dupx-advopts-space">
142
  <tr>
143
  <td>Legacy:</td>
212
  <div style="clear:both"></div>
213
  <div id="s2-dbtest-hb-basic" class="s2-dbtest-hb">
214
  <div class="message">
215
+ <b><i class="far fa-check-circle"></i> Please validate database setup by clicking the 'Test Database' button.</b><br/>
216
+ <i>This test checks to make sure the database is ready for install.</i>
217
  </div>
218
  </div>
219
  </div>
220
 
 
 
221
  <br/><br/><br/>
222
  <br/><br/><br/>
223
 
231
  </div>
232
  <?php else : ?>
233
  <button id="s2-dbtest-btn-basic" type="button" onclick="DUPX.testDBConnect()" class="default-btn" /><i class="fas fa-database fa-sm"></i> Test Database</button>
234
+ <button id="s2-next-btn-basic" type="button" onclick="DUPX.confirmDeployment()" class="default-btn disabled" disabled="true"
235
  title="The 'Test Database' connectivity requirements must pass to continue with install!">
236
  Next <i class="fa fa-caret-right"></i>
237
  </button>
installer/dup-installer/views/view.s2.dbtest.php CHANGED
@@ -561,6 +561,6 @@ DUPX.resetDBTest = function(e)
561
 
562
  $btnTestDB.removeAttr('disabled').removeClass('disabled');
563
  $btnNext.addClass('disabled').attr('disabled', 'true');
564
- $divTestArea.html("<div class='sub-message'>To continue click the 'Test Database'<br/>button to retest the database setup.</div>");
565
  }
566
  </script>
561
 
562
  $btnTestDB.removeAttr('disabled').removeClass('disabled');
563
  $btnNext.addClass('disabled').attr('disabled', 'true');
564
+ $divTestArea.html("<div class='sub-message'>To continue click the 'Test Database' button to retest the database setup.</div>");
565
  }
566
  </script>
installer/dup-installer/views/view.s3.php CHANGED
@@ -233,37 +233,46 @@ VIEW: STEP 3- INPUT -->
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>
@@ -516,7 +525,7 @@ DUPX.runUpdate = function()
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
  }
233
  </tr>
234
  </table><br/>
235
 
236
+ <table style="width:100%">
237
  <tr>
238
+ <td style="padding-right:10px;width:50%">
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:100%;" 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
  </td>
252
+ <td style="width:50%">
253
  <b>Activate Plugins:</b>
254
  <?php echo ($_POST['exe_safe_mode'] > 0) ? '<small class="s3-warn">Safe Mode Enabled</small>' : '' ; ?>
255
  <div class="s3-allnonelinks" style="<?php echo ($_POST['exe_safe_mode']>0)? 'display:none':''; ?>">
256
  <a href="javascript:void(0)" onclick="$('#plugins option').prop('selected',true);">[All]</a>
257
  <a href="javascript:void(0)" onclick="$('#plugins option').prop('selected',false);">[None]</a>
258
  </div><br style="clear:both" />
259
+ <select id="plugins" name="plugins[]" multiple="multiple" style="width:100%;" size="10">
260
  <?php
261
  $selected_string = 'selected="selected"';
262
+ if ($_POST['exe_safe_mode'] > 0) {
263
+ foreach ($active_plugins as $plugin) {
264
+ if (strpos($plugin, '/duplicator.php') !== false) {
265
+ $label = dirname($plugin) == '.' ? $plugin : dirname($plugin);
266
+ echo "<option {$selected_string} value='" . DUPX_U::esc_attr( $plugin ) . "'>" . DUPX_U::esc_html($label) . '</option>';
267
+ break;
268
+ }
269
+ }
270
+ } else {
271
+ foreach ($active_plugins as $plugin) {
272
+ $label = dirname($plugin) == '.' ? $plugin : dirname($plugin);
273
+ echo "<option {$selected_string} value='" . DUPX_U::esc_attr( $plugin ) . "'>" . DUPX_U::esc_html($label) . '</option>';
274
+ }
275
+ }
276
  ?>
277
  </select>
278
  </td>
525
  <?php if (!DUPX_Log::isLevel(DUPX_Log::LV_DEBUG)) : ?>
526
  setTimeout(function(){$('#s3-result-form').submit();}, 1000);
527
  <?php endif; ?>
528
+ //$('#progress-area').fadeOut(1500);
529
  } else {
530
  DUPX.hideProgressBar();
531
  }
installer/dup-installer/views/view.s4.php CHANGED
@@ -58,9 +58,9 @@ if ($json_decode == NULL || $json_decode == FALSE) {
58
  {
59
  if ($('input#auto-delete').is(':checked')) {
60
  var action = encodeURIComponent('&action=installer');
61
- window.open('<?php echo $admin_login; ?>' + action, '_blank');
62
  } else {
63
- window.open('<?php echo $admin_login; ?>', '_blank');
64
  }
65
  };
66
  </script>
@@ -86,29 +86,31 @@ VIEW: STEP 4- INPUT -->
86
  <table class="s4-final-step">
87
  <tr style="vertical-align: top">
88
  <td style="padding-top:10px">
89
- <button type="button" class="s4-final-btns" onclick="DUPX.getAdminLogin()"><i class="fab fa-wordpress"></i> Admin Login</button>
 
 
90
  </td>
91
  <td>
92
  Login to the WordPress Admin to finalize this install.<br/>
93
  <input type="checkbox" name="auto-delete" id="auto-delete" checked="true"/>
94
  <label for="auto-delete">Auto delete installer files after login <small>(recommended)</small></label>
95
- <br/><br/>
96
-
97
- <!-- WARN: SAFE MODE MESSAGES -->
98
- <div class="s4-warn" style="display:<?php echo ($safe_mode > 0 ? 'block' : 'none')?>">
99
- <b>Safe Mode</b><br/>
100
- Safe mode has <u>deactivated</u> all plugins. Please be sure to enable your plugins after logging in. <i>If you notice that problems arise when activating
101
- the plugins then active them one-by-one to isolate the plugin that could be causing the issue.</i>
102
- </div>
103
  </td>
104
  </tr>
105
  </table>
106
- <div style="border: 1px solid #cdcdcd;border-radius: 5px;padding: 15px;color:maroon;font-size:12px;font-style:italic;">
 
 
 
 
 
 
 
 
 
107
  <b><i class="fa fa-exclamation-triangle"></i> IMPORTANT FINAL STEPS:</b> Login into the WordPress Admin to remove all <?php
108
- DUPX_View_Funcs::helpLink('step4', 'installation files'); ?> and finalize the install process. This install is <u>NOT</u> complete until all installer files have been completely removed.
109
- Leaving any of the installer files on this server can lead to security issues.
110
- </div>
111
- <br/><br/><br/>
112
 
113
  <?php
114
  $nManager = DUPX_NOTICE_MANAGER::getInstance();
58
  {
59
  if ($('input#auto-delete').is(':checked')) {
60
  var action = encodeURIComponent('&action=installer');
61
+ window.open(<?php echo str_replace('\\/', '/', json_encode($admin_login)); ?> + action, '_blank');
62
  } else {
63
+ window.open(<?php echo str_replace('\\/', '/', json_encode($admin_login)); ?>, '_blank');
64
  }
65
  };
66
  </script>
86
  <table class="s4-final-step">
87
  <tr style="vertical-align: top">
88
  <td style="padding-top:10px">
89
+ <button type="button" class="s4-final-btns" onclick="DUPX.getAdminLogin()">
90
+ <i class="fab fa-wordpress fa-lg"></i> &nbsp; Admin Login
91
+ </button>
92
  </td>
93
  <td>
94
  Login to the WordPress Admin to finalize this install.<br/>
95
  <input type="checkbox" name="auto-delete" id="auto-delete" checked="true"/>
96
  <label for="auto-delete">Auto delete installer files after login <small>(recommended)</small></label>
 
 
 
 
 
 
 
 
97
  </td>
98
  </tr>
99
  </table>
100
+
101
+ <!-- WARN: SAFE MODE MESSAGES -->
102
+ <div class="s4-final-steps" style="display:<?php echo ($safe_mode > 0 ? 'block' : 'none')?>">
103
+ <b><i class="fa fa-exclamation-triangle"></i> SAFE MODE:</b>
104
+ Safe mode has <u>deactivated</u> all plugins except for Duplicator. Please be sure to enable your plugins after logging in. If you notice that problems
105
+ arise when activating more than one plugin at a time, then it is recommended to active them one-by-one to isolate the plugin that could be causing the issue.
106
+ </div>
107
+
108
+ <!-- WARN: FINAL STEPS -->
109
+ <div class="s4-final-steps">
110
  <b><i class="fa fa-exclamation-triangle"></i> IMPORTANT FINAL STEPS:</b> Login into the WordPress Admin to remove all <?php
111
+ DUPX_View_Funcs::helpLink('step4', 'installation files'); ?> and finalize the install process. This install is <u>NOT</u> complete until all installer
112
+ files have been completely removed. Leaving any of the installer files on this server can lead to security issues.
113
+ </div><br/>
 
114
 
115
  <?php
116
  $nManager = DUPX_NOTICE_MANAGER::getInstance();
installer/dup-installer/views/view.security.error.php CHANGED
@@ -12,12 +12,12 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
12
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
13
  <meta name="robots" content="noindex,nofollow">
14
  <title>Duplicator</title>
15
- <link rel="apple-touch-icon" sizes="180x180" href="favicon/lite01_apple-touch-icon.png">
16
- <link rel="icon" type="image/png" sizes="32x32" href="favicon/lite01_favicon-32x32.png">
17
- <link rel="icon" type="image/png" sizes="16x16" href="favicon/lite01_favicon-16x16.png">
18
  <link rel="manifest" href="favicon/site.webmanifest">
19
- <link rel="mask-icon" href="favicon/lite01_safari-pinned-tab.svg">
20
- <link rel="shortcut icon" href="favicon/lite01_favicon.ico">
21
  <meta name="msapplication-TileColor" content="#da532c">
22
  <meta name="msapplication-config" content="favicon/browserconfig.xml">
23
  <meta name="theme-color" content="#ffffff">
12
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
13
  <meta name="robots" content="noindex,nofollow">
14
  <title>Duplicator</title>
15
+ <link rel="apple-touch-icon" sizes="180x180" href="favicon/apple-touch-icon.png">
16
+ <link rel="icon" type="image/png" sizes="32x32" href="favicon/favicon-32x32.png">
17
+ <link rel="icon" type="image/png" sizes="16x16" href="favicon/favicon-16x16.png">
18
  <link rel="manifest" href="favicon/site.webmanifest">
19
+ <link rel="mask-icon" href="favicon/safari-pinned-tab.svg">
20
+ <link rel="shortcut icon" href="favicon/favicon.ico">
21
  <meta name="msapplication-TileColor" content="#da532c">
22
  <meta name="msapplication-config" content="favicon/browserconfig.xml">
23
  <meta name="theme-color" content="#ffffff">
installer/installer.tpl CHANGED
@@ -193,17 +193,20 @@ class DUPX_Bootstrap
193
  //MANUAL EXTRACTION NOT FOUND
194
  if (! $manual_extract_found) {
195
 
196
- //MISSING ARCHIVE FILE
197
  if (! file_exists($archive_filepath)) {
198
  self::log("[ERROR] Archive file not found!");
199
- $error = "<style>.diff-list font { font-weight: bold; }</style>"
200
- . "<b>Archive not found!</b> The <i>'Required File'</i> below should be present in the <i>'Extraction Path'</i>. "
201
- . "The archive file name must be the <u>exact</u> name of the archive file placed in the extraction path character for character.<br/><br/> "
202
- . "If the file does not have the correct name then rename it to the <i>'Required File'</i> below. When downloading the package files make "
203
- . "sure both files are from the same package line in the packages view. If the archive is not finished downloading please wait for it to complete.<br/><br/>"
204
- . "If this message continues even with a valid archive file, consider clearing your browsers cache and refreshing, trying another browser or change the browsers "
205
- . "URL from http to https or vice versa.<br/><br/> "
206
- . "<b>Extraction Path:</b> <span class='file-info'>{$this->installerExtractPath}/</span><br/><br/>";
 
 
 
207
 
208
  return $error;
209
  }
@@ -214,7 +217,7 @@ class DUPX_Bootstrap
214
  if (!empty($archive_size) && !self::checkInputVaslidInt($archive_size)) {
215
  $no_of_bits = PHP_INT_SIZE * 8;
216
  $error = 'Current is a '.$no_of_bits.'-bit SO. This archive is too large for '.$no_of_bits.'-bit PHP.'.'<br>';
217
- $this->log('[ERROR] '.$error);
218
  $error .= 'Possibibles solutions:<br>';
219
  $error .= '- Use the file filters to get your package lower to support this server or try the package on a Linux server.'.'<br>';
220
  $error .= '- Perform a <a target="_blank" href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-015-q">Manual Extract Install</a>'.'<br>';
@@ -237,8 +240,8 @@ class DUPX_Bootstrap
237
 
238
  //SIZE CHECK ERROR
239
  if (($this->archiveRatio < 90) && ($this->archiveActualSize > 0) && ($this->archiveExpectedSize > 0)) {
240
- $this->log("ERROR: The expected archive size should be around [{$archiveExpectedEasy}]. The actual size is currently [{$archiveActualEasy}].");
241
- $this->log("ERROR: The archive file may not have fully been downloaded to the server");
242
  $percent = round($this->archiveRatio);
243
 
244
  $autochecked = isset($_POST['auto-fresh']) ? "checked='true'" : '';
@@ -1702,7 +1705,7 @@ try {
1702
  <body>
1703
  <?php
1704
  $id = uniqid();
1705
- $html = "<form id='{$id}' method='post' action='{$boot->mainInstallerURL}' />\n";
1706
  $data = array(
1707
  'csrf_token' => $step1_csrf_token,
1708
  );
@@ -1719,7 +1722,7 @@ try {
1719
  <style>
1720
  body {font-family:Verdana,Arial,sans-serif; line-height:18px; font-size: 12px}
1721
  h2 {font-size:20px; margin:5px 0 5px 0; border-bottom:1px solid #dfdfdf; padding:3px}
1722
- div#content {border:1px solid #CDCDCD; width:750px; min-height:550px; margin:auto; margin-top:18px; border-radius:5px; box-shadow:0 8px 6px -6px #333; font-size:13px}
1723
  div#content-inner {padding:10px 30px; min-height:550px}
1724
 
1725
  /* Header */
193
  //MANUAL EXTRACTION NOT FOUND
194
  if (! $manual_extract_found) {
195
 
196
+ //MISSING ARCHIVE FILE
197
  if (! file_exists($archive_filepath)) {
198
  self::log("[ERROR] Archive file not found!");
199
+ $error = "<style>.diff-list font { font-weight: bold; }</style>"
200
+ . "<b>Archive not found!</b> The required archive file must be present in the <i>'Extraction Path'</i> below. When the archive file name was created "
201
+ . "it was given a secure hashed file name. This file name must be the <i>exact same</i> name as when it was created character for character. "
202
+ . "Each archive file has a unique installer associated with it and must be used together. See the list below for more options:<br/>"
203
+ . "<ul>"
204
+ . "<li>If the archive is not finished downloading please wait for it to complete.</li>"
205
+ . "<li>Rename the file to it original hash name. See WordPress-Admin ❯ Packages ❯ Details. </li>"
206
+ . "<li>When downloading, both files both should be from the same package line. </li>"
207
+ . "<li>Also see: <a href='https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-050-q' target='_blank'>How to fix various errors that show up before step-1 of the installer?</a></li>"
208
+ . "</ul><br/>"
209
+ ."<b>Extraction Path:</b> <span class='file-info'>{$this->installerExtractPath}/</span><br/>";
210
 
211
  return $error;
212
  }
217
  if (!empty($archive_size) && !self::checkInputVaslidInt($archive_size)) {
218
  $no_of_bits = PHP_INT_SIZE * 8;
219
  $error = 'Current is a '.$no_of_bits.'-bit SO. This archive is too large for '.$no_of_bits.'-bit PHP.'.'<br>';
220
+ self::log('[ERROR] '.$error);
221
  $error .= 'Possibibles solutions:<br>';
222
  $error .= '- Use the file filters to get your package lower to support this server or try the package on a Linux server.'.'<br>';
223
  $error .= '- Perform a <a target="_blank" href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-installer-015-q">Manual Extract Install</a>'.'<br>';
240
 
241
  //SIZE CHECK ERROR
242
  if (($this->archiveRatio < 90) && ($this->archiveActualSize > 0) && ($this->archiveExpectedSize > 0)) {
243
+ self::log("ERROR: The expected archive size should be around [{$archiveExpectedEasy}]. The actual size is currently [{$archiveActualEasy}].");
244
+ self::log("ERROR: The archive file may not have fully been downloaded to the server");
245
  $percent = round($this->archiveRatio);
246
 
247
  $autochecked = isset($_POST['auto-fresh']) ? "checked='true'" : '';
1705
  <body>
1706
  <?php
1707
  $id = uniqid();
1708
+ $html = "<form id='{$id}' method='post' action=".str_replace('\\/', '/', json_encode($boot->mainInstallerURL))." />\n";
1709
  $data = array(
1710
  'csrf_token' => $step1_csrf_token,
1711
  );
1722
  <style>
1723
  body {font-family:Verdana,Arial,sans-serif; line-height:18px; font-size: 12px}
1724
  h2 {font-size:20px; margin:5px 0 5px 0; border-bottom:1px solid #dfdfdf; padding:3px}
1725
+ div#content {border:1px solid #CDCDCD; width:750px; min-height:550px; margin:auto; margin-top:18px; border-radius:3px; box-shadow:0 8px 6px -6px #333; font-size:13px}
1726
  div#content-inner {padding:10px 30px; min-height:550px}
1727
 
1728
  /* Header */
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Contributors: corylamleorg, bobriley
3
  Tags: migration, backup, duplicate, move, migrate, restore, transfer, clone, automate, copy site, migrator
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.
2
  Contributors: corylamleorg, bobriley
3
  Tags: migration, backup, duplicate, move, migrate, restore, transfer, clone, automate, copy site, migrator
4
  Requires at least: 4.0
5
+ Tested up to: 5.9
6
  Requires PHP: 5.3.8
7
+ Stable tag: 1.4.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.
views/packages/details/detail.php CHANGED
@@ -194,43 +194,58 @@ STORAGE -->
194
  <div class="dup-box-arrow"></div>
195
  </div>
196
  <div class="dup-box-panel" id="dup-package-dtl-storage-panel" style="<?php echo esc_attr($ui_css_storage); ?>">
197
- <table class="widefat package-tbl">
198
- <thead>
199
- <tr>
200
- <th style='width:150px'><?php esc_html_e('Name', 'duplicator') ?></th>
201
- <th style='width:100px'><?php esc_html_e('Type', 'duplicator') ?></th>
202
- <th style="white-space: nowrap"><?php esc_html_e('Location', 'duplicator') ?></th>
203
- </tr>
204
- </thead>
205
- <tbody>
206
- <tr class="package-row">
207
- <td><i class="fa fa-server"></i>&nbsp;<?php esc_html_e('Default', 'duplicator');?></td>
208
- <td><?php esc_html_e("Local", 'duplicator'); ?></td>
209
- <td><?php echo esc_html(DUP_Settings::getSsdirPath()); ?></td>
210
- </tr>
211
- <tr>
212
- <td colspan="4">
213
- <div class="dup-store-pro">
214
- <img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/amazon-64.png"); ?>" />
215
- <img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/dropbox-64.png"); ?>" />
216
- <img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/google_drive_64px.png"); ?>" />
217
- <img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/onedrive-48px.png"); ?>" />
218
- <img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/ftp-64.png"); ?>" />
219
- <?php echo sprintf(esc_html__('%1$s, %2$s, %3$s, %4$s, %5$s and other storage options available in', 'duplicator'), 'Amazon', 'Dropbox', 'Google Drive', 'OneDrive', 'FTP/SFTP'); ?>
220
- <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_storage_detail&utm_campaign=duplicator_pro" target="_blank"><?php esc_html_e('Duplicator Pro', 'duplicator');?></a>
221
- <i class="far fa-lightbulb"
222
- data-tooltip-title="<?php esc_attr_e('Additional Storage:', 'duplicator'); ?>"
223
- data-tooltip="<?php esc_attr_e('Duplicator Pro allows you to create a package and then store it at a custom location on this server or to a cloud '
224
- . 'based location such as Google Drive, Amazon, Dropbox or FTP.', 'duplicator'); ?>">
225
- </i>
226
- </div>
227
- </td>
228
- </tr>
229
- </tbody>
230
- </table>
231
- </div>
232
- </div>
233
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
234
 
235
  <!-- ===============================
236
  ARCHIVE -->
194
  <div class="dup-box-arrow"></div>
195
  </div>
196
  <div class="dup-box-panel" id="dup-package-dtl-storage-panel" style="<?php echo esc_attr($ui_css_storage); ?>">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
 
198
+ <table class="widefat package-tbl" style="margin-bottom:15px" >
199
+ <thead>
200
+ <tr>
201
+ <th style='width:200px'><?php esc_html_e("Name", 'duplicator'); ?></th>
202
+ <th style='width:100px'><?php esc_html_e("Type", 'duplicator'); ?></th>
203
+ <th style="white-space:nowrap"><?php esc_html_e("Location", 'duplicator'); ?></th>
204
+ </tr>
205
+ </thead>
206
+ <tbody>
207
+ <tr class="dup-store-path">
208
+ <td>
209
+ <?php esc_html_e('Default', 'duplicator');?>
210
+ <i>
211
+ <?php
212
+ if ($storage_position === DUP_Settings::STORAGE_POSITION_LECAGY) {
213
+ esc_html_e("(Legacy Path)", 'duplicator');
214
+ } else {
215
+ esc_html_e("(Contents Path)", 'duplicator');
216
+ }
217
+ ?>
218
+ </i>
219
+ </td>
220
+ <td><i class="fas fa-server fa-fw"></i> <?php esc_html_e("Local", 'duplicator'); ?></td>
221
+ <td><?php echo DUP_Settings::getSsdirPath(); ?></td>
222
+ </tr>
223
+ <tr>
224
+ <td colspan="4" class="dup-store-promo-area">
225
+ <div class="dup-store-pro">
226
+ <span class="dup-pro-text">
227
+ <?php echo sprintf(__('Back up this site to %1$s, %2$s, %3$s, %4$s, %5$s and other locations with ', 'duplicator'),
228
+ '<i class="fab fa-aws fa-fw"></i>&nbsp;' .'Amazon',
229
+ '<i class="fab fa-dropbox fa-fw"></i>&nbsp;' . 'Dropbox',
230
+ '<i class="fab fa-google-drive fa-fw"></i>&nbsp;' . 'Google Drive',
231
+ '<i class="fas fa-cloud fa-fw"></i>&nbsp;' . 'OneDrive',
232
+ '<i class="fas fa-network-wired fa-fw"></i>&nbsp;' . 'FTP/SFTP');
233
+ ?>
234
+ <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_storage_detail_bw&utm_campaign=duplicator_pro" target="_blank"><?php esc_html_e('Duplicator Pro', 'duplicator');?></a>
235
+ <i class="fas fa-question-circle"
236
+ data-tooltip-title="<?php esc_attr_e("Additional Storage:", 'duplicator'); ?>"
237
+ data-tooltip="<?php esc_attr_e('Duplicator Pro allows you to create a package and store it at a custom location on this server or to a remote '
238
+ . 'cloud location such as Google Drive, Amazon, Dropbox and many more.', 'duplicator'); ?>">
239
+ </i>
240
+ </span>
241
+ </div>
242
+ </td>
243
+ </tr>
244
+ </tbody>
245
+ </table>
246
+
247
+ </div>
248
+ </div>
249
 
250
  <!-- ===============================
251
  ARCHIVE -->
views/packages/main/controller.php CHANGED
@@ -34,18 +34,18 @@ switch ($current_tab) {
34
  table#dup-toolbar td {white-space: nowrap !important; padding:10px 0 0 0}
35
  table#dup-toolbar td .button {box-shadow: none !important;}
36
  table#dup-toolbar {width:100%; border:0 solid red; padding: 0; margin:8px 0 4px 0; height: 35px}
37
- table#dup-toolbar td:last-child {font-size:16px; width:100%; text-align: right; vertical-align: bottom;white-space:nowrap;}
38
- table#dup-toolbar td:last-child a {top:0; margin-top:10px; font-weight: bold; }
39
- table#dup-toolbar td:last-child span {display:inline-block; font-weight: bold; padding:0 5px 5px 5px; color:#000}
40
  hr.dup-toolbar-line {margin:2px 0 10px 0}
41
 
42
  /*WIZARD TABS */
43
  div#dup-wiz {padding:0px; margin:0; }
44
  div#dup-wiz-steps {margin:10px 0px 0px 10px; padding:0px; clear:both; font-size:13px; min-width:350px;}
45
- div#dup-wiz-title {padding:2px 0px 0px 0px; font-size:18px;}
46
- #dup-wiz a { position:relative; display:block; width:auto; min-width:55px; height:25px; margin-right:8px; padding:0px 10px 0px 10px; float:left; line-height:24px;
47
- color:#000; background:#E4E4E4; border-radius:5px; letter-spacing:1px; border:1px solid #E4E4E4; text-align: center }
48
- #dup-wiz .active-step a {color:#fff; background:#ACACAC; font-weight: bold; border:1px solid #888}
49
  #dup-wiz .completed-step a {color:#E1E1E1; background:#BBBBBB; }
50
 
51
  /*Footer */
34
  table#dup-toolbar td {white-space: nowrap !important; padding:10px 0 0 0}
35
  table#dup-toolbar td .button {box-shadow: none !important;}
36
  table#dup-toolbar {width:100%; border:0 solid red; padding: 0; margin:8px 0 4px 0; height: 35px}
37
+ table#dup-toolbar td:last-child {font-size:16px; width:100%; text-align: right; vertical-align: bottom;white-space:nowrap; padding:0}
38
+ table#dup-toolbar td:last-child a {top:0; margin-top:10px; }
39
+ table#dup-toolbar td:last-child span {display:inline-block; padding:0 5px 5px 5px; color:#000;}
40
  hr.dup-toolbar-line {margin:2px 0 10px 0}
41
 
42
  /*WIZARD TABS */
43
  div#dup-wiz {padding:0px; margin:0; }
44
  div#dup-wiz-steps {margin:10px 0px 0px 10px; padding:0px; clear:both; font-size:13px; min-width:350px;}
45
+ div#dup-wiz-title {padding:8px 0 0 15px; clear:both;}
46
+ #dup-wiz a { position:relative; display:block; width:auto; min-width:80px; height:25px; margin-right:12px; padding:0px 10px 0px 10px; float:left; line-height:24px;
47
+ color:#000; background:#E4E4E4; border-radius:2px; letter-spacing:1px; border:1px solid #E4E4E4; text-align: center }
48
+ #dup-wiz .active-step a {color:#fff; background:#ACACAC; font-weight: bold; border:1px solid #888; box-shadow: 3px 3px 3px 0 #999}
49
  #dup-wiz .completed-step a {color:#E1E1E1; background:#BBBBBB; }
50
 
51
  /*Footer */
views/packages/main/packages.php CHANGED
@@ -26,14 +26,14 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
26
 
27
  <style>
28
  div#dup-list-alert-nodata {padding:70px 20px;text-align:center; font-size:20px; line-height:26px}
29
- div.dup-notice-msg {border:1px solid silver; padding: 10px; border-radius: 5px; width: 550px;
30
  margin:40px auto 0px auto; font-size:12px; text-align: left; word-break:normal;
31
  background: #fefcea;
32
  background: -moz-linear-gradient(top, #fefcea 0%, #efe5a2 100%);
33
  background: -ms-linear-gradient(top, #fefcea 0%,#efe5a2 100%);
34
  background: linear-gradient(to bottom, #fefcea 0%,#efe5a2 100%);
35
  }
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}
@@ -46,18 +46,18 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
46
  table.dup-pack-table td.pack-size {min-width: 65px; }
47
 
48
  table.dup-pack-table input[name="delete_confirm"] {margin-left:15px}
49
- table.dup-pack-table td.fail {border-left: 4px solid #d54e21;}
50
  table.dup-pack-table td.pass {border-left: 4px solid #2ea2cc;}
51
 
52
- .dup-pack-info {height: 45px;}
53
  .dup-pack-info td {vertical-align: middle; }
54
  tr.dup-pack-info td {white-space:nowrap; padding:2px 30px 2px 7px;}
55
  tr.dup-pack-info td.get-btns {text-align:right; padding:3px 5px 6px 0px !important;}
56
  tr.dup-pack-info td.get-btns button {box-shadow:none}
57
  textarea.dup-pack-debug {width:98%; height:300px; font-size:11px; display:none}
58
- td.error-msg a {color:maroon}
59
- td.error-msg a i {color:maroon}
60
- td.error-msg span {display:inline-block; padding:7px 18px 0px 0px; color:maroon}
61
  div#dup-help-dlg i {display: inline-block; width: 15px; padding:2px;line-height:28px; font-size:14px;}
62
  tr.dup-pack-info sup {font-style:italic;font-size:10px; cursor: pointer; vertical-align: baseline; position: relative; top: -0.8em;}
63
  tr#pack-processing {display: none}
@@ -89,14 +89,13 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
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');
@@ -152,10 +151,12 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
152
  <table class="widefat dup-pack-table">
153
  <thead>
154
  <tr>
155
- <th style="width: 30px;" ><input type="checkbox" id="dup-bulk-action-all" title="<?php esc_attr_e("Select all packages", 'duplicator') ?>" style="margin-left:15px" onclick="Duplicator.Pack.SetDeleteAll()" /></th>
 
 
156
  <th style="width: 100px;" ><?php esc_html_e("Created", 'duplicator') ?></th>
157
  <th style="width: 70px;"><?php esc_html_e("Size", 'duplicator') ?></th>
158
- <th><?php esc_html_e("Name", 'duplicator') ?></th>
159
  <th class="inst-name">
160
  <?php esc_html_e("Installer Name", 'duplicator'); ?>
161
  <i class="fas fa-question-circle fa-sm"
@@ -206,7 +207,7 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
206
  if ($Package->Status >= 100 || $is_running_package) :
207
  ?>
208
  <tr class="dup-pack-info <?php echo esc_attr($css_alt); ?> <?php echo $is_running_package ? 'is-running' : ''; ?>">
209
- <td class="pass"><input name="delete_confirm" type="checkbox" id="<?php echo absint($Package->ID); ?>" /></td>
210
  <td>
211
  <?php
212
  echo DUP_Package::getCreatedDateFormat($Package->Created, DUP_Settings::get_create_date_format());
@@ -261,18 +262,14 @@ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MOD
261
  $error_url = "?page=duplicator&action=detail&tab=detail&id={$Package->ID}";
262
  ?>
263
  <tr class="dup-pack-info <?php echo esc_attr($css_alt); ?>">
264
- <td class="fail"><input name="delete_confirm" type="checkbox" id="<?php echo absint($Package->ID); ?>" /></td>
265
  <td><?php echo DUP_Package::getCreatedDateFormat($Package->Created, DUP_Settings::get_create_date_format()); ?></td>
266
  <td class="pack-size"><?php echo DUP_Util::byteSize($pack_archive_size); ?></td>
267
  <td class='pack-name'><?php echo esc_html($pack_name); ?></td>
 
268
  <td class="get-btns error-msg" colspan="3">
269
- <span>
270
- <i class="fa fa-exclamation-triangle fa-sm"></i>
271
- <a href="<?php echo esc_url($error_url); ?>"><?php esc_html_e("Error Processing", 'duplicator') ?></a>
272
- </span>
273
- <a class="button no-select" title="<?php esc_attr_e("Package Details", 'duplicator') ?>" href="<?php echo esc_url($error_url); ?>">
274
- <i class="fa fa-archive fa-sm"></i>
275
- </a>
276
  </td>
277
  </tr>
278
  <?php endif; ?>
26
 
27
  <style>
28
  div#dup-list-alert-nodata {padding:70px 20px;text-align:center; font-size:20px; line-height:26px}
29
+ div.dup-notice-msg {border:1px solid silver; padding: 10px; border-radius:3px; width: 550px;
30
  margin:40px auto 0px auto; font-size:12px; text-align: left; word-break:normal;
31
  background: #fefcea;
32
  background: -moz-linear-gradient(top, #fefcea 0%, #efe5a2 100%);
33
  background: -ms-linear-gradient(top, #fefcea 0%,#efe5a2 100%);
34
  background: linear-gradient(to bottom, #fefcea 0%,#efe5a2 100%);
35
  }
36
+ input#dup-bulk-action-all {margin:0 2px 0 0;padding:0 2px 0 0 }
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}
46
  table.dup-pack-table td.pack-size {min-width: 65px; }
47
 
48
  table.dup-pack-table input[name="delete_confirm"] {margin-left:15px}
49
+ table.dup-pack-table td.fail {border-left: 4px solid maroon;}
50
  table.dup-pack-table td.pass {border-left: 4px solid #2ea2cc;}
51
 
52
+ .dup-pack-info {height:50px;}
53
  .dup-pack-info td {vertical-align: middle; }
54
  tr.dup-pack-info td {white-space:nowrap; padding:2px 30px 2px 7px;}
55
  tr.dup-pack-info td.get-btns {text-align:right; padding:3px 5px 6px 0px !important;}
56
  tr.dup-pack-info td.get-btns button {box-shadow:none}
57
  textarea.dup-pack-debug {width:98%; height:300px; font-size:11px; display:none}
58
+ td.error-msg a {color:maroon; text-decoration: underline}
59
+ td.error-msg a:hover {color:maroon; text-decoration:none}
60
+ td.error-msg {padding:7px 18px 0px 0px; color:maroon; text-align: center !important;}
61
  div#dup-help-dlg i {display: inline-block; width: 15px; padding:2px;line-height:28px; font-size:14px;}
62
  tr.dup-pack-info sup {font-style:italic;font-size:10px; cursor: pointer; vertical-align: baseline; position: relative; top: -0.8em;}
63
  tr#pack-processing {display: none}
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-sliders-h"></i></a>
 
 
93
  <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>
94
+ <span class="btn-separator"></span>
95
+ <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>
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
  <?php
100
  $package_url = admin_url('admin.php?page=duplicator&tab=new1');
101
  $package_nonce_url = wp_nonce_url($package_url, 'new1-package');
151
  <table class="widefat dup-pack-table">
152
  <thead>
153
  <tr>
154
+ <th style="width: 30px;">
155
+ <input type="checkbox" id="dup-bulk-action-all" title="<?php esc_attr_e("Select all packages", 'duplicator') ?>" style="margin-left:12px" onclick="Duplicator.Pack.SetDeleteAll()" />
156
+ </th>
157
  <th style="width: 100px;" ><?php esc_html_e("Created", 'duplicator') ?></th>
158
  <th style="width: 70px;"><?php esc_html_e("Size", 'duplicator') ?></th>
159
+ <th style="min-width: 70px;"><?php esc_html_e("Name", 'duplicator') ?></th>
160
  <th class="inst-name">
161
  <?php esc_html_e("Installer Name", 'duplicator'); ?>
162
  <i class="fas fa-question-circle fa-sm"
207
  if ($Package->Status >= 100 || $is_running_package) :
208
  ?>
209
  <tr class="dup-pack-info <?php echo esc_attr($css_alt); ?> <?php echo $is_running_package ? 'is-running' : ''; ?>">
210
+ <td><input name="delete_confirm" type="checkbox" id="<?php echo absint($Package->ID); ?>" /></td>
211
  <td>
212
  <?php
213
  echo DUP_Package::getCreatedDateFormat($Package->Created, DUP_Settings::get_create_date_format());
262
  $error_url = "?page=duplicator&action=detail&tab=detail&id={$Package->ID}";
263
  ?>
264
  <tr class="dup-pack-info <?php echo esc_attr($css_alt); ?>">
265
+ <td><input name="delete_confirm" type="checkbox" id="<?php echo absint($Package->ID); ?>" /></td>
266
  <td><?php echo DUP_Package::getCreatedDateFormat($Package->Created, DUP_Settings::get_create_date_format()); ?></td>
267
  <td class="pack-size"><?php echo DUP_Util::byteSize($pack_archive_size); ?></td>
268
  <td class='pack-name'><?php echo esc_html($pack_name); ?></td>
269
+ <td>&nbsp;</td>
270
  <td class="get-btns error-msg" colspan="3">
271
+ <i class="fa fa-exclamation-triangle fa-sm"></i>
272
+ <a href="<?php echo esc_url($error_url); ?>"><?php esc_html_e("Error Processing", 'duplicator') ?></a>
 
 
 
 
 
273
  </td>
274
  </tr>
275
  <?php endif; ?>
views/packages/main/s1.setup1.php CHANGED
@@ -59,19 +59,17 @@ TOOL BAR: STEPS -->
59
  <td style="white-space: nowrap">
60
  <div id="dup-wiz">
61
  <div id="dup-wiz-steps">
62
- <div class="active-step"><a>1-<?php esc_html_e('Setup', 'duplicator'); ?></a></div>
63
- <div><a>2-<?php esc_html_e('Scan', 'duplicator'); ?> </a></div>
64
- <div><a>3-<?php esc_html_e('Build', 'duplicator'); ?> </a></div>
65
  </div>
66
- <div id="dup-wiz-title">
67
- <?php esc_html_e('Step 1: Package Setup', 'duplicator'); ?>
68
- </div>
69
- </div>
70
- </td>
71
- <td>
72
- <a href="?page=duplicator" class="button"><i class="fa fa-archive fa-sm"></i> <?php esc_html_e("Packages", 'duplicator'); ?></a>
73
- <a href="javascript:void(0)" class="button disabled"> <?php esc_html_e("Create New", 'duplicator'); ?></a>
74
  </td>
 
75
  </tr>
76
  </table>
77
  <hr class="dup-toolbar-line">
59
  <td style="white-space: nowrap">
60
  <div id="dup-wiz">
61
  <div id="dup-wiz-steps">
62
+ <div class="active-step"><a>1 <?php esc_html_e('Setup', 'duplicator'); ?></a></div>
63
+ <div><a>2 <?php esc_html_e('Scan', 'duplicator'); ?> </a></div>
64
+ <div><a>3 <?php esc_html_e('Build', 'duplicator'); ?> </a></div>
65
  </div>
66
+ </div>
67
+ <div id="dup-wiz-title" class="dup-guide-txt-color">
68
+ <i class="fab fa-wordpress"></i>
69
+ <?php esc_html_e('Step 1: Choose the WordPress contents to backup.', 'duplicator'); ?>
70
+ </div>
 
 
 
71
  </td>
72
+ <td>&nbsp;</td>
73
  </tr>
74
  </table>
75
  <hr class="dup-toolbar-line">
views/packages/main/s1.setup2.php CHANGED
@@ -13,7 +13,9 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
13
  div.dup-notes-add {float:right; margin:-4px 2px 4px 0;}
14
  div#dup-notes-area {display:none}
15
  input#package-name {padding:4px; height: 2em; font-size: 1.2em; line-height: 100%; width: 100%; margin: 0 0 3px;}
16
- label.lbl-larger {font-size:1.2em}
 
 
17
  /*ARCHIVE SECTION*/
18
  form#dup-form-opts div.tabs-panel{max-height:800px; padding:10px; min-height:280px}
19
  form#dup-form-opts ul li.tabs{font-weight:bold}
@@ -28,6 +30,7 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
28
  form#dup-form-opts textarea#filter-files {height:85px}
29
  div.dup-quick-links {font-size:11px; float:right; display:inline-block; margin-top:2px; font-style:italic}
30
  div.dup-tabs-opts-help {font-style:italic; font-size:11px; margin:10px 0 0 10px; color:#777}
 
31
  /* Tab: Database */
32
  table#dup-dbtables td {padding:1px 7px 1px 4px}
33
  label.core-table {color:#9A1E26;font-style:italic;font-weight:bold}
@@ -94,21 +97,31 @@ STORAGE -->
94
  <div class="dup-box-arrow"></div>
95
  </div>
96
  <div class="dup-box-panel" id="dup-pack-storage-panel" style="<?php echo esc_html($ui_css_storage); ?>">
97
- <div style="text-align: right; padding:0 5px 3px 0">
98
- <a href="admin.php?page=duplicator-settings&tab=storage"><?php esc_html_e("[Storage Options]", 'duplicator'); ?> </a>
 
 
 
 
 
99
  </div>
 
100
  <table class="widefat package-tbl" style="margin-bottom:15px" >
101
  <thead>
102
  <tr>
 
103
  <th style='width:200px'><?php esc_html_e("Name", 'duplicator'); ?></th>
104
  <th style='width:100px'><?php esc_html_e("Type", 'duplicator'); ?></th>
105
  <th style="white-space:nowrap"><?php esc_html_e("Location", 'duplicator'); ?></th>
106
  </tr>
107
  </thead>
108
  <tbody>
109
- <tr class="package-row">
 
 
 
110
  <td>
111
- <i class="fa fa-server"></i>&nbsp;<?php esc_html_e('Default', 'duplicator');?>
112
  <i>
113
  <?php
114
  if ($storage_position === DUP_Settings::STORAGE_POSITION_LECAGY) {
@@ -119,24 +132,25 @@ STORAGE -->
119
  ?>
120
  </i>
121
  </td>
122
- <td><?php esc_html_e("Local", 'duplicator'); ?></td>
123
  <td><?php echo DUP_Settings::getSsdirPath(); ?></td>
124
  </tr>
125
  <tr>
126
- <td colspan="4" style="padding:7px 0 7px 7px">
127
  <div class="dup-store-pro">
128
  <span class="dup-pro-text">
129
- <img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/amazon-64.png"); ?>" />
130
- <img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/dropbox-64.png"); ?>" />
131
- <img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/google_drive_64px.png"); ?>" />
132
- <img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/onedrive-48px.png"); ?>" />
133
- <img src="<?php echo esc_url(DUPLICATOR_PLUGIN_URL."assets/img/ftp-64.png"); ?>" />
134
- <?php echo sprintf(__('%1$s, %2$s, %3$s, %4$s, %5$s and other storage options available in', 'duplicator'), 'Amazon', 'Dropbox', 'Google Drive', 'OneDrive', 'FTP/SFTP'); ?>
135
- <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_storage&utm_campaign=duplicator_pro" target="_blank"><?php esc_html_e('Duplicator Pro', 'duplicator');?></a>
136
- <i class="far fa-lightbulb"
 
137
  data-tooltip-title="<?php esc_attr_e("Additional Storage:", 'duplicator'); ?>"
138
- data-tooltip="<?php esc_attr_e('Duplicator Pro allows you to create a package and then store it at a custom location on this server or to a cloud '
139
- . 'based location such as Google Drive, Amazon, Dropbox or FTP.', 'duplicator'); ?>">
140
  </i>
141
  </span>
142
  </div>
@@ -204,9 +218,9 @@ ARCHIVE -->
204
  ?>
205
  </label>
206
  <div class='dup-quick-links'>
207
- <a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo duplicator_get_abs_path(); ?>')">[<?php esc_html_e("root path", 'duplicator') ?>]</a>
208
- <a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo rtrim($upload_dir, '/'); ?>')">[<?php esc_html_e("wp-uploads", 'duplicator') ?>]</a>
209
- <a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo DUP_Util::safePath(WP_CONTENT_DIR); ?>/cache')">[<?php esc_html_e("cache", 'duplicator') ?>]</a>
210
  <a href="javascript:void(0)" onclick="jQuery('#filter-dirs').val('')"><?php esc_html_e("(clear)", 'duplicator') ?></a>
211
  </div>
212
  <textarea name="filter-dirs" id="filter-dirs" placeholder="/full_path/exclude_path1;/full_path/exclude_path2;"><?php echo str_replace(";", ";\n", esc_textarea($Package->Archive->FilterDirs)) ?></textarea><br/>
@@ -226,7 +240,7 @@ ARCHIVE -->
226
  ?>
227
  </label>
228
  <div class='dup-quick-links'>
229
- <a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludeFilePath('<?php echo duplicator_get_abs_path(); ?>')"><?php esc_html_e("(file path)", 'duplicator') ?></a>
230
  <a href="javascript:void(0)" onclick="jQuery('#filter-files').val('')"><?php esc_html_e("(clear)", 'duplicator') ?></a>
231
  </div>
232
  <textarea name="filter-files" id="filter-files" placeholder="/full_path/exclude_file_1.ext;/full_path/exclude_file2.ext"><?php echo str_replace(";", ";\n", esc_textarea($Package->Archive->FilterFiles)) ?></textarea>
@@ -402,6 +416,9 @@ INSTALLER -->
402
  <div class="dup-box-panel" id="dup-pack-installer-panel" style="<?php echo esc_html($ui_css_installer); ?>">
403
 
404
  <div class="dup-installer-panel-optional">
 
 
 
405
  <b><?php esc_html_e('All values in this section are', 'duplicator'); ?> <u><?php esc_html_e('optional', 'duplicator'); ?></u></b>
406
  <i class="fas fa-question-circle fa-sm"
407
  data-tooltip-title="<?php esc_attr_e("Setup/Prefills", 'duplicator'); ?>"
13
  div.dup-notes-add {float:right; margin:-4px 2px 4px 0;}
14
  div#dup-notes-area {display:none}
15
  input#package-name {padding:4px; height: 2em; font-size: 1.2em; line-height: 100%; width: 100%; margin: 0 0 3px;}
16
+ tr.dup-store-path td {padding:14px}
17
+ label.lbl-larger {font-size:1.2em}
18
+
19
  /*ARCHIVE SECTION*/
20
  form#dup-form-opts div.tabs-panel{max-height:800px; padding:10px; min-height:280px}
21
  form#dup-form-opts ul li.tabs{font-weight:bold}
30
  form#dup-form-opts textarea#filter-files {height:85px}
31
  div.dup-quick-links {font-size:11px; float:right; display:inline-block; margin-top:2px; font-style:italic}
32
  div.dup-tabs-opts-help {font-style:italic; font-size:11px; margin:10px 0 0 10px; color:#777}
33
+
34
  /* Tab: Database */
35
  table#dup-dbtables td {padding:1px 7px 1px 4px}
36
  label.core-table {color:#9A1E26;font-style:italic;font-weight:bold}
97
  <div class="dup-box-arrow"></div>
98
  </div>
99
  <div class="dup-box-panel" id="dup-pack-storage-panel" style="<?php echo esc_html($ui_css_storage); ?>">
100
+ <div style="padding:0 5px 3px 0">
101
+ <span class="dup-guide-txt-color">
102
+ <?php esc_html_e("This is the storage location on this server where the archive and installer files will be saved.", 'duplicator'); ?>
103
+ </span>
104
+ <div style="float:right">
105
+ <a href="admin.php?page=duplicator-settings&tab=storage"><?php esc_html_e("[Storage Options]", 'duplicator'); ?> </a>
106
+ </div>
107
  </div>
108
+
109
  <table class="widefat package-tbl" style="margin-bottom:15px" >
110
  <thead>
111
  <tr>
112
+ <th style='width:30px'></th>
113
  <th style='width:200px'><?php esc_html_e("Name", 'duplicator'); ?></th>
114
  <th style='width:100px'><?php esc_html_e("Type", 'duplicator'); ?></th>
115
  <th style="white-space:nowrap"><?php esc_html_e("Location", 'duplicator'); ?></th>
116
  </tr>
117
  </thead>
118
  <tbody>
119
+ <tr class="dup-store-path">
120
+ <td>
121
+ <input type="checkbox" checked="checked" disabled="disabled" style="margin-top:-2px"/>
122
+ </td>
123
  <td>
124
+ <?php esc_html_e('Default', 'duplicator');?>
125
  <i>
126
  <?php
127
  if ($storage_position === DUP_Settings::STORAGE_POSITION_LECAGY) {
132
  ?>
133
  </i>
134
  </td>
135
+ <td><i class="fas fa-server fa-fw"></i> <?php esc_html_e("Local", 'duplicator'); ?></td>
136
  <td><?php echo DUP_Settings::getSsdirPath(); ?></td>
137
  </tr>
138
  <tr>
139
+ <td colspan="4" class="dup-store-promo-area">
140
  <div class="dup-store-pro">
141
  <span class="dup-pro-text">
142
+ <?php echo sprintf(__('Back up this site to %1$s, %2$s, %3$s, %4$s, %5$s and other locations with ', 'duplicator'),
143
+ '<i class="fab fa-aws fa-fw"></i>&nbsp;' .'Amazon',
144
+ '<i class="fab fa-dropbox fa-fw"></i>&nbsp;' . 'Dropbox',
145
+ '<i class="fab fa-google-drive fa-fw"></i>&nbsp;' . 'Google Drive',
146
+ '<i class="fas fa-cloud fa-fw"></i>&nbsp;' . 'OneDrive',
147
+ '<i class="fas fa-network-wired fa-fw"></i>&nbsp;' . 'FTP/SFTP');
148
+ ?>
149
+ <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_storage_bw&utm_campaign=duplicator_pro" target="_blank"><?php esc_html_e('Duplicator Pro', 'duplicator');?></a>
150
+ <i class="fas fa-question-circle"
151
  data-tooltip-title="<?php esc_attr_e("Additional Storage:", 'duplicator'); ?>"
152
+ data-tooltip="<?php esc_attr_e('Duplicator Pro allows you to create a package and store it at a custom location on this server or to a remote '
153
+ . 'cloud location such as Google Drive, Amazon, Dropbox and many more.', 'duplicator'); ?>">
154
  </i>
155
  </span>
156
  </div>
218
  ?>
219
  </label>
220
  <div class='dup-quick-links'>
221
+ <a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo esc_js(duplicator_get_abs_path()); ?>')">[<?php esc_html_e("root path", 'duplicator') ?>]</a>
222
+ <a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo esc_js(rtrim($upload_dir, '/')); ?>')">[<?php esc_html_e("wp-uploads", 'duplicator') ?>]</a>
223
+ <a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludePath('<?php echo esc_js(DUP_Util::safePath(WP_CONTENT_DIR)); ?>/cache')">[<?php esc_html_e("cache", 'duplicator') ?>]</a>
224
  <a href="javascript:void(0)" onclick="jQuery('#filter-dirs').val('')"><?php esc_html_e("(clear)", 'duplicator') ?></a>
225
  </div>
226
  <textarea name="filter-dirs" id="filter-dirs" placeholder="/full_path/exclude_path1;/full_path/exclude_path2;"><?php echo str_replace(";", ";\n", esc_textarea($Package->Archive->FilterDirs)) ?></textarea><br/>
240
  ?>
241
  </label>
242
  <div class='dup-quick-links'>
243
+ <a href="javascript:void(0)" onclick="Duplicator.Pack.AddExcludeFilePath('<?php echo esc_js(duplicator_get_abs_path()); ?>')"><?php esc_html_e("(file path)", 'duplicator') ?></a>
244
  <a href="javascript:void(0)" onclick="jQuery('#filter-files').val('')"><?php esc_html_e("(clear)", 'duplicator') ?></a>
245
  </div>
246
  <textarea name="filter-files" id="filter-files" placeholder="/full_path/exclude_file_1.ext;/full_path/exclude_file2.ext"><?php echo str_replace(";", ";\n", esc_textarea($Package->Archive->FilterFiles)) ?></textarea>
416
  <div class="dup-box-panel" id="dup-pack-installer-panel" style="<?php echo esc_html($ui_css_installer); ?>">
417
 
418
  <div class="dup-installer-panel-optional">
419
+ <span class="dup-guide-txt-color">
420
+ <?php esc_html_e("The installer file is used to redeploy/install the archive contents.", 'duplicator'); ?>
421
+ </span><br/>
422
  <b><?php esc_html_e('All values in this section are', 'duplicator'); ?> <u><?php esc_html_e('optional', 'duplicator'); ?></u></b>
423
  <i class="fas fa-question-circle fa-sm"
424
  data-tooltip-title="<?php esc_attr_e("Setup/Prefills", 'duplicator'); ?>"
views/packages/main/s2.scan1.php CHANGED
@@ -38,7 +38,7 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
38
  form#form-duplicator {text-align:center; max-width:750px; min-height:200px; margin:0px auto 0px auto; padding:0px;}
39
  div.dup-progress-title {font-size:22px; padding:5px 0 20px 0; font-weight:bold}
40
  div#dup-msg-success {padding:0 5px 5px 5px; text-align:left}
41
- div#dup-msg-success div.details {padding:10px 15px 10px 15px; margin:5px 0 15px 0; background:#fff; border-radius:5px; border:1px solid #ddd; box-shadow:0 8px 6px -6px #999; }
42
  div#dup-msg-success div.details-title {font-size:20px; border-bottom:1px solid #dfdfdf; padding:5px; margin:0 0 10px 0; font-weight:bold}
43
  div#dup-msg-success-subtitle {color:#999; margin:0; font-size:11px}
44
  div.dup-scan-filter-status {display:inline; font-size:11px; margin-right:10px; color:#630f0f;}
@@ -50,9 +50,10 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
50
  /*SCAN ITEMS: Sections */
51
  div.scan-header { font-size:16px; padding:7px 5px 7px 7px; font-weight:bold; background-color:#E0E0E0; border-bottom:0px solid #C0C0C0 }
52
  div.scan-header-details {float:right; margin-top:-5px}
53
- div.scan-item {border:1px solid #E0E0E0; border-bottom:none;}
54
- div.scan-item-first { border-top-right-radius:4px; border-top-left-radius:4px}
55
- div.scan-item-last {border-bottom:1px solid #E0E0E0}
 
56
  div.scan-item div.title {background-color:#F1F1F1; width:100%; padding:8px 0 8px 0; cursor:pointer; height:20px;}
57
  div.scan-item div.title:hover {background-color:#ECECEC;}
58
  div.scan-item div.text {font-weight:bold; font-size:14px; float:left; position:relative; left:10px}
@@ -67,6 +68,9 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
67
  div.dup-more-details a:hover {color:#777; cursor:pointer}
68
  div.dup-more-details:hover {color:#777; cursor:pointer}
69
 
 
 
 
70
  /*FILES */
71
  div#data-arc-size1 {display:inline-block; font-size:11px; margin-right:1px;}
72
  sup.dup-small-ext-type {font-size:11px; font-weight: normal; font-style: italic}
@@ -172,19 +176,17 @@ TOOL BAR:STEPS -->
172
  <td style="white-space:nowrap">
173
  <div id="dup-wiz">
174
  <div id="dup-wiz-steps">
175
- <div class="completed-step"><a>1-<?php esc_html_e('Setup', 'duplicator'); ?></a></div>
176
- <div class="active-step"><a>2-<?php esc_html_e('Scan', 'duplicator'); ?> </a></div>
177
- <div><a>3-<?php esc_html_e('Build', 'duplicator'); ?> </a></div>
178
  </div>
179
- <div id="dup-wiz-title">
180
- <?php esc_html_e('Step 2: System Scan', 'duplicator'); ?>
181
- </div>
 
182
  </div>
183
  </td>
184
- <td>
185
- <a href="?page=duplicator" class="button"><i class="fa fa-archive fa-sm"></i> <?php esc_html_e('Packages', 'duplicator'); ?></a>
186
- <a href="javascript:void(0)" class="button disabled"> <?php esc_html_e("Create New", 'duplicator'); ?></a>
187
- </td>
188
  </tr>
189
  </table>
190
  <hr class="dup-toolbar-line">
@@ -220,7 +222,7 @@ TOOL BAR:STEPS -->
220
  <div style="text-align:center">
221
  <div class="dup-hdr-success"><i class="far fa-check-square fa-lg"></i> <?php esc_html_e('Scan Complete', 'duplicator'); ?></div>
222
  <div id="dup-msg-success-subtitle">
223
- <?php esc_html_e('Process Time:', 'duplicator'); ?> <span id="data-rpt-scantime"></span>
224
  </div>
225
  </div>
226
 
@@ -420,7 +422,7 @@ jQuery(document).ready(function($)
420
  html_msg += '<li><?php esc_html_e("- On some budget hosts scanning over 30k files can lead to timeout/gateway issues. Consider scanning only your main WordPress site and avoid trying to backup other external directories.", 'duplicator') ?></li>';
421
  html_msg += '<li><?php esc_html_e("- Symbolic link recursion can cause timeouts. Ask your server admin if any are present in the scan path. If they are add the full path as a filter and try running the scan again.", 'duplicator') ?></li>';
422
  html_msg += '</ul>';
423
- $('#dup-msg-error-response-status').html('Scan Path Error [<?php echo duplicator_get_abs_path(); ?>]');
424
  $('#dup-msg-error-response-text').html(html_msg);
425
  $('#dup-msg-error').show(200);
426
  }
38
  form#form-duplicator {text-align:center; max-width:750px; min-height:200px; margin:0px auto 0px auto; padding:0px;}
39
  div.dup-progress-title {font-size:22px; padding:5px 0 20px 0; font-weight:bold}
40
  div#dup-msg-success {padding:0 5px 5px 5px; text-align:left}
41
+ div#dup-msg-success div.details {padding:10px 15px 10px 15px; margin:5px 0 15px 0; background:#fff; border-radius:3px; border:1px solid #ddd; box-shadow:0 8px 6px -6px #999; }
42
  div#dup-msg-success div.details-title {font-size:20px; border-bottom:1px solid #dfdfdf; padding:5px; margin:0 0 10px 0; font-weight:bold}
43
  div#dup-msg-success-subtitle {color:#999; margin:0; font-size:11px}
44
  div.dup-scan-filter-status {display:inline; font-size:11px; margin-right:10px; color:#630f0f;}
50
  /*SCAN ITEMS: Sections */
51
  div.scan-header { font-size:16px; padding:7px 5px 7px 7px; font-weight:bold; background-color:#E0E0E0; border-bottom:0px solid #C0C0C0 }
52
  div.scan-header-details {float:right; margin-top:-5px}
53
+ div.scan-item {border:1px solid #E0E0E0; border-top:none;}
54
+ div.scan-item-first {
55
+ border-top:1px solid #E0E0E0
56
+ }
57
  div.scan-item div.title {background-color:#F1F1F1; width:100%; padding:8px 0 8px 0; cursor:pointer; height:20px;}
58
  div.scan-item div.title:hover {background-color:#ECECEC;}
59
  div.scan-item div.text {font-weight:bold; font-size:14px; float:left; position:relative; left:10px}
68
  div.dup-more-details a:hover {color:#777; cursor:pointer}
69
  div.dup-more-details:hover {color:#777; cursor:pointer}
70
 
71
+ div.help-tab-content span.badge-pass{display:inline-block; border-radius:4px; color:#fff; min-width:40px; text-align:center;padding:0 3px 1px 3px; background: #197b19; margin-top:4px}
72
+ div.help-tab-content span.badge-warn{display:inline-block; border-radius:4px; color:#fff; min-width:40px; text-align:center;padding:0 3px 1px 3px; background: #636363; margin-top:4px}
73
+
74
  /*FILES */
75
  div#data-arc-size1 {display:inline-block; font-size:11px; margin-right:1px;}
76
  sup.dup-small-ext-type {font-size:11px; font-weight: normal; font-style: italic}
176
  <td style="white-space:nowrap">
177
  <div id="dup-wiz">
178
  <div id="dup-wiz-steps">
179
+ <div class="completed-step"><a>1 <?php esc_html_e('Setup', 'duplicator'); ?></a></div>
180
+ <div class="active-step"><a>2 <?php esc_html_e('Scan', 'duplicator'); ?> </a></div>
181
+ <div><a>3 <?php esc_html_e('Build', 'duplicator'); ?> </a></div>
182
  </div>
183
+ <div id="dup-wiz-title" class="dup-guide-txt-color">
184
+ <i class="fab fa-wordpress"></i>
185
+ <?php esc_html_e('Step 2: Scan site for configuration &amp; system notices.', 'duplicator'); ?>
186
+ </div>
187
  </div>
188
  </td>
189
+ <td>&nbsp;</td>
 
 
 
190
  </tr>
191
  </table>
192
  <hr class="dup-toolbar-line">
222
  <div style="text-align:center">
223
  <div class="dup-hdr-success"><i class="far fa-check-square fa-lg"></i> <?php esc_html_e('Scan Complete', 'duplicator'); ?></div>
224
  <div id="dup-msg-success-subtitle">
225
+ <?php esc_html_e('Scan Time:', 'duplicator'); ?> <span id="data-rpt-scantime"></span>
226
  </div>
227
  </div>
228
 
422
  html_msg += '<li><?php esc_html_e("- On some budget hosts scanning over 30k files can lead to timeout/gateway issues. Consider scanning only your main WordPress site and avoid trying to backup other external directories.", 'duplicator') ?></li>';
423
  html_msg += '<li><?php esc_html_e("- Symbolic link recursion can cause timeouts. Ask your server admin if any are present in the scan path. If they are add the full path as a filter and try running the scan again.", 'duplicator') ?></li>';
424
  html_msg += '</ul>';
425
+ $('#dup-msg-error-response-status').html('Scan Path Error [<?php echo esc_js(duplicator_get_abs_path()); ?>]');
426
  $('#dup-msg-error-response-text').html(html_msg);
427
  $('#dup-msg-error').show(200);
428
  }
views/packages/main/s2.scan2.php CHANGED
@@ -2,7 +2,7 @@
2
  defined('ABSPATH') || defined('DUPXABSPATH') || exit;
3
  ?>
4
  <!-- ================================================================
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">
@@ -12,8 +12,8 @@ SERVER -->
12
  </div>
13
 
14
  <!-- ============
15
- PHP SETTINGS -->
16
- <div class="scan-item">
17
 
18
  <?php
19
 
@@ -116,7 +116,7 @@ PHP SETTINGS -->
116
 
117
  <!-- ============
118
  WP SETTINGS -->
119
- <div class="scan-item scan-item-last">
120
 
121
 
122
  <div class="title" onclick="Duplicator.Pack.toggleScanItem(this);">
2
  defined('ABSPATH') || defined('DUPXABSPATH') || exit;
3
  ?>
4
  <!-- ================================================================
5
+ SETUP -->
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">
12
  </div>
13
 
14
  <!-- ============
15
+ SYSTEM AND WORDPRESS -->
16
+ <div class="scan-item scan-item-first">
17
 
18
  <?php
19
 
116
 
117
  <!-- ============
118
  WP SETTINGS -->
119
+ <div class="scan-item">
120
 
121
 
122
  <div class="title" onclick="Duplicator.Pack.toggleScanItem(this);">
views/packages/main/s2.scan3.php CHANGED
@@ -6,7 +6,7 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
6
  $txt = __('Root Path', 'duplicator');
7
  $root = duplicator_get_abs_path();
8
  $sroot = strlen($root) > 50 ? substr($root, 0, 50) . '...' : $root;
9
- echo "<div title='{$root}' class='divider'><i class='fa fa-folder-open'></i> {$sroot}</div>";
10
  }
11
 
12
  $archive_type_label = DUP_Settings::Get('archive_build_mode') == DUP_Archive_Build_Mode::ZipArchive ? "ZipArchive" : "DupArchive";
@@ -57,7 +57,8 @@ if ($Package->Archive->ExportOnlyDB) { ?>
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">
60
- <?php esc_html_e("Only the database and a copy of the installer.php will be included in the archive.zip file.", 'duplicator'); ?>
 
61
  </div>
62
  </div>
63
  <?php
@@ -314,7 +315,7 @@ FILE NAME CHECKS -->
314
  </div>
315
  <!-- ======================
316
  UNREADABLE FILES -->
317
- <div id="scan-unreadable-items" class="scan-item scan-item-last">
318
  <div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
319
  <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Read Checks');?></div>
320
  <div id="data-arc-status-unreadablefiles"></div>
@@ -359,7 +360,7 @@ UNREADABLE FILES -->
359
 
360
  <!-- ======================
361
  Restore only package -->
362
- <div id="migratepackage-block" class="scan-item scan-item-last">
363
  <div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
364
  <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Migration Status', 'duplicator');?></div>
365
  <div id="data-arc-status-migratepackage"></div>
@@ -410,7 +411,7 @@ DATABASE -->
410
  </div>
411
  </div>
412
 
413
- <div class="scan-item scan-item-last">
414
  <div class="title" onclick="Duplicator.Pack.toggleScanItem(this);">
415
  <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Overview', 'duplicator');?></div>
416
  <div id="data-db-status-size"></div>
@@ -457,7 +458,7 @@ DATABASE -->
457
  <?php
458
  $triggers = $GLOBALS['wpdb']->get_col("SHOW TRIGGERS", 1);
459
  if (count($triggers)) { ?>
460
- <div class="scan-item scan-item-last">
461
  <div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
462
  <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Triggers', 'duplicator');?></div>
463
  <div id="data-arc-status-triggers"></div>
@@ -484,7 +485,7 @@ DATABASE -->
484
  $procedures = $GLOBALS['wpdb']->get_col("SHOW PROCEDURE STATUS WHERE `Db` = '{$GLOBALS['wpdb']->dbname}'", 1);
485
  $functions = $GLOBALS['wpdb']->get_col("SHOW FUNCTION STATUS WHERE `Db` = '{$GLOBALS['wpdb']->dbname}'", 1);
486
  if (count($procedures) || count($functions)) { ?>
487
- <div id="showcreateprocfunc-block" class="scan-item scan-item-last">
488
  <div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
489
  <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Object Access', 'duplicator');?></div>
490
  <div id="data-arc-status-showcreateprocfunc"></div>
@@ -527,7 +528,7 @@ DATABASE -->
527
  </div>
528
  </div>
529
 
530
- <div class="data-ll-section scan-item scan-item-last" style="display: none">
531
  <div style="padding: 7px; background-color:#F3B2B7; font-weight: bold ">
532
  <?php
533
  printf(__('The build can\'t continue because the total size of files and the database exceeds the %s limit that can be processed when creating a DupArchive package. ', 'duplicator'), $duparchive_max_limit);
@@ -735,7 +736,7 @@ jQuery(document).ready(function($)
735
  {
736
 
737
  Handlebars.registerHelper('stripWPRoot', function(path) {
738
- return path.replace('<?php echo duplicator_get_abs_path(); ?>', '');
739
  });
740
 
741
  //Uncheck file names if directory is checked
6
  $txt = __('Root Path', 'duplicator');
7
  $root = duplicator_get_abs_path();
8
  $sroot = strlen($root) > 50 ? substr($root, 0, 50) . '...' : $root;
9
+ echo "<div title=".str_replace('\\/', '/', json_encode($root))." class='divider'><i class='fa fa-folder-open'></i> {$sroot}</div>";
10
  }
11
 
12
  $archive_type_label = DUP_Settings::Get('archive_build_mode') == DUP_Archive_Build_Mode::ZipArchive ? "ZipArchive" : "DupArchive";
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">
60
+ <?php esc_html_e("Only the database and a copy of the installer will be included in the archive file. This notice simply indicates that the package "
61
+ . "will not be capable of restoring a full WordPress site, but only the database. If this is the desired intention then this notice can be ignored.", 'duplicator'); ?>
62
  </div>
63
  </div>
64
  <?php
315
  </div>
316
  <!-- ======================
317
  UNREADABLE FILES -->
318
+ <div id="scan-unreadable-items" class="scan-item">
319
  <div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
320
  <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Read Checks');?></div>
321
  <div id="data-arc-status-unreadablefiles"></div>
360
 
361
  <!-- ======================
362
  Restore only package -->
363
+ <div id="migratepackage-block" class="scan-item">
364
  <div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
365
  <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Migration Status', 'duplicator');?></div>
366
  <div id="data-arc-status-migratepackage"></div>
411
  </div>
412
  </div>
413
 
414
+ <div class="scan-item">
415
  <div class="title" onclick="Duplicator.Pack.toggleScanItem(this);">
416
  <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Overview', 'duplicator');?></div>
417
  <div id="data-db-status-size"></div>
458
  <?php
459
  $triggers = $GLOBALS['wpdb']->get_col("SHOW TRIGGERS", 1);
460
  if (count($triggers)) { ?>
461
+ <div class="scan-item">
462
  <div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
463
  <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Triggers', 'duplicator');?></div>
464
  <div id="data-arc-status-triggers"></div>
485
  $procedures = $GLOBALS['wpdb']->get_col("SHOW PROCEDURE STATUS WHERE `Db` = '{$GLOBALS['wpdb']->dbname}'", 1);
486
  $functions = $GLOBALS['wpdb']->get_col("SHOW FUNCTION STATUS WHERE `Db` = '{$GLOBALS['wpdb']->dbname}'", 1);
487
  if (count($procedures) || count($functions)) { ?>
488
+ <div id="showcreateprocfunc-block" class="scan-item">
489
  <div class='title' onclick="Duplicator.Pack.toggleScanItem(this);">
490
  <div class="text"><i class="fa fa-caret-right"></i> <?php esc_html_e('Object Access', 'duplicator');?></div>
491
  <div id="data-arc-status-showcreateprocfunc"></div>
528
  </div>
529
  </div>
530
 
531
+ <div class="data-ll-section scan-item" style="display: none">
532
  <div style="padding: 7px; background-color:#F3B2B7; font-weight: bold ">
533
  <?php
534
  printf(__('The build can\'t continue because the total size of files and the database exceeds the %s limit that can be processed when creating a DupArchive package. ', 'duplicator'), $duparchive_max_limit);
736
  {
737
 
738
  Handlebars.registerHelper('stripWPRoot', function(path) {
739
+ return path.replace(<?php echo str_replace('\\/', '/', json_encode(duplicator_get_abs_path())); ?>, '');
740
  });
741
 
742
  //Uncheck file names if directory is checked
views/packages/main/s3.build.php CHANGED
@@ -20,88 +20,109 @@ $atext1 = __('Want more power? Try', 'duplicator');
20
  $atext1 .= "&nbsp;<a target='_blank' href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_build_more_power&utm_campaign=duplicator_pro'>";
21
  $atext1 .= __('Duplicator Pro', 'duplicator').'</a>!';
22
 
 
 
 
 
 
 
 
 
 
23
  $rand_txt = array();
24
  $rand_txt[0] = $atext0;
 
25
  ?>
26
 
27
  <style>
28
  a#dup-create-new {margin-left:-5px}
29
- div#dup-progress-area {text-align:center; max-width:800px; min-height:200px; border:1px solid silver; border-radius:5px; margin:25px auto 10px auto; padding:0px; box-shadow: 0 8px 6px -6px #999;}
30
- div.dup-progress-title {font-size:22px;padding:5px 0 20px 0; font-weight: bold}
31
  div#dup-progress-area div.inner {padding:10px; line-height:22px}
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;}
40
  div#dup-progress-area div.done-title {font-size:18px; font-weight:bold; margin:0px 0px 10px 0px}
41
- div#dup-progress-area div.dup-panel-title {background-color: #dfdfdf;}
42
- div.hdr-pack-complete {font-size:18px; color:green; font-weight: bold}
43
-
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}
51
- div.one-click-download i.fa-bolt{padding-right: 5px}
52
- div.one-click-download i.fa-file-archive-o{padding-right: 5px}
 
53
 
54
  div.dup-button-footer {text-align:right; margin:20px 10px 0px 0px}
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;}
65
- div.dup-box-title {text-align: left; background-color:#F6F6F6}
66
  div.dup-box-title:hover { background-color:#efefef}
67
- div.dup-box-panel {text-align: left}
68
- div.no-top {border-top: none}
69
  div.dup-box-panel b.opt-title {font-size:18px}
70
- div.dup-msg-error-area {overflow-y: scroll; padding:5px 15px 15px 15px; max-height:170px; width:95%; border: 1px solid silver; border-radius: 4px; line-height: 22px}
71
  div#dup-logs {text-align:center; margin:auto; padding:5px; width:350px;}
72
  div#dup-logs a {display:inline-block;}
73
- span.sub-data {display: inline-block; padding-left:20px}
74
  </style>
75
 
76
  <!-- =========================================
77
- TOOL BAR: STEPS -->
78
  <table id="dup-toolbar">
79
  <tr valign="top">
80
- <td style="white-space: nowrap">
81
  <div id="dup-wiz">
82
  <div id="dup-wiz-steps">
83
- <div class="completed-step"><a>1-<?php esc_html_e('Setup', 'duplicator'); ?></a></div>
84
- <div class="completed-step"><a>2-<?php esc_html_e('Scan', 'duplicator'); ?> </a></div>
85
- <div class="active-step"><a>3-<?php esc_html_e('Build', 'duplicator'); ?> </a></div>
86
  </div>
87
- <div id="dup-wiz-title">
88
- <?php esc_html_e('Step 3: Build Package', 'duplicator'); ?>
 
89
  </div>
90
  </div>
91
  </td>
92
  <td style="padding-bottom:4px">
93
- <span><a href="?page=duplicator" class="button">
94
- <i class="fa fa-archive fa-sm"></i> <?php esc_html_e("Packages",'duplicator'); ?>
95
- </a></span>
 
 
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
- onClick="return !jQuery(this).hasClass('disabled');"
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>
@@ -130,17 +151,17 @@ TOOL BAR: STEPS -->
130
  SUCCESS MESSAGE -->
131
  <div id="dup-msg-success" style="display:none">
132
  <div class="hdr-pack-complete">
133
- <i class="far fa-check-square fa-lg"></i> <?php esc_html_e('Package Completed', 'duplicator'); ?>
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
- &nbsp; <?php esc_html_e("Download Package Files", 'duplicator') ?> <i class="fa fa-download"></i> &nbsp;
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') ?> &nbsp;
@@ -150,22 +171,36 @@ TOOL BAR: STEPS -->
150
  <span id="dup-btn-archive-size" class="dup-btn-size"></span> &nbsp;
151
  </button>
152
  <div class="one-click-download">
153
- <i class="fa fa-bolt fa-sm"></i><i class="far fa-file-archive"></i>
154
- <a href="javascript:void(0)" id="dup-link-download-both" title="<?php esc_attr_e("Click to download both files", 'duplicator') ?>">
155
- <?php esc_html_e("One-Click Download", 'duplicator') ?>
156
  </a>
157
  <sup>
158
  <i class="fas fa-question-circle fa-sm" style='font-size:11px'
159
- data-tooltip-title="<?php esc_attr_e("One Click:", 'duplicator'); ?>"
160
- data-tooltip="<?php esc_attr_e('Clicking this link will open both the installer and archive download prompts at the same time. '
161
- .'On some browsers you may have to disable pop-up warnings on this domain for this to work correctly.', 'duplicator'); ?>">
 
162
  </i>
163
  </sup>
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>
@@ -174,7 +209,7 @@ TOOL BAR: STEPS -->
174
  if (is_multisite()) {
175
  echo '<div class="dup-no-mu">';
176
  echo '<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>&nbsp;';
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 "&nbsp;<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>.";
@@ -183,20 +218,53 @@ TOOL BAR: STEPS -->
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
- &nbsp; &nbsp;
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">
@@ -212,10 +280,10 @@ TOOL BAR: STEPS -->
212
  <i><?php esc_html_e("To get past this hosts limitation consider the options below by clicking each section.", 'duplicator'); ?></i>
213
  <br/><br/><br/>
214
 
215
- <!-- OPTION 1: Try DupArchive Engine -->
216
  <div class="dup-box">
217
  <div class="dup-box-title">
218
- <span style="width:20px; display:inline-block"><i class="far fa-check-circle"></i></span><?php esc_html_e('Option 1: Try DupArchive', 'duplicator'); ?>
219
  <div class="dup-box-arrow"><i class="fa fa-caret-down"></i></div>
220
  </div>
221
  <div class="dup-box-panel" id="dup-pack-build-try1" style="display:none">
@@ -224,8 +292,8 @@ TOOL BAR: STEPS -->
224
  <?php esc_html_e('Enable the DupArchive format which is specific to Duplicator and designed to perform better on constrained budget hosts.', 'duplicator'); ?>
225
  <br/><br/>
226
 
227
- <div style="font-style: italic">
228
- <?php esc_html_e('Note: DupArchive on Duplicator only supports sites up to 500MB. If your site is over 500MB then use a file filter on step 1 to get the size '
229
  . 'below 500MB or try the other options mentioned below. Alternatively, you may want to consider',
230
  'duplicator'); ?>
231
  <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&amp;utm_medium=wordpress_plugin&amp;utm_content=build_interrupt&amp;utm_campaign=duplicator_pro" target="_blank">
@@ -245,22 +313,21 @@ TOOL BAR: STEPS -->
245
  <li><?php esc_html_e('Build a new package using the new engine format.', 'duplicator'); ?></li>
246
  </ol>
247
 
248
- <small style="font-style: italic">
249
- <?php esc_html_e('Note: The DupArchive engine will generate an archive.daf file. This file is very similar to a .zip except that it can only be extracted by the '
250
  . 'installer.php file or the', 'duplicator'); ?>
251
  <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-trouble-052-q" target="_blank"><?php esc_html_e('commandline extraction tool'); ?></a>.
252
  </small>
253
  </div>
254
  </div>
255
 
256
- <!-- OPTION 2: TRY AGAIN -->
257
  <div class="dup-box no-top">
258
  <div class="dup-box-title">
259
- <span style="width:20px; display:inline-block"><i class="fa fa-filter fa-sm"></i></span><?php esc_html_e('Option 2: File Filters', 'duplicator'); ?>
260
  <div class="dup-box-arrow"><i class="fa fa-caret-down"></i></div>
261
  </div>
262
  <div class="dup-box-panel" id="dup-pack-build-try2" style="display:none">
263
- <!--<b class="opt-title"><?php esc_html_e('OPTION 2:', 'duplicator'); ?></b><br/>-->
264
  <?php
265
  esc_html_e('The first pass for reading files on some budget hosts maybe slow and have conflicts with strict timeout settings setup by the hosting provider. '
266
  . 'In these cases, it is recommended to retry the build by adding file filters to larger files/directories.', 'duplicator');
@@ -271,11 +338,11 @@ TOOL BAR: STEPS -->
271
  . 'If this work-flow is not desired or does not work please check-out the other options below.', 'duplicator');
272
  ?>
273
  <br/><br/>
274
- <div style="text-align: center; margin:10px 0 2px 0">
275
  <input type="button" class="button-large button-primary" value="<?php esc_attr_e('Retry Build With Filters', 'duplicator'); ?>" onclick="window.history.back()" />
276
  </div>
277
 
278
- <div style="color:#777; padding: 15px 5px 5px 5px">
279
  <b> <?php esc_html_e('Notice', 'duplicator'); ?></b><br/>
280
  <?php
281
  printf('<b><i class="fa fa-folder-o"></i> %s %s</b> <br/> %s', esc_html__('Build Folder:'), DUP_Settings::getSsdirTmpPath(),
@@ -288,14 +355,14 @@ TOOL BAR: STEPS -->
288
  </div>
289
  </div>
290
 
291
- <!-- OPTION 3: Two-Part Install -->
292
  <div class="dup-box no-top">
293
  <div class="dup-box-title">
294
- <span style="width:20px; display:inline-block"><i class="fa fa-random"></i></span><?php esc_html_e('Option 3: Two-Part Install', 'duplicator'); ?>
295
  <div class="dup-box-arrow"><i class="fa fa-caret-down"></i></div>
296
  </div>
297
  <div class="dup-box-panel" id="dup-pack-build-try2" style="display:none">
298
- <!-- <b class="opt-title"><?php esc_html_e('OPTION 3:', 'duplicator'); ?></b><br/>-->
299
 
300
  <?php esc_html_e('A two-part install minimizes server load and can avoid I/O and CPU issues encountered on some budget hosts. With this procedure you simply build a '
301
  .'\'database-only\' archive, manually move the website files, and then run the installer to complete the process.', 'duplicator');
@@ -315,7 +382,7 @@ TOOL BAR: STEPS -->
315
  </li>
316
  </ol>
317
 
318
- <div style="text-align: center; margin: 10px">
319
  <input type="checkbox" id="dup-two-part-check" onclick="Duplicator.Pack.ToggleTwoPart()">
320
  <label for="dup-two-part-check"><?php esc_html_e('Yes. I have read the above overview and would like to continue!', 'duplicator'); ?></label><br/><br/>
321
  <button id="dup-two-part-btn" type="button" class="button-large button-primary" disabled="true" onclick="window.location = 'admin.php?page=duplicator&tab=new1&retry=2&_wpnonce=<?php echo $retry_nonuce; ?>'">
@@ -325,10 +392,10 @@ TOOL BAR: STEPS -->
325
  </div>
326
  </div>
327
 
328
- <!-- OPTION 4: DIAGNOSE SERVER -->
329
  <div class="dup-box no-top">
330
  <div class="dup-box-title">
331
- <span style="width:20px; display:inline-block"><i class="fa fa-cog"></i></span><?php esc_html_e('Option 4: Configure Server', 'duplicator'); ?>
332
  <div class="dup-box-arrow"><i class="fa fa-caret-down"></i></div>
333
  </div>
334
  <div class="dup-box-panel" id="dup-pack-build-try3" style="display:none">
@@ -337,7 +404,7 @@ TOOL BAR: STEPS -->
337
  . 'FAQ page that will show various recommendations you can take to improve/unlock constraints set up on this server.', 'duplicator');
338
  ?><br/><br/>
339
 
340
- <div style="text-align: center; margin: 10px; font-size:16px; font-weight: bold">
341
  <a href="https://snapcreek.com/duplicator/docs/faqs-tech/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=host_interupt_diagnosebtn&utm_campaign=build_issues#faq-trouble-100-q" target="_blank">
342
  [<?php esc_html_e('Diagnose Server Setup', 'duplicator'); ?>]
343
  </a>
@@ -366,7 +433,7 @@ TOOL BAR: STEPS -->
366
  <span class="data sub-data">
367
  <span class="label"><?php esc_html_e("Mode", 'duplicator'); ?>:</span>
368
  <?php
369
- $try_update = $try_update ? 'is dynamic' : 'value is fixed';
370
  echo "{$try_update}";
371
  ?>
372
  <i class="fa fa-question-circle data-size-help"
@@ -421,37 +488,37 @@ jQuery(document).ready(function ($)
421
  Duplicator.Pack.StatusFrequency = 8000;
422
 
423
  /* ----------------------------------------
424
- * METHOD: Performs Ajax post to create a new package
425
  * Timeout (10000000 = 166 minutes) */
426
  Duplicator.Pack.CreateZip = function ()
427
  {
428
  var startTime;
429
- var data = {action: 'duplicator_package_build', nonce: '<?php echo esc_js($zip_build_nonce); ?>'}
430
  var statusInterval = setInterval(Duplicator.Pack.GetActivePackageStatus, Duplicator.Pack.StatusFrequency);
431
 
432
  $.ajax({
433
- type: "POST",
434
- cache: false,
435
- dataType: "text",
436
- url: ajaxurl,
437
- timeout: 0, // no timeout
438
- data: data,
439
- beforeSend: function () {
440
  startTime = new Date().getTime();
441
  },
442
- complete: function () {
443
  Duplicator.Pack.PostTransferCleanup(statusInterval, startTime);
444
  },
445
- success: function (respData, textStatus, xHr) {
446
  try {
447
  var data = Duplicator.parseJSON(respData);
448
  } catch(err) {
449
  console.error(err);
450
- console.error('JSON parse failed for response data: ' + respData);
451
  $('#dup-progress-bar-area').hide();
452
  $('#dup-progress-area, #dup-msg-error').show(200);
453
  var status = xHr.status + ' -' + data.statusText;
454
- var response = (xHr.responseText != undefined && xHr.responseText.trim().length > 1) ? xHr.responseText.trim() : 'No client side error - see package log file';
455
  $('#dup-msg-error-response-status span.data').html(status)
456
  $('#dup-msg-error-response-text span.data').html(response);
457
  console.log(xHr);
@@ -461,16 +528,16 @@ jQuery(document).ready(function ($)
461
  if ((data != null) && (typeof (data) != 'undefined') && data.status == 1) {
462
  Duplicator.Pack.WireDownloadLinks(data);
463
  } else {
464
- var message = (typeof (data.error) != 'undefined' && data.error.length) ? data.error : 'Error processing package';
465
  Duplicator.Pack.DupArchiveProcessingFailed(message);
466
  }
467
 
468
  },
469
- error: function (xHr) {
470
  $('#dup-progress-bar-area').hide();
471
  $('#dup-progress-area, #dup-msg-error').show(200);
472
  var status = xHr.status + ' -' + data.statusText;
473
- var response = (xHr.responseText != undefined && xHr.responseText.trim().length > 1) ? xHr.responseText.trim() : 'No client side error - see package log file';
474
  $('#dup-msg-error-response-status span.data').html(status)
475
  $('#dup-msg-error-response-text span.data').html(response);
476
  console.log(xHr);
@@ -480,28 +547,28 @@ jQuery(document).ready(function ($)
480
  }
481
 
482
  /* ----------------------------------------
483
- * METHOD: Performs Ajax post to create a new DupArchive-based package */
484
  Duplicator.Pack.CreateDupArchive = function ()
485
  {
486
  console.log('Duplicator.Pack.CreateDupArchive');
487
- var data = {action: 'duplicator_duparchive_package_build', nonce: '<?php echo esc_js($duparchive_build_nonce); ?>'}
488
  var statusInterval = setInterval(Duplicator.Pack.GetActivePackageStatus, Duplicator.Pack.StatusFrequency);
489
 
490
  $.ajax({
491
- type: "POST",
492
- timeout: 0, // no timeout
493
- dataType: "text",
494
- url: ajaxurl,
495
- data: data,
496
- complete: function () {
497
  Duplicator.Pack.PostTransferCleanup(statusInterval, Duplicator.Pack.DupArchiveStartTime);
498
  },
499
- success: function (respData, textStatus, xHr) {
500
  try {
501
  var data = Duplicator.parseJSON(respData);
502
  } catch(err) {
503
  console.log(err);
504
- console.log('JSON parse failed for response data: ' + respData);
505
  console.log('DupArchive AJAX error!');
506
  console.log("jqHr:");
507
  console.log(xHr);
@@ -533,7 +600,7 @@ jQuery(document).ready(function ($)
533
  console.log("CreateDupArchive:No critical failures");
534
  if (data.status == 1) {
535
 
536
- // Don't stop for non-critical failures - just display those at the end TODO: put these in the log not popup
537
  console.log("CreateDupArchive:archive has completed");
538
  if (data.failures.length > 0) {
539
 
@@ -578,7 +645,7 @@ jQuery(document).ready(function ($)
578
  Duplicator.Pack.HandleDupArchiveInterruption(errorString);
579
  }
580
  },
581
- error: function (xHr, textStatus) {
582
  console.log('DupArchive AJAX error!');
583
  console.log("jqHr:");
584
  console.log(xHr);
@@ -590,24 +657,24 @@ jQuery(document).ready(function ($)
590
  };
591
 
592
  /* ----------------------------------------
593
- * METHOD: Retrieves package status and updates UI with build percentage */
594
  Duplicator.Pack.GetActivePackageStatus = function ()
595
  {
596
- var data = {action: 'DUP_CTRL_Package_getActivePackageStatus', nonce: '<?php echo wp_create_nonce('DUP_CTRL_Package_getActivePackageStatus'); ?>'}
597
  console.log('####Duplicator.Pack.GetActivePackageStatus');
598
 
599
  $.ajax({
600
- type: "POST",
601
- url: ajaxurl,
602
- dataType: "text",
603
- timeout: 0, // no timeout
604
- data: data,
605
- success: function (respData, textStatus, xHr) {
606
  try {
607
  var data = Duplicator.parseJSON(respData);
608
  } catch(err) {
609
  console.error(err);
610
- console.error('JSON parse failed for response data: ' + respData);
611
  console.log('Error retrieving build status');
612
  console.log(xHr);
613
  return false;
@@ -619,7 +686,7 @@ jQuery(document).ready(function ($)
619
  console.log(data);
620
  }
621
  },
622
- error: function (xHr) {
623
  console.log('Error retrieving build status');
624
  console.log(xHr);
625
  }
@@ -634,7 +701,7 @@ jQuery(document).ready(function ($)
634
  var millis = (endTime - startTime);
635
  var minutes = Math.floor(millis / 60000);
636
  var seconds = ((millis % 60000) / 1000).toFixed(0);
637
- var status = minutes + ":" + (seconds < 10 ? '0' : '') + seconds;
638
  $('#dup-msg-error-response-time span.data').html(status);
639
  //$('#dup-create-area-nolink').hide();
640
  //$('#dup-create-area-link').show();
@@ -644,12 +711,12 @@ jQuery(document).ready(function ($)
644
  {
645
  var pack = data.package;
646
  var archive_json = {
647
- filename: pack.Archive.File,
648
- url: "<?php echo DUP_Settings::getSsdirUrl(); ?>" + "/" + pack.Archive.File
649
  };
650
  var installer_json = {
651
- id: pack.ID,
652
- hash: pack.Hash
653
  };
654
 
655
  $('#dup-progress-bar-area').hide();
@@ -658,7 +725,8 @@ jQuery(document).ready(function ($)
658
  $('#dup-btn-archive-size').append('&nbsp; (' + data.archiveSize + ')')
659
  $('#data-name-hash').text(pack.NameHash || 'error read');
660
  $('#data-time').text(data.runtime || 'unable to read time');
661
- $('#dup-create-new').removeClass('disabled');
 
662
 
663
  //Wire Up Downloads
664
  $('#dup-btn-installer').click(function() {
@@ -680,6 +748,7 @@ jQuery(document).ready(function ($)
680
  });
681
 
682
  $('#dup-click-to-copy-installer-name').data('dup-copy-text', data.instDownloadName);
 
683
  };
684
 
685
  Duplicator.Pack.HandleDupArchiveInterruption = function (errorText)
@@ -731,12 +800,33 @@ jQuery(document).ready(function ($)
731
  $btn.attr("disabled", true);
732
  }
733
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
734
  //Page Init:
735
  Duplicator.UI.AnimateProgressBar('dup-progress-bar');
736
 
737
- <?php if (DUP_Settings::Get('archive_build_mode') == DUP_Archive_Build_Mode::ZipArchive): ?>
738
  Duplicator.Pack.CreateZip();
739
- <?php else: ?>
740
  Duplicator.Pack.CreateDupArchive();
741
  <?php endif; ?>
742
  });
20
  $atext1 .= "&nbsp;<a target='_blank' href='https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_build_more_power&utm_campaign=duplicator_pro'>";
21
  $atext1 .= __('Duplicator Pro', 'duplicator').'</a>!';
22
 
23
+ if (DUP_Settings::Get('installer_name_mode') == DUP_Settings::INSTALLER_NAME_MODE_SIMPLE) {
24
+ $txtInstallHelpMsg = __("When clicking the Installer download button, the 'Save as' dialog will default the name to 'installer.php'. "
25
+ . "To improve the security and get more information, goto: Settings ❯ Packages Tab ❯ Installer Name option.", 'duplicator');
26
+ } else {
27
+ $txtInstallHelpMsg = __("When clicking the Installer download button, the 'Save as' dialog will save the name as '[name]_[hash]_[date]_installer.php'. "
28
+ . "This is the secure and recommended option. For more information goto: Settings ❯ Packages Tab ❯ Installer Name Option. To quickly copy the hashed "
29
+ . "installer name, to your clipboard use the copy icon link.", 'duplicator');
30
+ }
31
+
32
  $rand_txt = array();
33
  $rand_txt[0] = $atext0;
34
+
35
  ?>
36
 
37
  <style>
38
  a#dup-create-new {margin-left:-5px}
39
+ div#dup-progress-area {text-align:center; max-width:800px; min-height:200px; border:1px solid silver; border-radius:3px; margin:25px auto 10px auto; padding:0px; box-shadow:0 8px 6px -6px #999;}
40
+ div.dup-progress-title {font-size:22px;padding:5px 0 20px 0; font-weight:bold}
41
  div#dup-progress-area div.inner {padding:10px; line-height:22px}
42
  div#dup-progress-area h2.title {background-color:#efefef; margin:0px}
43
  div#dup-progress-area span.label {font-weight:bold}
44
  div#dup-msg-success {color:#18592A; padding:5px;}
45
  div.dup-no-mu {font-size:13px; margin-top:15px; color:maroon; line-height:18px}
46
+ sup.dup-new {font-weight:normal; color:#b10202; font-size:12px}
47
 
48
  div.dup-msg-success-stats{color:#999;margin:5px 0; font-size:11px; line-height:13px}
49
+ div.dup-msg-success-links {margin:20px 5px 5px 5px; font-size:13px;}
50
  div#dup-progress-area div.done-title {font-size:18px; font-weight:bold; margin:0px 0px 10px 0px}
51
+ div#dup-progress-area div.dup-panel-title {background-color:#dfdfdf;}
52
+ div.hdr-pack-complete {font-size:14px; color:green; font-weight:bold}
53
+
54
+ div#dup-create-area-nolink, div#dup-create-area-link {float:right; font-weight:bold; margin:0; padding:0}
55
+ div#dup-create-area-link {display:none; margin-left:-5px}
56
+ div#dup-progress-area div.dup-panel-panel { border-top:1px solid silver}
57
+ fieldset.download-area {border:2px dashed #b5b5b5; padding:20px 20px 20px 20px; border-radius:4px; margin:auto; width:500px }
58
+ fieldset.download-area legend {font-weight:bold; font-size:18px; margin:auto; color:#000}
59
+ button#dup-btn-installer, button#dup-btn-archive { line-height:28px; min-width:175px; height:38px !important; padding-top:3px !important; }
60
+ a#dup-link-download-both {min-width:200px; padding:3px;}
61
+ div.one-click-download {margin:20px 0 10px 0; font-size:16px; font-weight:bold}
62
+ div.one-click-download i.fa-bolt{padding-right:5px}
63
+ div.one-click-download i.fa-file-archive-o{padding-right:5px}
64
 
65
  div.dup-button-footer {text-align:right; margin:20px 10px 0px 0px}
66
+ button.button {font-size:16px !important; height:30px !important; font-weight:bold; padding:0px 10px 5px 10px !important; min-width:150px }
67
+ span.dup-btn-size {font-size:11px;font-weight:normal}
68
  p.get-pro {font-size:13px; color:#222; border-top:1px solid #eeeeee; padding:5px 0 0 0; margin:0; font-style:italic}
69
+ div.dup-howto-exe {font-size:14px; font-weight:bold; margin:25px 0 40px 0;line-height:20px; color:#000; padding-top:10px;}
70
+ div.dup-howto-exe-title {font-size:18px; margin:0 0 8px 0; color:#000}
71
+ div.dup-howto-exe-title a {text-decoration:none; outline:none; box-shadow:none}
72
+ div.dup-howto-exe small {font-weight:normal; display:block; margin-top:-2px; font-style:italic; font-size:11px; color:#444 }
73
+ div.dup-howto-exe a {margin-top:8px; display:inline-block}
74
+ div.dup-howto-exe-info {display:none; border:1px dotted #b5b5b5; padding:10px 20px 20px 20px; margin:auto; width:500px; background-color:#F0F0F1; border-radius:4px;}
75
+ div.dup-howto-exe-info a i {display:inline-block; margin:0 2px 0 2px}
76
+ div.dup-howto-exe-area {display: flex; justify-content: center;}
77
+ div.dup-howto-exe-txt {text-align: left; font-size:16px}
78
+ span#dup-installer-name {display:inline-block; color:silver; font-style: italic;}
79
+ span#dup-installer-name a {text-decoration: none}
80
+ span#dup-installer-name-help-icon {display:none}
81
 
82
  /*HOST TIMEOUT */
83
  div#dup-msg-error {color:maroon; padding:5px;}
84
+ div.dup-box-title {text-align:left; background-color:#F6F6F6}
85
  div.dup-box-title:hover { background-color:#efefef}
86
+ div.dup-box-panel {text-align:left}
87
+ div.no-top {border-top:none}
88
  div.dup-box-panel b.opt-title {font-size:18px}
89
+ div.dup-msg-error-area {overflow-y:scroll; padding:5px 15px 15px 15px; max-height:170px; width:95%; border:1px solid silver; border-radius:4px; line-height:22px}
90
  div#dup-logs {text-align:center; margin:auto; padding:5px; width:350px;}
91
  div#dup-logs a {display:inline-block;}
92
+ span.sub-data {display:inline-block; padding-left:20px}
93
  </style>
94
 
95
  <!-- =========================================
96
+ TOOL BAR:STEPS -->
97
  <table id="dup-toolbar">
98
  <tr valign="top">
99
+ <td style="white-space:nowrap">
100
  <div id="dup-wiz">
101
  <div id="dup-wiz-steps">
102
+ <div class="completed-step"><a>1 <?php esc_html_e('Setup', 'duplicator'); ?></a></div>
103
+ <div class="completed-step"><a>2 <?php esc_html_e('Scan', 'duplicator'); ?> </a></div>
104
+ <div class="active-step"><a>3 <?php esc_html_e('Build', 'duplicator'); ?> </a></div>
105
  </div>
106
+ <div id="dup-wiz-title" class="dup-guide-txt-color">
107
+ <i class="fab fa-wordpress"></i>
108
+ <?php esc_html_e('Step 3: Build and download the package files.', 'duplicator'); ?>
109
  </div>
110
  </div>
111
  </td>
112
  <td style="padding-bottom:4px">
113
+ <span>
114
+ <a id="dup-packages-btn" href="?page=duplicator" class="button <?php echo ($active_package_present ? 'no-display' :''); ?>">
115
+ <?php esc_html_e("Packages",'duplicator'); ?>
116
+ </a>
117
+ </span>
118
  <?php
119
  $package_url = admin_url('admin.php?page=duplicator&tab=new1');
120
  $package_nonce_url = wp_nonce_url($package_url, 'new1-package');
121
  ?>
122
  <a id="dup-create-new"
123
+ onclick="return !jQuery(this).hasClass('disabled');"
124
  href="<?php echo $package_nonce_url;?>"
125
+ class="button <?php echo ($active_package_present ? 'no-display' :''); ?>">
 
126
  <?php esc_html_e("Create New", 'duplicator'); ?>
127
  </a>
128
  </td>
151
  SUCCESS MESSAGE -->
152
  <div id="dup-msg-success" style="display:none">
153
  <div class="hdr-pack-complete">
154
+ <i class="far fa-check-square fa-lg"></i> <?php esc_html_e('Package Build Completed', 'duplicator'); ?>
155
  </div>
156
 
157
  <div class="dup-msg-success-stats">
158
+ <b><?php esc_html_e('Build Time', 'duplicator'); ?>:</b> <span id="data-time"></span><br/>
159
  </div><br/>
160
 
161
  <!-- DOWNLOAD FILES -->
162
  <fieldset class="download-area">
163
  <legend>
164
+ &nbsp; <i class="fa fa-download"></i> <?php esc_html_e("Download Package Files", 'duplicator') ?> &nbsp;
165
  </legend>
166
  <button id="dup-btn-installer" class="button button-primary button-large" title="<?php esc_attr_e("Click to download installer file", 'duplicator') ?>">
167
  <i class="fa fa-bolt fa-sm"></i> <?php esc_html_e("Installer", 'duplicator') ?> &nbsp;
171
  <span id="dup-btn-archive-size" class="dup-btn-size"></span> &nbsp;
172
  </button>
173
  <div class="one-click-download">
174
+ <a href="javascript:void(0)" id="dup-link-download-both" title="<?php esc_attr_e("Click to download both files", 'duplicator') ?>" class="button">
175
+ <i class="fa fa-bolt fa-sm"></i><i class="far fa-file-archive"></i>
176
+ <?php esc_html_e("Download Both Files", 'duplicator') ?>
177
  </a>
178
  <sup>
179
  <i class="fas fa-question-circle fa-sm" style='font-size:11px'
180
+ data-tooltip-title="<?php esc_attr_e("Download Both Files:", 'duplicator'); ?>"
181
+ data-tooltip="<?php esc_attr_e('Clicking this button will open the installer and archive download prompts one after the other with one click verses '
182
+ . 'downloading each file separately with two clicks. On some browsers you may have to disable pop-up warnings on this domain for this to '
183
+ . 'work correctly.', 'duplicator'); ?>">
184
  </i>
185
  </sup>
186
  </div>
187
  <div style="margin-top:20px; font-size:11px">
188
+ <span id="dup-click-to-copy-installer-name"
189
+ class="link-style no-decoration"
190
+ data-dup-copy-text="<?php echo esc_attr(DUP_Installer::DEFAULT_INSTALLER_FILE_NAME_WITHOUT_HASH); ?>">
191
  <?php esc_html_e("[Copy Installer Name to Clipboard]", 'duplicator'); ?>
192
+ <i class="far fa-copy"></i>
193
+ </span><br/>
194
+ <span id="dup-installer-name" data-installer-name="">
195
+ <a href="javascript:void(0)" onclick="Duplicator.Pack.ShowInstallerName()">
196
+ <?php esc_html_e("[Show Installer Name]", 'duplicator'); ?>
197
+ </a>
198
+ </span>
199
+ <span id="dup-installer-name-help-icon">
200
+ <i class="fas fa-question-circle fa-sm"
201
+ data-tooltip-title="<?php esc_attr_e("Installer Name:", 'duplicator'); ?>"
202
+ data-tooltip="<?php echo $txtInstallHelpMsg ?>">
203
+ </i>
204
  </span>
205
  </div>
206
  </fieldset>
209
  if (is_multisite()) {
210
  echo '<div class="dup-no-mu">';
211
  echo '<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>&nbsp;';
212
+ esc_html_e('Notice:Duplicator Lite does not officially support WordPress multisite.', 'duplicator');
213
  echo "<br/>";
214
  esc_html_e('We strongly recommend upgrading to ', 'duplicator');
215
  echo "&nbsp;<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>.";
218
  ?>
219
 
220
  <div class="dup-howto-exe">
221
+ <div class="dup-howto-exe-title" onclick="Duplicator.Pack.ToggleHelpInstall(this)">
222
+ <a href="javascript:void(0)">
223
+ <i class="far fa-plus-square"></i>
224
+ <?php esc_html_e('How to install this package?', 'duplicator'); ?>
225
+ </a>
226
+ </div>
227
+ <div class="dup-howto-exe-info">
228
+ <div class="dup-howto-exe-area">
229
+ <div class="dup-howto-exe-txt">
230
+ <b style="font-size:18px"><?php esc_html_e("Featured Install Modes", 'duplicator');?></b>
231
+ <br/>
232
+
233
+ <!-- CLASSIC -->
234
+ <i class="far fa-save fa-sm fa-fw"></i>
235
+ <a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_built_install_help1_collapse&utm_campaign=duplicator_free#quick-040-q" target="_blank">
236
+ <?php esc_html_e('Classic Install Feature', 'duplicator'); ?>
237
+ <sup><i class="fas fa-external-link-alt fa-xs"></i></sup>
238
+ </a><br/>
239
+
240
+ <small>
241
+ <?php
242
+ echo _e('Install to an empty server directory like a new WordPress install does.', 'duplicator');
243
+ ?>
244
+ </small>
245
+
246
+ <!-- OVERWRITE -->
247
+ <i class="far fa-window-close fa-sm fa-fw"></i>
248
+ <a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_built_install_help2_collapse&utm_campaign=duplicator_free#quick-043-q" target="_blank">
249
+ <?php esc_html_e('Overwrite Install Feature', 'duplicator'); ?>
250
+ <sup><i class="fas fa-external-link-alt fa-xs"></i></sup>
251
+ </a>
252
+ <br/>
253
+ <small><?php esc_html_e("Quickly overwrite an existing WordPress site in a few clicks.", 'duplicator');?></small>
254
+
255
+
256
+ <!-- IMPORT -->
257
+ <i class="fas fa-download fa-sm fa-fw"></i>
258
+ <a href="https://snapcreek.com/duplicator/docs/quick-start/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=package_built_install_help3_collapse&utm_campaign=duplicator_free#quick-045-q" target="_blank">
259
+ <?php esc_html_e('Import Install Feature', 'duplicator'); ?>
260
+ <sup><i class="fas fa-external-link-alt fa-xs"></i></sup>
261
+ </a>
262
+ <sup class="dup-new"><?php esc_html_e('Pro *', 'duplicator'); ?></sup><br/>
263
+ <small><?php esc_html_e("Easily drag-n-drop the archive file to its destination (requires Pro*)", 'duplicator');?></small>
264
+
265
+ </div>
266
+ </div>
267
+ </div>
268
  </div>
269
 
270
  <p class="get-pro">
280
  <i><?php esc_html_e("To get past this hosts limitation consider the options below by clicking each section.", 'duplicator'); ?></i>
281
  <br/><br/><br/>
282
 
283
+ <!-- OPTION 1:Try DupArchive Engine -->
284
  <div class="dup-box">
285
  <div class="dup-box-title">
286
+ <span style="width:20px; display:inline-block"><i class="far fa-check-circle"></i></span><?php esc_html_e('Option 1:Try DupArchive', 'duplicator'); ?>
287
  <div class="dup-box-arrow"><i class="fa fa-caret-down"></i></div>
288
  </div>
289
  <div class="dup-box-panel" id="dup-pack-build-try1" style="display:none">
292
  <?php esc_html_e('Enable the DupArchive format which is specific to Duplicator and designed to perform better on constrained budget hosts.', 'duplicator'); ?>
293
  <br/><br/>
294
 
295
+ <div style="font-style:italic">
296
+ <?php esc_html_e('Note:DupArchive on Duplicator only supports sites up to 500MB. If your site is over 500MB then use a file filter on step 1 to get the size '
297
  . 'below 500MB or try the other options mentioned below. Alternatively, you may want to consider',
298
  'duplicator'); ?>
299
  <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&amp;utm_medium=wordpress_plugin&amp;utm_content=build_interrupt&amp;utm_campaign=duplicator_pro" target="_blank">
313
  <li><?php esc_html_e('Build a new package using the new engine format.', 'duplicator'); ?></li>
314
  </ol>
315
 
316
+ <small style="font-style:italic">
317
+ <?php esc_html_e('Note:The DupArchive engine will generate an archive.daf file. This file is very similar to a .zip except that it can only be extracted by the '
318
  . 'installer.php file or the', 'duplicator'); ?>
319
  <a href="https://snapcreek.com/duplicator/docs/faqs-tech/#faq-trouble-052-q" target="_blank"><?php esc_html_e('commandline extraction tool'); ?></a>.
320
  </small>
321
  </div>
322
  </div>
323
 
324
+ <!-- OPTION 2:TRY AGAIN -->
325
  <div class="dup-box no-top">
326
  <div class="dup-box-title">
327
+ <span style="width:20px; display:inline-block"><i class="fa fa-filter fa-sm"></i></span><?php esc_html_e('Option 2:File Filters', 'duplicator'); ?>
328
  <div class="dup-box-arrow"><i class="fa fa-caret-down"></i></div>
329
  </div>
330
  <div class="dup-box-panel" id="dup-pack-build-try2" style="display:none">
 
331
  <?php
332
  esc_html_e('The first pass for reading files on some budget hosts maybe slow and have conflicts with strict timeout settings setup by the hosting provider. '
333
  . 'In these cases, it is recommended to retry the build by adding file filters to larger files/directories.', 'duplicator');
338
  . 'If this work-flow is not desired or does not work please check-out the other options below.', 'duplicator');
339
  ?>
340
  <br/><br/>
341
+ <div style="text-align:center; margin:10px 0 2px 0">
342
  <input type="button" class="button-large button-primary" value="<?php esc_attr_e('Retry Build With Filters', 'duplicator'); ?>" onclick="window.history.back()" />
343
  </div>
344
 
345
+ <div style="color:#777; padding:15px 5px 5px 5px">
346
  <b> <?php esc_html_e('Notice', 'duplicator'); ?></b><br/>
347
  <?php
348
  printf('<b><i class="fa fa-folder-o"></i> %s %s</b> <br/> %s', esc_html__('Build Folder:'), DUP_Settings::getSsdirTmpPath(),
355
  </div>
356
  </div>
357
 
358
+ <!-- OPTION 3:Two-Part Install -->
359
  <div class="dup-box no-top">
360
  <div class="dup-box-title">
361
+ <span style="width:20px; display:inline-block"><i class="fa fa-random"></i></span><?php esc_html_e('Option 3:Two-Part Install', 'duplicator'); ?>
362
  <div class="dup-box-arrow"><i class="fa fa-caret-down"></i></div>
363
  </div>
364
  <div class="dup-box-panel" id="dup-pack-build-try2" style="display:none">
365
+
366
 
367
  <?php esc_html_e('A two-part install minimizes server load and can avoid I/O and CPU issues encountered on some budget hosts. With this procedure you simply build a '
368
  .'\'database-only\' archive, manually move the website files, and then run the installer to complete the process.', 'duplicator');
382
  </li>
383
  </ol>
384
 
385
+ <div style="text-align:center; margin:10px">
386
  <input type="checkbox" id="dup-two-part-check" onclick="Duplicator.Pack.ToggleTwoPart()">
387
  <label for="dup-two-part-check"><?php esc_html_e('Yes. I have read the above overview and would like to continue!', 'duplicator'); ?></label><br/><br/>
388
  <button id="dup-two-part-btn" type="button" class="button-large button-primary" disabled="true" onclick="window.location = 'admin.php?page=duplicator&tab=new1&retry=2&_wpnonce=<?php echo $retry_nonuce; ?>'">
392
  </div>
393
  </div>
394
 
395
+ <!-- OPTION 4:DIAGNOSE SERVER -->
396
  <div class="dup-box no-top">
397
  <div class="dup-box-title">
398
+ <span style="width:20px; display:inline-block"><i class="fa fa-cog"></i></span><?php esc_html_e('Option 4:Configure Server', 'duplicator'); ?>
399
  <div class="dup-box-arrow"><i class="fa fa-caret-down"></i></div>
400
  </div>
401
  <div class="dup-box-panel" id="dup-pack-build-try3" style="display:none">
404
  . 'FAQ page that will show various recommendations you can take to improve/unlock constraints set up on this server.', 'duplicator');
405
  ?><br/><br/>
406
 
407
+ <div style="text-align:center; margin:10px; font-size:16px; font-weight:bold">
408
  <a href="https://snapcreek.com/duplicator/docs/faqs-tech/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=host_interupt_diagnosebtn&utm_campaign=build_issues#faq-trouble-100-q" target="_blank">
409
  [<?php esc_html_e('Diagnose Server Setup', 'duplicator'); ?>]
410
  </a>
433
  <span class="data sub-data">
434
  <span class="label"><?php esc_html_e("Mode", 'duplicator'); ?>:</span>
435
  <?php
436
+ $try_update = $try_update ? 'is dynamic' :'value is fixed';
437
  echo "{$try_update}";
438
  ?>
439
  <i class="fa fa-question-circle data-size-help"
488
  Duplicator.Pack.StatusFrequency = 8000;
489
 
490
  /* ----------------------------------------
491
+ * METHOD:Performs Ajax post to create a new package
492
  * Timeout (10000000 = 166 minutes) */
493
  Duplicator.Pack.CreateZip = function ()
494
  {
495
  var startTime;
496
+ var data = {action:'duplicator_package_build', nonce:'<?php echo esc_js($zip_build_nonce); ?>'}
497
  var statusInterval = setInterval(Duplicator.Pack.GetActivePackageStatus, Duplicator.Pack.StatusFrequency);
498
 
499
  $.ajax({
500
+ type:"POST",
501
+ cache:false,
502
+ dataType:"text",
503
+ url:ajaxurl,
504
+ timeout:0, // no timeout
505
+ data:data,
506
+ beforeSend:function () {
507
  startTime = new Date().getTime();
508
  },
509
+ complete:function () {
510
  Duplicator.Pack.PostTransferCleanup(statusInterval, startTime);
511
  },
512
+ success:function (respData, textStatus, xHr) {
513
  try {
514
  var data = Duplicator.parseJSON(respData);
515
  } catch(err) {
516
  console.error(err);
517
+ console.error('JSON parse failed for response data:' + respData);
518
  $('#dup-progress-bar-area').hide();
519
  $('#dup-progress-area, #dup-msg-error').show(200);
520
  var status = xHr.status + ' -' + data.statusText;
521
+ var response = (xHr.responseText != undefined && xHr.responseText.trim().length > 1) ? xHr.responseText.trim() :'No client side error - see package log file';
522
  $('#dup-msg-error-response-status span.data').html(status)
523
  $('#dup-msg-error-response-text span.data').html(response);
524
  console.log(xHr);
528
  if ((data != null) && (typeof (data) != 'undefined') && data.status == 1) {
529
  Duplicator.Pack.WireDownloadLinks(data);
530
  } else {
531
+ var message = (typeof (data.error) != 'undefined' && data.error.length) ? data.error :'Error processing package';
532
  Duplicator.Pack.DupArchiveProcessingFailed(message);
533
  }
534
 
535
  },
536
+ error:function (xHr) {
537
  $('#dup-progress-bar-area').hide();
538
  $('#dup-progress-area, #dup-msg-error').show(200);
539
  var status = xHr.status + ' -' + data.statusText;
540
+ var response = (xHr.responseText != undefined && xHr.responseText.trim().length > 1) ? xHr.responseText.trim() :'No client side error - see package log file';
541
  $('#dup-msg-error-response-status span.data').html(status)
542
  $('#dup-msg-error-response-text span.data').html(response);
543
  console.log(xHr);
547
  }
548
 
549
  /* ----------------------------------------
550
+ * METHOD:Performs Ajax post to create a new DupArchive-based package */
551
  Duplicator.Pack.CreateDupArchive = function ()
552
  {
553
  console.log('Duplicator.Pack.CreateDupArchive');
554
+ var data = {action:'duplicator_duparchive_package_build', nonce:'<?php echo esc_js($duparchive_build_nonce); ?>'}
555
  var statusInterval = setInterval(Duplicator.Pack.GetActivePackageStatus, Duplicator.Pack.StatusFrequency);
556
 
557
  $.ajax({
558
+ type:"POST",
559
+ timeout:0, // no timeout
560
+ dataType:"text",
561
+ url:ajaxurl,
562
+ data:data,
563
+ complete:function () {
564
  Duplicator.Pack.PostTransferCleanup(statusInterval, Duplicator.Pack.DupArchiveStartTime);
565
  },
566
+ success:function (respData, textStatus, xHr) {
567
  try {
568
  var data = Duplicator.parseJSON(respData);
569
  } catch(err) {
570
  console.log(err);
571
+ console.log('JSON parse failed for response data:' + respData);
572
  console.log('DupArchive AJAX error!');
573
  console.log("jqHr:");
574
  console.log(xHr);
600
  console.log("CreateDupArchive:No critical failures");
601
  if (data.status == 1) {
602
 
603
+ // Don't stop for non-critical failures - just display those at the end TODO:put these in the log not popup
604
  console.log("CreateDupArchive:archive has completed");
605
  if (data.failures.length > 0) {
606
 
645
  Duplicator.Pack.HandleDupArchiveInterruption(errorString);
646
  }
647
  },
648
+ error:function (xHr, textStatus) {
649
  console.log('DupArchive AJAX error!');
650
  console.log("jqHr:");
651
  console.log(xHr);
657
  };
658
 
659
  /* ----------------------------------------
660
+ * METHOD:Retrieves package status and updates UI with build percentage */
661
  Duplicator.Pack.GetActivePackageStatus = function ()
662
  {
663
+ var data = {action:'DUP_CTRL_Package_getActivePackageStatus', nonce:'<?php echo wp_create_nonce('DUP_CTRL_Package_getActivePackageStatus'); ?>'}
664
  console.log('####Duplicator.Pack.GetActivePackageStatus');
665
 
666
  $.ajax({
667
+ type:"POST",
668
+ url:ajaxurl,
669
+ dataType:"text",
670
+ timeout:0, // no timeout
671
+ data:data,
672
+ success:function (respData, textStatus, xHr) {
673
  try {
674
  var data = Duplicator.parseJSON(respData);
675
  } catch(err) {
676
  console.error(err);
677
+ console.error('JSON parse failed for response data:' + respData);
678
  console.log('Error retrieving build status');
679
  console.log(xHr);
680
  return false;
686
  console.log(data);
687
  }
688
  },
689
+ error:function (xHr) {
690
  console.log('Error retrieving build status');
691
  console.log(xHr);
692
  }
701
  var millis = (endTime - startTime);
702
  var minutes = Math.floor(millis / 60000);
703
  var seconds = ((millis % 60000) / 1000).toFixed(0);
704
+ var status = minutes + ":" + (seconds < 10 ? '0' :'') + seconds;
705
  $('#dup-msg-error-response-time span.data').html(status);
706
  //$('#dup-create-area-nolink').hide();
707
  //$('#dup-create-area-link').show();
711
  {
712
  var pack = data.package;
713
  var archive_json = {
714
+ filename:pack.Archive.File,
715
+ url:"<?php echo DUP_Settings::getSsdirUrl(); ?>" + "/" + pack.Archive.File
716
  };
717
  var installer_json = {
718
+ id:pack.ID,
719
+ hash:pack.Hash
720
  };
721
 
722
  $('#dup-progress-bar-area').hide();
725
  $('#dup-btn-archive-size').append('&nbsp; (' + data.archiveSize + ')')
726
  $('#data-name-hash').text(pack.NameHash || 'error read');
727
  $('#data-time').text(data.runtime || 'unable to read time');
728
+ $('#dup-create-new').removeClass('no-display');
729
+ $('#dup-packages-btn').removeClass('no-display');
730
 
731
  //Wire Up Downloads
732
  $('#dup-btn-installer').click(function() {
748
  });
749
 
750
  $('#dup-click-to-copy-installer-name').data('dup-copy-text', data.instDownloadName);
751
+ $('#dup-installer-name').data('data-installer-name', data.instDownloadName);
752
  };
753
 
754
  Duplicator.Pack.HandleDupArchiveInterruption = function (errorText)
800
  $btn.attr("disabled", true);
801
  }
802
  };
803
+
804
+ Duplicator.Pack.ToggleHelpInstall = function (div) {
805
+ var $div = $(div);
806
+ var $icon = $div.find('i.far')
807
+ var $info = $('div.dup-howto-exe-info');
808
+ if ($icon.hasClass('fa-plus-square')) {
809
+ $icon.attr('class', 'far fa-minus-square');
810
+ $info.show();
811
+ } else {
812
+ $icon.attr('class', 'far fa-plus-square');
813
+ $info.hide();
814
+ }
815
+ };
816
+
817
+ Duplicator.Pack.ShowInstallerName = function () {
818
+ var txt = $('#dup-installer-name').data('data-installer-name');
819
+ $('#dup-installer-name').html(txt);
820
+ $('#dup-installer-name-help-icon').show();
821
+
822
+ };
823
+
824
  //Page Init:
825
  Duplicator.UI.AnimateProgressBar('dup-progress-bar');
826
 
827
+ <?php if (DUP_Settings::Get('archive_build_mode') == DUP_Archive_Build_Mode::ZipArchive):?>
828
  Duplicator.Pack.CreateZip();
829
+ <?php else:?>
830
  Duplicator.Pack.CreateDupArchive();
831
  <?php endif; ?>
832
  });
views/packages/screen.php CHANGED
@@ -94,10 +94,24 @@ class DUP_Package_Screen extends DUP_UI_Screen
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()
94
 
95
  public function get_step2_help()
96
  {
97
+ $status1 = sprintf('%1$s Good %2$s', '<span class="badge badge-pass">', '</span>');
98
+ $status2 = sprintf('%1$s Notice %2$s', '<span class="badge badge-warn">', '</span>');
99
+
100
+ //TITLE
101
+ $msg = sprintf('%1$s Packages » 2 Scan %2$s', '<b>', '</b><br/>');
102
+
103
+ //MESSAGE
104
+ $msg .= sprintf(
105
+ 'In Step-2 of the build process Duplicator scans your WordPress site files and database for any possible issues. Each section is expandable '
106
+ . 'and will show more details regarding the parameters of that section. The following indicators will be present for each section: %3$s'
107
+ . '%1$s Indicates that no issues were detected. It is best to try and get all the values to display this status if possible, but not required. %3$s'
108
+ . '%2$s Indicates a possible issue. A notice will not prevent the build from running however, if you do have issues then the section should be observed. %4$s',
109
+ $status1,
110
+ $status2,
111
+ '<br/>',
112
+ '<br/><br/>'
113
+ );
114
+ return $msg;
115
  }
116
 
117
  public function get_step3_help()
views/settings/gopro.php CHANGED
@@ -7,10 +7,11 @@ 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
  ?>
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_checkitout1&utm_campaign=duplicator_pro";
11
  } else {
12
+ /*Updated from 'Learn More' to 'Check It Out' on 1.4.4 release */
13
+ $test_text = esc_html__('Check It Out!', 'duplicator');
14
+ $test_url = "https://snapcreek.com/duplicator/comparison/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_go_pro_checkitout2&utm_campaign=duplicator_pro";
15
  }
16
 
17
  ?>
views/settings/license.php CHANGED
@@ -14,25 +14,40 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
14
  <?php esc_html_e('Duplicator Free'); ?>
15
  <div style="padding: 10px">
16
  <i class="far fa-check-square"></i> <?php esc_html_e('Basic Features'); ?> <br/>
17
- <i class="far fa-square"></i> <a href="admin.php?page=duplicator-gopro"><?php esc_html_e('Pro Features'); ?></a><br>
18
  </div>
19
  </td>
20
  </tr>
21
  <tr valign="top">
22
  <th scope="row"><label><?php esc_html_e("License Key"); ?></label></th>
23
  <td>
24
- <p class="description" style="max-width:700px">
25
- <?php
26
- esc_html_e("The free version of Duplicator does not require a license key. ");
27
- echo '<br/><br/>';
28
- esc_html_e("Professional Users: Please note that if you have already purchased the Professional version it is a separate plugin that you download and install. "
29
- . "You can download the Professional version from the email sent after your purchase or click on the 'Manage Licenses' link above to "
30
- . "download the plugin from your snapcreek.com dashboard. ");
31
- esc_html_e("If you would like to purchase the professional version you can ");
32
- echo '<a href="https://snapcreek.com/duplicator?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=duplicator_pro&utm_content=settings_license_get_copy_here" target="_blank">' . esc_html__("get a copy here", 'duplicator') . '</a>!';
33
- ?>
34
- </p>
35
- <br/><br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  </td>
37
  </tr>
38
  </table>
14
  <?php esc_html_e('Duplicator Free'); ?>
15
  <div style="padding: 10px">
16
  <i class="far fa-check-square"></i> <?php esc_html_e('Basic Features'); ?> <br/>
17
+ <i class="far fa-square"></i> <a target="_blank" href="https://snapcreek.com/duplicator/comparison/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=pro_features&utm_campaign=duplicator_pro"><?php esc_html_e('Pro Features'); ?></a><br>
18
  </div>
19
  </td>
20
  </tr>
21
  <tr valign="top">
22
  <th scope="row"><label><?php esc_html_e("License Key"); ?></label></th>
23
  <td>
24
+ <div class="description" style="max-width:700px">
25
+
26
+ <b><?php esc_html_e("Duplicator Lite:", 'duplicator'); ?></b>
27
+
28
+ <ul style="list-style-type:circle; margin-left:40px">
29
+ <li>
30
+ <?php esc_html_e("The free version of Duplicator does not require a license key.", 'duplicator'); ?>
31
+ </li>
32
+ <li>
33
+ <?php
34
+ esc_html_e("If you would like to purchase the professional version you can ", 'duplicator');
35
+ echo '<a href="https://snapcreek.com/duplicator?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_campaign=duplicator_pro&utm_content=settings_license_get_copy_here_lite" target="_blank">' . esc_html__("get a copy here", 'duplicator') . '</a>!';
36
+ ?>
37
+ </li>
38
+ </ul>
39
+
40
+ <b><?php esc_html_e("Duplicator Pro:", 'duplicator'); ?></b>
41
+ <ul style="list-style-type:circle; margin-left: 40px">
42
+ <li>
43
+ <?php esc_html_e("The professional version is a separate plugin that you download and install. ", 'duplicator'); ?>
44
+ </li>
45
+ <li>
46
+ <?php esc_html_e("Download professional from the email sent after purchase or login to snapcreek.com", 'duplicator'); ?>
47
+ </li>
48
+
49
+ </ul>
50
+ </div>
51
  </td>
52
  </tr>
53
  </table>
views/settings/storage.php CHANGED
@@ -150,7 +150,9 @@ function dup_lite_storage_advanced_pro_content()
150
  </i>
151
  </div>
152
  <p style="text-align: center">
153
- <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_settings_storage_popup&utm_campaign=duplicator_pro" target="_blank" class="button button-primary button-large dup-check-it-btn" >
 
 
154
  <?php esc_html_e('Learn More', 'duplicator'); ?>
155
  </a>
156
  </p>
@@ -159,9 +161,9 @@ function dup_lite_storage_advanced_pro_content()
159
  }
160
  $storageAlert = new DUP_UI_Dialog();
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
  ?>
150
  </i>
151
  </div>
152
  <p style="text-align: center">
153
+ <a href="https://snapcreek.com/duplicator/?utm_source=duplicator_free&utm_medium=wordpress_plugin&utm_content=free_settings_storage_popup_green&utm_campaign=duplicator_pro"
154
+ target="_blank"
155
+ class="dup-btn-call-action" style="font-size:15px; padding:8px 10px; width: 120px">
156
  <?php esc_html_e('Learn More', 'duplicator'); ?>
157
  </a>
158
  </p>
161
  }
162
  $storageAlert = new DUP_UI_Dialog();
163
  $storageAlert->title = __('Advanced Storage', 'duplicator');
164
+ $storageAlert->height = 500;
165
  $storageAlert->width = 400;
166
+ $storageAlert->okText = '';
167
  $storageAlert->message = dup_lite_storage_advanced_pro_content();
168
  $storageAlert->initAlert();
169
  ?>
views/tools/diagnostics/logging.php CHANGED
@@ -104,7 +104,7 @@ jQuery(document).ready(function($)
104
  }
105
 
106
  Duplicator.Tools.readLogfile = function() {
107
- $.get('<?php echo esc_url($logurl); ?>', function(data) {
108
  $('#dup-log-content').text(data);
109
  }, 'text');
110
  };
104
  }
105
 
106
  Duplicator.Tools.readLogfile = function() {
107
+ $.get(<?php echo str_replace('\\/', '/', json_encode($logurl)); ?>, function(data) {
108
  $('#dup-log-content').text(data);
109
  }, 'text');
110
  };
views/tools/diagnostics/main.php CHANGED
@@ -7,7 +7,7 @@ defined('ABSPATH') || defined('DUPXABSPATH') || exit;
7
  table.dup-reset-opts td:first-child {font-weight: bold}
8
  table.dup-reset-opts td {padding:10px}
9
  button.dup-fixed-btn {min-width: 150px; text-align: center}
10
- div#dup-tools-delete-moreinfo {display: none; padding: 5px 0 0 20px; border:1px solid silver; background-color: #fff; border-radius: 5px; padding:10px; margin:5px; width:750px }
11
  div.dup-alert-no-files-msg {padding:10px 0 10px 0}
12
  div.dup-alert-secure-note {font-style: italic; max-width:800px; padding:15px 0 20px 0}
13
 
7
  table.dup-reset-opts td:first-child {font-weight: bold}
8
  table.dup-reset-opts td {padding:10px}
9
  button.dup-fixed-btn {min-width: 150px; text-align: center}
10
+ div#dup-tools-delete-moreinfo {display: none; padding: 5px 0 0 20px; border:1px solid silver; background-color: #fff; border-radius:3px; padding:10px; margin:5px; width:750px }
11
  div.dup-alert-no-files-msg {padding:10px 0 10px 0}
12
  div.dup-alert-secure-note {font-style: italic; max-width:800px; padding:15px 0 20px 0}
13