PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 3.1.22.3
JetBackup – Backup, Restore & Migrate v3.1.22.3
3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / src / JetBackup / Restore / restore.template.php
backup / src / JetBackup / Restore Last commit date
.htaccess 1 year ago Restore.php 7 months ago index.html 1 year ago restore.template.php 7 months ago web.config 1 year ago
restore.template.php
119 lines
1 <?php
2 if(!defined('__JETBACKUP_RESTORE__')) exit;
3
4 if (function_exists('opcache_get_status')) ini_set('opcache.enable', 0);
5 ini_set('display_errors', 1);
6 ini_set('display_startup_errors', 1);
7 error_reporting(E_ALL);
8
9 header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0');
10 header('Pragma: no-cache');
11 header('Expires: 0');
12
13 use JetBackup\Cache\CacheHandler;
14 use JetBackup\Queue\Queue;
15 use JetBackup\Queue\QueueItem;
16 use JetBackup\Restore\Restore;
17 use JetBackup\Wordpress\Wordpress;
18
19 define('__JETBACKUP__', true);
20
21 define('PLUGIN_PATH', 'wp-content' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'backup');
22 define('JB_ROOT', WP_ROOT . DIRECTORY_SEPARATOR . PLUGIN_PATH);
23
24 require_once(JB_ROOT . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'JetBackup' . DIRECTORY_SEPARATOR . 'autoload.php');
25
26 $queue_id = isset($_REQUEST['id']) ? Wordpress::sanitizeTextField(Wordpress::getUnslash($_REQUEST['id'])) : '';
27
28 if(!$queue_id) die('Queue id not provided');
29 CacheHandler::pre();
30 $queue = new QueueItem();
31 $queue->loadByUniqueId($queue_id);
32 if(!$queue->getId()) die('Queue not found');
33 if($queue->getType() != Queue::QUEUE_TYPE_RESTORE) die('Queue type not supported');
34 //if($queue->getStatus() >= Queue::STATUS_DONE) die('Queue already completed');
35 if($queue->getStatus() < Queue::STATUS_RESTORE_WAITING_FOR_RESTORE) die('Queue not ready yet');
36
37 $action = isset($_REQUEST['action']) ? Wordpress::sanitizeTextField(Wordpress::getUnslash($_REQUEST['action'])) : null;
38 if ($action) ( new Restore( $queue ) )->execute($action);
39
40 ?>
41 <!DOCTYPE html>
42 <html lang="en">
43 <head>
44 <meta charset="UTF-8">
45 <meta name="viewport" content="width=device-width, initial-scale=1.0">
46 <title>Restore Progress Status Page</title>
47 <link href="<?php echo PUBLIC_PATH.PLUGIN_PATH; ?>/public/libraries/bootstrap/css/bootstrap.min.css" rel="stylesheet">
48 <link href="<?php echo PUBLIC_PATH.PLUGIN_PATH; ?>/public/css/restore.css" rel="stylesheet">
49
50 <script type="text/javascript" src="<?php echo PUBLIC_PATH.PLUGIN_PATH; ?>/public/js/restore.js"></script>
51 <script type="text/javascript">
52 const restore = new Restore({
53 queue_id: '<?php echo $queue_id; ?>',
54 interval: 1000
55 });
56 </script>
57 </head>
58 <body>
59 <div class="container">
60 <img src="<?php echo PUBLIC_PATH.PLUGIN_PATH; ?>/public/images/logo.png" class="logo" alt="JetBackup Logo">
61 <div class="status-header">
62 Restore Progress
63 </div>
64 <div class="status-container">
65
66 <div class="alert alert-danger alert-dismissible fade show" role="alert" id="error-alert" style="display: none;">
67 <strong>Error:</strong> <span id="error-message"></span>
68 <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close" onclick="restore.closeError()"></button>
69 </div>
70
71 <div class="alert alert-success alert-dismissible fade show" role="alert" id="success-alert" style="display: none;">
72 <strong>Success:</strong> <span id="success-message"></span>
73 <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close" onclick="restore.closeSuccess()"></button>
74 </div>
75
76 <div id="progress-bars-container">
77
78 <div class="status-item">
79 <div class="progress-container">
80 <label>Overall Progress:</label>
81 <div class="progress">
82 <div id="progress" class="progress-bar progress-bar-striped progress-bar-animated bg-primary" role="progressbar" style="width: 0;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div>
83 </div>
84 </div>
85 </div>
86
87 <div class="status-item" id="subprogress-container" style="display: none;">
88 <div class="progress-container">
89 <label id="subprogress-title"></label>
90 <div class="progress">
91 <div id="subprogress" class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" style="width: 0;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div>
92 </div>
93 </div>
94 </div>
95
96 </div>
97
98 <div class="status-item">
99 <label>Status Log:</label>
100 <div class="log-container" id="log-container">
101 <div class="log-entry"></div>
102 </div>
103 </div>
104 <div class="d-flex justify-content-center gap-2">
105 <button type="button" class="btn btn-danger" id="cancel-btn" onclick="restore.cancel();">Cancel</button>
106 <button type="button" class="btn btn-secondary" id="force-refresh" onclick="restore.refresh();">Force Refresh</button>
107 <button type="button" class="btn btn-success btn-lg" id="finalize-btn" onclick="restore.completed();" style="display: none; width: 200px;">Complete Restore</button>
108 </div>
109
110 </div>
111 <div class="footer">
112 &copy; <?php echo date("Y") ?> JetBackup v<?php echo \JetBackup\JetBackup::VERSION ?>. All rights reserved.
113 </div>
114 </div>
115
116 <script type="text/javascript">restore.start();</script>
117
118 </body>
119 </html>