PluginProbe ʕ •ᴥ•ʔ
UpdraftPlus: WP Backup & Migration Plugin / 1.24.10
UpdraftPlus: WP Backup & Migration Plugin v1.24.10
1.26.4 1.26.3 1.9.19 1.9.25 1.9.26 1.9.30 1.9.31 1.9.32 1.9.4 1.9.40 1.9.41 1.9.42 1.9.43 1.9.44 1.9.45 1.9.46 1.9.5 1.9.50 1.9.51 1.9.60 1.9.62 1.9.63 1.9.64 1.11.12 1.4.8 1.11.15 1.4.9 1.11.17 1.5.16 1.11.18 1.5.20 1.11.2 1.5.21 1.11.20 1.5.22 1.11.23 1.5.5 1.11.24 1.5.6 1.11.25 1.5.7 1.11.26 1.5.8 1.11.27 1.5.9 1.11.28 1.6.1 1.11.3 1.6.17 1.11.4 1.6.2 1.11.5 1.6.46 1.11.8 1.7.0 1.11.9 1.7.1 1.12.0 1.7.18 1.12.1 1.7.20 1.12.12 1.7.3 1.12.13 1.7.34 1.12.15 1.7.35 1.12.17 1.7.39 1.12.2 1.7.40 1.12.20 1.7.41 1.12.23 1.8.1 1.12.24 1.8.11 1.12.25 1.8.12 1.12.28 1.8.13 1.12.29 1.8.2 1.12.30 1.8.5 1.12.32 1.8.8 1.12.34 1.9.0 1.12.35 1.9.13 1.12.37 1.9.15 1.12.39 1.9.17 1.12.4 1.12.40 1.12.6 1.13.1 1.13.11 1.13.12 1.13.15 1.13.16 1.13.2 1.13.3 1.13.4 1.13.5 1.13.6 1.13.7 1.13.8 1.13.9 1.14.10 1.14.11 1.14.12 1.14.13 1.14.2 1.14.3 1.14.4 1.14.5 1.14.7 1.14.9 1.15.0 1.15.2 1.15.3 1.15.5 1.15.6 1.15.7 1.16.0 1.16.10 1.16.11 1.16.12 1.16.13 1.16.14 1.16.15 1.16.16 1.16.17 1.16.20 1.16.21 1.16.22 1.16.23 1.16.24 1.16.25 1.16.26 1.16.28 1.16.29 1.16.32 1.16.34 1.16.35 1.16.36 1.16.37 1.16.4 1.16.40 1.16.41 1.16.42 1.16.43 1.16.44 1.16.45 1.16.46 1.16.47 1.16.48 1.16.49 1.16.5 1.16.50 1.16.51 1.16.53 1.16.55 1.16.56 1.16.59 1.16.6 1.16.60 1.16.61 1.16.62 1.16.63 1.16.64 1.16.65 1.16.66 1.16.67 1.16.68 1.16.69 1.16.7 1.16.8 1.16.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.14 1.2.15 1.2.16 1.2.17 1.2.19 1.2.2 1.2.20 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.33 1.2.35 1.2.36 1.2.38 1.2.39 1.2.4 1.2.40 1.2.41 1.2.42 1.2.43 1.2.44 1.2.45 1.2.46 1.2.5 1.2.7 1.2.8 1.2.9 1.22.1 1.22.10 1.22.11 1.22.12 1.22.14 1.22.15 1.22.16 1.22.17 1.22.18 1.22.19 1.22.20 1.22.21 1.22.22 1.22.23 1.22.24 1.22.3 1.22.4 1.22.5 1.22.6 1.22.7 1.22.8 1.22.9 1.23.1 1.23.10 1.23.11 1.23.12 1.23.13 1.23.15 1.23.16 1.23.2 1.23.3 1.23.4 1.23.5 1.23.6 1.23.7 1.23.8 1.23.9 1.24.1 1.24.10 1.24.11 1.24.12 1.24.2 trunk 1.24.3 0.7.4 1.24.4 0.7.7 1.24.5 0.8.28 1.24.6 0.8.29 1.24.7 0.8.30 1.24.8 0.8.31 1.24.9 0.8.32 1.25.1 0.8.33 1.25.2 0.8.36 1.25.3 0.8.37 1.25.5 0.8.50 1.25.6 0.8.51 1.25.7 0.9.1 1.25.8 0.9.10 1.25.9 0.9.11 1.26.1 0.9.12 1.26.2 0.9.2 1.3.10 0.9.20 1.3.12 0.9.21 1.3.14 0.9.22 1.3.15 1.0.10 1.3.17 1.0.11 1.3.18 1.0.12 1.3.19 1.0.15 1.3.2 1.0.16 1.3.20 1.0.18 1.3.22 1.0.20 1.3.23 1.0.3 1.3.24 1.0.4 1.3.25 1.0.5 1.3.3 1.0.6 1.3.4 1.0.7 1.3.6 1.0.8 1.3.7 1.0.9 1.3.8 1.1.0 1.3.9 1.1.10 1.4.0 1.1.11 1.4.10 1.1.12 1.4.11 1.1.13 1.4.12 1.1.14 1.4.13 1.1.15 1.4.14 1.1.16 1.4.15 1.1.17 1.4.2 1.1.2 1.4.27 1.1.3 1.4.28 1.1.5 1.4.29 1.1.6 1.4.30 1.1.8 1.4.4 1.1.9 1.4.48 1.10.1 1.4.5 1.10.3 1.4.6 1.11.1 1.4.7
updraftplus / includes / updraftclone / temporary-clone-dash-notice.php
updraftplus / includes / updraftclone Last commit date
temporary-clone-auto-login.php 4 years ago temporary-clone-dash-notice.php 2 years ago temporary-clone-restore.php 3 years ago temporary-clone-status.php 2 years ago temporary-clone-user-notice.php 2 years ago
temporary-clone-dash-notice.php
171 lines
1 <?php
2
3 if (!defined('ABSPATH')) die('No direct access allowed');
4
5 class UpdraftPlus_Temporary_Clone_Dash_Notice {
6
7 /**
8 * Constructor for the class.
9 */
10 public function __construct() {
11 add_action('updraftplus_temporary_clone_refresh_connection', array($this, 'refresh_connection'));
12 add_action('wp_ajax_updraftplus_dash_notice_ajax', array($this, 'updraftplus_dash_notice_ajax'));
13 add_action('all_admin_notices', array($this, 'all_admin_notices_dashboard_notice'));
14
15 if (!wp_next_scheduled('updraftplus_temporary_clone_refresh_connection')) {
16 wp_schedule_event(time(), 'twicedaily', 'updraftplus_temporary_clone_refresh_connection');
17 }
18
19 if ('' == get_site_option('updraftplus_clone_scheduled_removal', '') || 0 == get_site_option('updraftplus_clone_package_cost', 0)) {
20 $this->refresh_connection();
21 }
22 }
23
24 /**
25 * This function will add a dashboard notice to every page, that shows the user when their clone will expire and directs them to UpdraftPlus.com to extend their clones life.
26 *
27 * @return void
28 */
29 public function all_admin_notices_dashboard_notice() {
30 $date = strtotime(get_site_option('updraftplus_clone_scheduled_removal', ''));
31 if ('' == $date) {
32 $pretty_date = __('Unable to get renew date', 'updraftplus');
33 $date_diff = '';
34 } else {
35 $pretty_date = get_date_from_gmt(gmdate('Y-m-d H:i:s', (int) $date), 'M d, Y G:i');
36 $date_diff = sprintf(__('%s from now', 'updraftplus'), human_time_diff($date));
37 }
38
39 $package_cost = get_site_option('updraftplus_clone_package_cost', 0);
40 $package_cost = empty($package_cost) ? 1 : $package_cost;
41 ?>
42 <div id="updraftplus_temporary_clone-dashnotice" class="updated">
43 <div style="float:right;"><a href="#" onclick="jQuery.post('<?php echo admin_url('admin-ajax.php'); ?>', {action: 'updraftplus_dash_notice_ajax', subaction: 'refresh_connection', nonce: '<?php echo wp_create_nonce('updraftplus_refresh_connection');?>' }, function() { location.reload(); });"><?php _e('Refresh connection', 'updraftplus'); ?></a></div>
44 <h1><?php _e('Welcome to your UpdraftClone (temporary clone)', 'updraftplus'); ?></h1>
45 <p>
46 <?php echo __('Your clone will renew on:', 'updraftplus') . ' ' . $pretty_date . ' ' . get_option('timezone_string') . ' (' . $date_diff . ')'; ?>.
47 <?php echo sprintf(__('Each time your clone renews (weekly) it costs %s.', 'updraftplus'), sprintf(_n('%d token', '%d tokens', $package_cost, 'updraftplus'), $package_cost)).' '.__('You can shut this clone down at the following link:', 'updraftplus'); ?> <a target="_blank" href="https://updraftplus.com/my-account/clones/"><?php _e('Manage your clones', 'updraftplus'); ?></a>
48 </p>
49 <?php
50 $show_removal_warning = get_site_option('updraftplus_clone_removal_warning', false);
51
52 if ($show_removal_warning) echo '<p>'.__('Warning: You have no clone tokens remaining and either no subscriptions or no subscription that will renew before the clone expiry date.', 'updraftplus').'</p>'
53 ?>
54 </div>
55 <?php
56 }
57
58 /**
59 * This function will perform security checks before allowing the ajax calls for the UpdraftClone VPS mu-plugin be processed.
60 *
61 * @return void
62 */
63 public function updraftplus_dash_notice_ajax() {
64
65 if (is_user_logged_in() && current_user_can('manage_options')) {
66 $this->process_dash_notice_ajax();
67 } else {
68 return;
69 }
70 }
71
72 /**
73 * This function will handle the ajax calls for the UpdraftClone notice mu-plugin.
74 *
75 * @return void
76 */
77 public function process_dash_notice_ajax() {
78 $return = array('code' => 'fail', 'data' => '');
79
80 if (!isset($_POST['subaction'])) {
81 $return['code'] = 'error';
82 $return['data'] = 'Missing subaction';
83 echo json_encode($return);
84 die();
85 }
86
87 if ('refresh_connection' === $_POST['subaction']) {
88 check_ajax_referer('updraftplus_refresh_connection', 'nonce');
89
90 $result = $this->refresh_connection();
91
92 if ($result) {
93 $return['code'] = 'success';
94 $return['data'] = $result;
95 } else {
96 $return['code'] = 'error';
97 $return['data'] = $result;
98 }
99
100 echo json_encode($return);
101 die();
102 } else {
103 $return['code'] = 'error';
104 $return['data'] = 'Unknown action';
105 echo json_encode($return);
106 die();
107 }
108 }
109
110 /**
111 * This function will refresh the stored clones expire date by calling UpdraftPlus.com and getting the latest value.
112 * Note this function needs three defines to work UPDRAFTPLUS_USER_ID and UPDRAFTPLUS_VPS_ID and UPDRAFTPLUS_UNIQUE_TOKEN.
113 *
114 * @return array - that contains the updated expire data or error information
115 */
116 public function refresh_connection() {
117 global $updraftplus;
118
119 if (!defined('UPDRAFTPLUS_USER_ID') || !is_numeric(UPDRAFTPLUS_USER_ID) || !defined('UPDRAFTPLUS_VPS_ID') || !is_numeric(UPDRAFTPLUS_VPS_ID)) {
120 return array('code' => 'error', 'data' => 'No user or VPS ID found');
121 }
122
123 if (!defined('UPDRAFTPLUS_UNIQUE_TOKEN')) return array('code' => 'error', 'data' => 'No unique token found');
124
125 $user_id = UPDRAFTPLUS_USER_ID;
126 $vps_id = UPDRAFTPLUS_VPS_ID;
127 $token = UPDRAFTPLUS_UNIQUE_TOKEN;
128
129 $data = array('user_id' => $user_id, 'vps_id' => $vps_id, 'token' => $token);
130 $result = $updraftplus->get_updraftplus_clone()->clone_status($data);
131
132 if (!isset($result['data'])) return array('code' => 'error', 'data' => 'No data returned from clone status call');
133
134 $vps_info = $result['data'];
135
136 if (empty($vps_info['scheduled_removal'])) return array('code' => 'error', 'data' => 'No scheduled removal date found');
137 if (empty($vps_info['package_cost'])) return array('code' => 'error', 'data' => 'Missing the expected clone package cost information');
138
139 update_site_option('updraftplus_clone_scheduled_removal', $vps_info['scheduled_removal']);
140 update_site_option('updraftplus_clone_package_cost', $vps_info['package_cost']);
141
142 $clone_removal_warning = false;
143
144 if (isset($vps_info['tokens']) && 0 == $vps_info['tokens']) {
145 if (empty($vps_info['subscription_renewals'])) {
146 $clone_removal_warning = true;
147 } else {
148 $subscription_before_expire = false;
149 foreach ($vps_info['subscription_renewals'] as $renewal) {
150 if ($renewal < $vps_info['scheduled_removal']) $subscription_before_expire = true;
151 }
152
153 if (!$subscription_before_expire) $clone_removal_warning = true;
154 }
155 }
156
157 update_site_option('updraftplus_clone_removal_warning', $clone_removal_warning);
158
159 $vps_data = array(
160 'scheduled_removal' => $vps_info['scheduled_removal'],
161 'package_cost' => $vps_info['package_cost']
162 );
163
164 return array('code' => 'success', 'data' => $vps_data);
165 }
166 }
167
168 if (defined('UPDRAFTPLUS_THIS_IS_CLONE')) {
169 new UpdraftPlus_Temporary_Clone_Dash_Notice();
170 }
171