Version Description
- fix: missing escapes and sanitizations
Download this release
Release Info
Developer | watchful |
Plugin | XCloner – Backup and Restore |
Version | 4.4.4 |
Comparing to | |
See all releases |
Code changes from version 4.4.3 to 4.4.4
- README.txt +4 -1
- admin/partials/xcloner_console_page.php +8 -7
- lib/Xcloner.php +4 -2
- lib/Xcloner_Api.php +26 -33
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +5 -5
- vendor/composer/installed.php +6 -6
- xcloner.php +1 -1
README.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: backup, database backup, cloud backup, WordPress backup, WordPress migrati
|
|
5 |
Requires at least: 5.1
|
6 |
Requires PHP: 7.3
|
7 |
Tested up to: 6.0
|
8 |
-
Stable tag: 4.4.
|
9 |
|
10 |
|
11 |
XCloner is a backup plugin that allows you to safely back up and restore your WordPress sites. You can send site backups to SFTP, Dropbox, Amazon, Google Drive, Backblaze and other locations.
|
@@ -117,6 +117,9 @@ Of course, schedules can be adjusted accordingly to how often you update your si
|
|
117 |
|
118 |
== Changelog ==
|
119 |
|
|
|
|
|
|
|
120 |
= 4.4.3 =
|
121 |
* remove PHP Short Tags to be compliant with WordPress guidelines
|
122 |
|
5 |
Requires at least: 5.1
|
6 |
Requires PHP: 7.3
|
7 |
Tested up to: 6.0
|
8 |
+
Stable tag: 4.4.4
|
9 |
|
10 |
|
11 |
XCloner is a backup plugin that allows you to safely back up and restore your WordPress sites. You can send site backups to SFTP, Dropbox, Amazon, Google Drive, Backblaze and other locations.
|
117 |
|
118 |
== Changelog ==
|
119 |
|
120 |
+
= 4.4.4 =
|
121 |
+
* fix: missing escapes and sanitizations
|
122 |
+
|
123 |
= 4.4.3 =
|
124 |
* remove PHP Short Tags to be compliant with WordPress guidelines
|
125 |
|
admin/partials/xcloner_console_page.php
CHANGED
@@ -16,9 +16,13 @@ $logger_content = $logger->getLastDebugLines();
|
|
16 |
<div class="collapsible-header active"><i class="material-icons">bug_report</i>XCloner Debugger
|
17 |
</div>
|
18 |
<div class="collapsible-body">
|
19 |
-
<div class="console" id="xcloner-console"
|
20 |
-
|
21 |
-
|
|
|
|
|
|
|
|
|
22 |
</div>
|
23 |
</li>
|
24 |
</ul>
|
@@ -26,11 +30,8 @@ $logger_content = $logger->getLastDebugLines();
|
|
26 |
jQuery(document).ready(function () {
|
27 |
var objDiv = document.getElementById("xcloner-console");
|
28 |
objDiv.scrollTop = objDiv.scrollHeight;
|
29 |
-
/*setInterval(function(){
|
30 |
-
getXclonerLog();
|
31 |
-
}, 2000);*/
|
32 |
})
|
33 |
</script>
|
34 |
<?php endif; ?>
|
35 |
</div>
|
36 |
-
</div>
|
16 |
<div class="collapsible-header active"><i class="material-icons">bug_report</i>XCloner Debugger
|
17 |
</div>
|
18 |
<div class="collapsible-body">
|
19 |
+
<div class="console" id="xcloner-console">
|
20 |
+
<?php
|
21 |
+
if (isset($logger_content)) {
|
22 |
+
echo implode("<br />\n", esc_html($logger_content));
|
23 |
+
}
|
24 |
+
?>
|
25 |
+
</div>
|
26 |
</div>
|
27 |
</li>
|
28 |
</ul>
|
30 |
jQuery(document).ready(function () {
|
31 |
var objDiv = document.getElementById("xcloner-console");
|
32 |
objDiv.scrollTop = objDiv.scrollHeight;
|
|
|
|
|
|
|
33 |
})
|
34 |
</script>
|
35 |
<?php endif; ?>
|
36 |
</div>
|
37 |
+
</div>
|
lib/Xcloner.php
CHANGED
@@ -587,12 +587,14 @@ class Xcloner
|
|
587 |
$is_refresh = true;
|
588 |
}
|
589 |
|
590 |
-
|
|
|
|
|
591 |
$parameters = array(
|
592 |
'client_id' => get_option("xcloner_onedrive_client_id"),
|
593 |
'client_secret' => get_option("xcloner_onedrive_client_secret"),
|
594 |
'redirect_uri' => get_admin_url(),
|
595 |
-
'code' => $
|
596 |
'grant_type' => 'authorization_code'
|
597 |
);
|
598 |
}
|
587 |
$is_refresh = true;
|
588 |
}
|
589 |
|
590 |
+
$code = isset($_REQUEST['code']) ? $this->xcloner_sanitization->sanitize_input_as_string($_REQUEST['code']) : null;
|
591 |
+
|
592 |
+
if ($code !== null) {
|
593 |
$parameters = array(
|
594 |
'client_id' => get_option("xcloner_onedrive_client_id"),
|
595 |
'client_secret' => get_option("xcloner_onedrive_client_secret"),
|
596 |
'redirect_uri' => get_admin_url(),
|
597 |
+
'code' => $code,
|
598 |
'grant_type' => 'authorization_code'
|
599 |
);
|
600 |
}
|
lib/Xcloner_Api.php
CHANGED
@@ -32,6 +32,7 @@ namespace Watchfulli\XClonerCore;
|
|
32 |
use Error;
|
33 |
use Exception;
|
34 |
use League\Flysystem\Config;
|
|
|
35 |
use League\Flysystem\FileNotFoundException;
|
36 |
use League\Flysystem\Filesystem;
|
37 |
use League\Flysystem\Adapter\Local;
|
@@ -138,16 +139,19 @@ class Xcloner_Api
|
|
138 |
$this->process_params();
|
139 |
}
|
140 |
|
141 |
-
|
142 |
|
143 |
-
|
|
|
144 |
$this->form_params['backup_params']['backup_name'] = $this->xcloner_sanitization->sanitize_input_as_string($_POST['backup_name']);
|
145 |
$this->form_params['backup_params']['email_notification'] = $this->xcloner_sanitization->sanitize_input_as_string($_POST['email_notification']);
|
|
|
146 |
if ($_POST['diff_start_date']) {
|
147 |
$this->form_params['backup_params']['diff_start_date'] = strtotime($this->xcloner_sanitization->sanitize_input_as_string($_POST['diff_start_date']));
|
148 |
} else {
|
149 |
$this->form_params['backup_params']['diff_start_date'] = "";
|
150 |
}
|
|
|
151 |
$this->form_params['backup_params']['schedule_name'] = $this->xcloner_sanitization->sanitize_input_as_string($_POST['schedule_name']);
|
152 |
|
153 |
if (isset($_POST['backup_encrypt'])) {
|
@@ -157,10 +161,10 @@ class Xcloner_Api
|
|
157 |
$this->form_params['backup_params']['start_at'] = strtotime($_POST['schedule_start_date']);
|
158 |
$this->form_params['backup_params']['schedule_frequency'] = $this->xcloner_sanitization->sanitize_input_as_string($_POST['schedule_frequency']);
|
159 |
$this->form_params['backup_params']['schedule_storage'] = $this->xcloner_sanitization->sanitize_input_as_string($_POST['schedule_storage']);
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
$this->form_params['backup_params']['backup_delete_after_remote_transfer'] = $
|
164 |
|
165 |
$this->form_params['database'] = (stripslashes($this->xcloner_sanitization->sanitize_input_as_raw($_POST['table_params'])));
|
166 |
$this->form_params['excluded_files'] = (stripslashes($this->xcloner_sanitization->sanitize_input_as_raw($_POST['excluded_files'])));
|
@@ -192,11 +196,9 @@ class Xcloner_Api
|
|
192 |
|
193 |
$schedule['start_at'] = $this->form_params['backup_params']['start_at'];
|
194 |
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
$schedule['status'] = $this->xcloner_sanitization->sanitize_input_as_int($_POST['status']);
|
199 |
-
}
|
200 |
} else {
|
201 |
$schedule['status'] = 1;
|
202 |
$schedule['start_at'] = strtotime($this->form_params['backup_params']['schedule_start_date'] .
|
@@ -213,7 +215,6 @@ class Xcloner_Api
|
|
213 |
}
|
214 |
|
215 |
foreach ($tables as $key => $table) {
|
216 |
-
//echo $this->form_params['database'][$db][$key];
|
217 |
$this->form_params['database'][$db][$key] = substr($table, strlen($db) + 1);
|
218 |
}
|
219 |
}
|
@@ -234,11 +235,10 @@ class Xcloner_Api
|
|
234 |
$this->form_params['backup_params']['schedule_storage'] = "";
|
235 |
}
|
236 |
$schedule['remote_storage'] = $this->form_params['backup_params']['schedule_storage'];
|
237 |
-
//$schedule['backup_type'] = $this->form_params['backup_params']['backup_type'];
|
238 |
|
239 |
$schedule['params'] = json_encode($this->form_params);
|
240 |
|
241 |
-
if (
|
242 |
$this->xcloner_database->insert(
|
243 |
$this->xcloner_settings->get_table_prefix() . 'xcloner_scheduler',
|
244 |
$schedule,
|
@@ -251,21 +251,21 @@ class Xcloner_Api
|
|
251 |
$this->xcloner_database->update(
|
252 |
$this->xcloner_settings->get_table_prefix() . 'xcloner_scheduler',
|
253 |
$schedule,
|
254 |
-
array('id' => $
|
255 |
array(
|
256 |
'%s',
|
257 |
'%s'
|
258 |
)
|
259 |
);
|
260 |
}
|
261 |
-
|
262 |
-
|
|
|
263 |
}
|
264 |
|
265 |
if ($this->xcloner_database->last_error) {
|
266 |
$response['error'] = 1;
|
267 |
-
$response['error_message'] = $this->xcloner_database->last_error
|
268 |
-
;
|
269 |
}
|
270 |
|
271 |
$scheduler->update_wp_cron_hooks();
|
@@ -274,11 +274,6 @@ class Xcloner_Api
|
|
274 |
$this->send_response($response);
|
275 |
}
|
276 |
|
277 |
-
/*
|
278 |
-
*
|
279 |
-
* Backup Files API
|
280 |
-
*
|
281 |
-
*/
|
282 |
public function backup_files()
|
283 |
{
|
284 |
$data = array();
|
@@ -286,13 +281,12 @@ class Xcloner_Api
|
|
286 |
|
287 |
$this->check_access();
|
288 |
|
289 |
-
$init = (int)$_POST['init'];
|
290 |
|
291 |
$this->process_params();
|
292 |
|
293 |
$data['finished'] = 1;
|
294 |
|
295 |
-
//$return = $this->archive_system->start_incremental_backup($this->form_params['backup_params'], $this->form_params['extra'], $init);
|
296 |
try {
|
297 |
$data = $this->archive_system->start_incremental_backup(
|
298 |
$this->form_params['backup_params'],
|
@@ -343,10 +337,9 @@ class Xcloner_Api
|
|
343 |
$this->send_response($data);
|
344 |
}
|
345 |
|
346 |
-
|
347 |
-
*
|
348 |
-
*
|
349 |
-
*
|
350 |
*/
|
351 |
public function backup_database()
|
352 |
{
|
@@ -354,7 +347,7 @@ class Xcloner_Api
|
|
354 |
|
355 |
$this->check_access();
|
356 |
|
357 |
-
$init = (int)$_POST['init'];
|
358 |
|
359 |
$this->process_params();
|
360 |
|
@@ -415,7 +408,7 @@ class Xcloner_Api
|
|
415 |
}
|
416 |
|
417 |
if (isset($params->hash)) {
|
418 |
-
$this->xcloner_settings->set_hash($params->hash);
|
419 |
}
|
420 |
|
421 |
$this->form_params['extra'] = array();
|
@@ -994,7 +987,7 @@ class Xcloner_Api
|
|
994 |
<ul class="multipart">
|
995 |
<?php foreach ($file_info['childs'] as $child): ?>
|
996 |
<li>
|
997 |
-
<?php echo $child[0] ?> (<?php echo esc_html(size_format($child[2])) ?>)
|
998 |
<?php
|
999 |
$child_exists_on_local_storage = true;
|
1000 |
if ($storage_selection) {
|
32 |
use Error;
|
33 |
use Exception;
|
34 |
use League\Flysystem\Config;
|
35 |
+
use League\Flysystem\FileExistsException;
|
36 |
use League\Flysystem\FileNotFoundException;
|
37 |
use League\Flysystem\Filesystem;
|
38 |
use League\Flysystem\Adapter\Local;
|
139 |
$this->process_params();
|
140 |
}
|
141 |
|
142 |
+
$id = isset($_POST['id']) ? $this->xcloner_sanitization->sanitize_input_as_int($_POST['id']) : null;
|
143 |
|
144 |
+
|
145 |
+
if ($id !== null) {
|
146 |
$this->form_params['backup_params']['backup_name'] = $this->xcloner_sanitization->sanitize_input_as_string($_POST['backup_name']);
|
147 |
$this->form_params['backup_params']['email_notification'] = $this->xcloner_sanitization->sanitize_input_as_string($_POST['email_notification']);
|
148 |
+
|
149 |
if ($_POST['diff_start_date']) {
|
150 |
$this->form_params['backup_params']['diff_start_date'] = strtotime($this->xcloner_sanitization->sanitize_input_as_string($_POST['diff_start_date']));
|
151 |
} else {
|
152 |
$this->form_params['backup_params']['diff_start_date'] = "";
|
153 |
}
|
154 |
+
|
155 |
$this->form_params['backup_params']['schedule_name'] = $this->xcloner_sanitization->sanitize_input_as_string($_POST['schedule_name']);
|
156 |
|
157 |
if (isset($_POST['backup_encrypt'])) {
|
161 |
$this->form_params['backup_params']['start_at'] = strtotime($_POST['schedule_start_date']);
|
162 |
$this->form_params['backup_params']['schedule_frequency'] = $this->xcloner_sanitization->sanitize_input_as_string($_POST['schedule_frequency']);
|
163 |
$this->form_params['backup_params']['schedule_storage'] = $this->xcloner_sanitization->sanitize_input_as_string($_POST['schedule_storage']);
|
164 |
+
|
165 |
+
$backup_delete_after_remote_transfer = isset($_POST['backup_delete_after_remote_transfer']) ? $this->xcloner_sanitization->sanitize_input_as_int($_POST['backup_delete_after_remote_transfer']) : 0;
|
166 |
+
|
167 |
+
$this->form_params['backup_params']['backup_delete_after_remote_transfer'] = $backup_delete_after_remote_transfer;
|
168 |
|
169 |
$this->form_params['database'] = (stripslashes($this->xcloner_sanitization->sanitize_input_as_raw($_POST['table_params'])));
|
170 |
$this->form_params['excluded_files'] = (stripslashes($this->xcloner_sanitization->sanitize_input_as_raw($_POST['excluded_files'])));
|
196 |
|
197 |
$schedule['start_at'] = $this->form_params['backup_params']['start_at'];
|
198 |
|
199 |
+
$status = isset($_POST['status']) ? $this->xcloner_sanitization->sanitize_input_as_int($_POST['status']) : 0;
|
200 |
+
|
201 |
+
$schedule['status'] = $status;
|
|
|
|
|
202 |
} else {
|
203 |
$schedule['status'] = 1;
|
204 |
$schedule['start_at'] = strtotime($this->form_params['backup_params']['schedule_start_date'] .
|
215 |
}
|
216 |
|
217 |
foreach ($tables as $key => $table) {
|
|
|
218 |
$this->form_params['database'][$db][$key] = substr($table, strlen($db) + 1);
|
219 |
}
|
220 |
}
|
235 |
$this->form_params['backup_params']['schedule_storage'] = "";
|
236 |
}
|
237 |
$schedule['remote_storage'] = $this->form_params['backup_params']['schedule_storage'];
|
|
|
238 |
|
239 |
$schedule['params'] = json_encode($this->form_params);
|
240 |
|
241 |
+
if ($id === null) {
|
242 |
$this->xcloner_database->insert(
|
243 |
$this->xcloner_settings->get_table_prefix() . 'xcloner_scheduler',
|
244 |
$schedule,
|
251 |
$this->xcloner_database->update(
|
252 |
$this->xcloner_settings->get_table_prefix() . 'xcloner_scheduler',
|
253 |
$schedule,
|
254 |
+
array('id' => $id),
|
255 |
array(
|
256 |
'%s',
|
257 |
'%s'
|
258 |
)
|
259 |
);
|
260 |
}
|
261 |
+
|
262 |
+
if ($id !== null) {
|
263 |
+
$scheduler->update_cron_hook($id);
|
264 |
}
|
265 |
|
266 |
if ($this->xcloner_database->last_error) {
|
267 |
$response['error'] = 1;
|
268 |
+
$response['error_message'] = $this->xcloner_database->last_error;
|
|
|
269 |
}
|
270 |
|
271 |
$scheduler->update_wp_cron_hooks();
|
274 |
$this->send_response($response);
|
275 |
}
|
276 |
|
|
|
|
|
|
|
|
|
|
|
277 |
public function backup_files()
|
278 |
{
|
279 |
$data = array();
|
281 |
|
282 |
$this->check_access();
|
283 |
|
284 |
+
$init = (int)$this->xcloner_sanitization->sanitize_input_as_int($_POST['init']);
|
285 |
|
286 |
$this->process_params();
|
287 |
|
288 |
$data['finished'] = 1;
|
289 |
|
|
|
290 |
try {
|
291 |
$data = $this->archive_system->start_incremental_backup(
|
292 |
$this->form_params['backup_params'],
|
337 |
$this->send_response($data);
|
338 |
}
|
339 |
|
340 |
+
/**
|
341 |
+
* @throws FileNotFoundException
|
342 |
+
* @throws FileExistsException
|
|
|
343 |
*/
|
344 |
public function backup_database()
|
345 |
{
|
347 |
|
348 |
$this->check_access();
|
349 |
|
350 |
+
$init = (int)$this->xcloner_sanitization->sanitize_input_as_int($_POST['init']);
|
351 |
|
352 |
$this->process_params();
|
353 |
|
408 |
}
|
409 |
|
410 |
if (isset($params->hash)) {
|
411 |
+
$this->xcloner_settings->set_hash($this->xcloner_sanitization->sanitize_input_as_string($params->hash));
|
412 |
}
|
413 |
|
414 |
$this->form_params['extra'] = array();
|
987 |
<ul class="multipart">
|
988 |
<?php foreach ($file_info['childs'] as $child): ?>
|
989 |
<li>
|
990 |
+
<?php echo esc_html($child[0]) ?> (<?php echo esc_html(size_format($child[2])) ?>)
|
991 |
<?php
|
992 |
$child_exists_on_local_storage = true;
|
993 |
if ($storage_selection) {
|
vendor/autoload.php
CHANGED
@@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) {
|
|
9 |
|
10 |
require_once __DIR__ . '/composer/autoload_real.php';
|
11 |
|
12 |
-
return
|
9 |
|
10 |
require_once __DIR__ . '/composer/autoload_real.php';
|
11 |
|
12 |
+
return ComposerAutoloaderInitfaf514c95c094bb20ad810521bbe50d4::getLoader();
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -24,18 +24,18 @@ class ComposerAutoloaderInit7d696a29834d5159beec8c46eb63aace
|
|
24 |
|
25 |
require __DIR__ . '/platform_check.php';
|
26 |
|
27 |
-
spl_autoload_register(array('
|
28 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
29 |
-
spl_autoload_unregister(array('
|
30 |
|
31 |
require __DIR__ . '/autoload_static.php';
|
32 |
-
call_user_func(\Composer\Autoload\
|
33 |
|
34 |
$loader->register(true);
|
35 |
|
36 |
-
$includeFiles = \Composer\Autoload\
|
37 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
38 |
-
|
39 |
}
|
40 |
|
41 |
return $loader;
|
@@ -47,7 +47,7 @@ class ComposerAutoloaderInit7d696a29834d5159beec8c46eb63aace
|
|
47 |
* @param string $file
|
48 |
* @return void
|
49 |
*/
|
50 |
-
function
|
51 |
{
|
52 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
53 |
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInitfaf514c95c094bb20ad810521bbe50d4
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
24 |
|
25 |
require __DIR__ . '/platform_check.php';
|
26 |
|
27 |
+
spl_autoload_register(array('ComposerAutoloaderInitfaf514c95c094bb20ad810521bbe50d4', 'loadClassLoader'), true, true);
|
28 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
29 |
+
spl_autoload_unregister(array('ComposerAutoloaderInitfaf514c95c094bb20ad810521bbe50d4', 'loadClassLoader'));
|
30 |
|
31 |
require __DIR__ . '/autoload_static.php';
|
32 |
+
call_user_func(\Composer\Autoload\ComposerStaticInitfaf514c95c094bb20ad810521bbe50d4::getInitializer($loader));
|
33 |
|
34 |
$loader->register(true);
|
35 |
|
36 |
+
$includeFiles = \Composer\Autoload\ComposerStaticInitfaf514c95c094bb20ad810521bbe50d4::$files;
|
37 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
38 |
+
composerRequirefaf514c95c094bb20ad810521bbe50d4($fileIdentifier, $file);
|
39 |
}
|
40 |
|
41 |
return $loader;
|
47 |
* @param string $file
|
48 |
* @return void
|
49 |
*/
|
50 |
+
function composerRequirefaf514c95c094bb20ad810521bbe50d4($fileIdentifier, $file)
|
51 |
{
|
52 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
53 |
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
|
@@ -7957,10 +7957,10 @@ class ComposerStaticInit7d696a29834d5159beec8c46eb63aace
|
|
7957 |
public static function getInitializer(ClassLoader $loader)
|
7958 |
{
|
7959 |
return \Closure::bind(function () use ($loader) {
|
7960 |
-
$loader->prefixLengthsPsr4 =
|
7961 |
-
$loader->prefixDirsPsr4 =
|
7962 |
-
$loader->prefixesPsr0 =
|
7963 |
-
$loader->classMap =
|
7964 |
|
7965 |
}, null, ClassLoader::class);
|
7966 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInitfaf514c95c094bb20ad810521bbe50d4
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
|
7957 |
public static function getInitializer(ClassLoader $loader)
|
7958 |
{
|
7959 |
return \Closure::bind(function () use ($loader) {
|
7960 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInitfaf514c95c094bb20ad810521bbe50d4::$prefixLengthsPsr4;
|
7961 |
+
$loader->prefixDirsPsr4 = ComposerStaticInitfaf514c95c094bb20ad810521bbe50d4::$prefixDirsPsr4;
|
7962 |
+
$loader->prefixesPsr0 = ComposerStaticInitfaf514c95c094bb20ad810521bbe50d4::$prefixesPsr0;
|
7963 |
+
$loader->classMap = ComposerStaticInitfaf514c95c094bb20ad810521bbe50d4::$classMap;
|
7964 |
|
7965 |
}, null, ClassLoader::class);
|
7966 |
}
|
vendor/composer/installed.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php return array(
|
2 |
'root' => array(
|
3 |
'name' => 'watchfulli/xcloner-wordpress',
|
4 |
-
'pretty_version' => 'v4.4.
|
5 |
-
'version' => '4.4.
|
6 |
-
'reference' => '
|
7 |
'type' => 'library',
|
8 |
'install_path' => __DIR__ . '/../../',
|
9 |
'aliases' => array(),
|
@@ -404,9 +404,9 @@
|
|
404 |
'dev_requirement' => false,
|
405 |
),
|
406 |
'watchfulli/xcloner-wordpress' => array(
|
407 |
-
'pretty_version' => 'v4.4.
|
408 |
-
'version' => '4.4.
|
409 |
-
'reference' => '
|
410 |
'type' => 'library',
|
411 |
'install_path' => __DIR__ . '/../../',
|
412 |
'aliases' => array(),
|
1 |
<?php return array(
|
2 |
'root' => array(
|
3 |
'name' => 'watchfulli/xcloner-wordpress',
|
4 |
+
'pretty_version' => 'v4.4.4',
|
5 |
+
'version' => '4.4.4.0',
|
6 |
+
'reference' => 'd4aac816e6c4263451b2510bf01d8fc2281ec576',
|
7 |
'type' => 'library',
|
8 |
'install_path' => __DIR__ . '/../../',
|
9 |
'aliases' => array(),
|
404 |
'dev_requirement' => false,
|
405 |
),
|
406 |
'watchfulli/xcloner-wordpress' => array(
|
407 |
+
'pretty_version' => 'v4.4.4',
|
408 |
+
'version' => '4.4.4.0',
|
409 |
+
'reference' => 'd4aac816e6c4263451b2510bf01d8fc2281ec576',
|
410 |
'type' => 'library',
|
411 |
'install_path' => __DIR__ . '/../../',
|
412 |
'aliases' => array(),
|
xcloner.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* Plugin Name: XCloner - Site Backup and Restore
|
16 |
* Plugin URI: https://xcloner.com/
|
17 |
* Description: XCloner is a tool that will help you manage your website backups, generate/restore/move so your website will be always secured! With XCloner you will be able to clone your site to any other location with just a few clicks, as well as transfer the backup archives to remote FTP, SFTP, DropBox, Amazon S3, Google Drive, WebDAV, Backblaze, Azure accounts.
|
18 |
-
* Version: 4.4.
|
19 |
* Author: watchful
|
20 |
* Author URI: https://watchful.net/
|
21 |
* License: GPL-2.0+
|
15 |
* Plugin Name: XCloner - Site Backup and Restore
|
16 |
* Plugin URI: https://xcloner.com/
|
17 |
* Description: XCloner is a tool that will help you manage your website backups, generate/restore/move so your website will be always secured! With XCloner you will be able to clone your site to any other location with just a few clicks, as well as transfer the backup archives to remote FTP, SFTP, DropBox, Amazon S3, Google Drive, WebDAV, Backblaze, Azure accounts.
|
18 |
+
* Version: 4.4.4
|
19 |
* Author: watchful
|
20 |
* Author URI: https://watchful.net/
|
21 |
* License: GPL-2.0+
|