PluginProbe ʕ •ᴥ•ʔ
UpdraftPlus: WP Backup & Migration Plugin / 1.26.4
UpdraftPlus: WP Backup & Migration Plugin v1.26.4
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 1 month ago temporary-clone-dash-notice.php 7 months ago temporary-clone-restore.php 3 weeks ago temporary-clone-status.php 7 months ago temporary-clone-user-notice.php 1 year ago
temporary-clone-dash-notice.php
181 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 /* translators: %s: human-readable time difference */
37 $date_diff = sprintf(__('%s from now', 'updraftplus'), human_time_diff($date));
38 }
39
40 $package_cost = get_site_option('updraftplus_clone_package_cost', 0);
41 $package_cost = empty($package_cost) ? 1 : $package_cost;
42 ?>
43 <div id="updraftplus_temporary_clone-dashnotice" class="updated">
44 <div style="float:right;"><a href="#" onclick="jQuery.post('<?php echo esc_js(admin_url('admin-ajax.php')); ?>', {action: 'updraftplus_dash_notice_ajax', subaction: 'refresh_connection', nonce: '<?php echo esc_js(wp_create_nonce('updraftplus_refresh_connection'));?>' }, function() { location.reload(); });"><?php esc_html_e('Refresh connection', 'updraftplus'); ?></a></div>
45 <h1><?php esc_html_e('Welcome to your UpdraftClone (temporary clone)', 'updraftplus'); ?></h1>
46 <p>
47 <?php echo esc_html(__('Your clone will renew on:', 'updraftplus') . ' ' . $pretty_date . ' ' . get_option('timezone_string') . ' (' . $date_diff . ')'); ?>.
48 <?php
49 echo esc_html(
50 sprintf(
51 /* translators: %s: Token cost */
52 __('Each time your clone renews (weekly) it costs %s.', 'updraftplus'),
53 /* translators: %d: Number of tokens */
54 sprintf(_n('%d token', '%d tokens', $package_cost, 'updraftplus'), $package_cost)
55 ).' '.__('You can shut this clone down at the following link:', 'updraftplus')
56 );
57 ?> <a target="_blank" href="https://teamupdraft.com/my-account/?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=manage-your-clones&utm_creative_format=notice"><?php esc_html_e('Manage your clones', 'updraftplus'); ?></a>
58 </p>
59 <?php
60 $show_removal_warning = get_site_option('updraftplus_clone_removal_warning', false);
61
62 if ($show_removal_warning) echo '<p>'.esc_html__('Warning: You have no clone tokens remaining and either no subscriptions or no subscription that will renew before the clone expiry date.', 'updraftplus').'</p>'
63 ?>
64 </div>
65 <?php
66 }
67
68 /**
69 * This function will perform security checks before allowing the ajax calls for the UpdraftClone VPS mu-plugin be processed.
70 *
71 * @return void
72 */
73 public function updraftplus_dash_notice_ajax() {
74
75 if (is_user_logged_in() && current_user_can('manage_options')) {
76 $this->process_dash_notice_ajax();
77 } else {
78 return;
79 }
80 }
81
82 /**
83 * This function will handle the ajax calls for the UpdraftClone notice mu-plugin.
84 *
85 * @return void
86 */
87 public function process_dash_notice_ajax() {
88 $return = array('code' => 'fail', 'data' => '');
89
90 if (!isset($_POST['subaction'])) {
91 $return['code'] = 'error';
92 $return['data'] = 'Missing subaction';
93 echo json_encode($return);
94 die();
95 }
96
97 if ('refresh_connection' === $_POST['subaction']) {
98 check_ajax_referer('updraftplus_refresh_connection', 'nonce');
99
100 $result = $this->refresh_connection();
101
102 if ($result) {
103 $return['code'] = 'success';
104 $return['data'] = $result;
105 } else {
106 $return['code'] = 'error';
107 $return['data'] = $result;
108 }
109
110 echo json_encode($return);
111 die();
112 } else {
113 $return['code'] = 'error';
114 $return['data'] = 'Unknown action';
115 echo json_encode($return);
116 die();
117 }
118 }
119
120 /**
121 * This function will refresh the stored clones expire date by calling UpdraftPlus.com and getting the latest value.
122 * Note this function needs three defines to work UPDRAFTPLUS_USER_ID and UPDRAFTPLUS_VPS_ID and UPDRAFTPLUS_UNIQUE_TOKEN.
123 *
124 * @return array - that contains the updated expire data or error information
125 */
126 public function refresh_connection() {
127 global $updraftplus;
128
129 if (!defined('UPDRAFTPLUS_USER_ID') || !is_numeric(UPDRAFTPLUS_USER_ID) || !defined('UPDRAFTPLUS_VPS_ID') || !is_numeric(UPDRAFTPLUS_VPS_ID)) {
130 return array('code' => 'error', 'data' => 'No user or VPS ID found');
131 }
132
133 if (!defined('UPDRAFTPLUS_UNIQUE_TOKEN')) return array('code' => 'error', 'data' => 'No unique token found');
134
135 $user_id = UPDRAFTPLUS_USER_ID;
136 $vps_id = UPDRAFTPLUS_VPS_ID;
137 $token = UPDRAFTPLUS_UNIQUE_TOKEN;
138
139 $data = array('user_id' => $user_id, 'vps_id' => $vps_id, 'token' => $token);
140 $result = $updraftplus->get_updraftplus_clone()->clone_status($data);
141
142 if (!isset($result['data'])) return array('code' => 'error', 'data' => 'No data returned from clone status call');
143
144 $vps_info = $result['data'];
145
146 if (empty($vps_info['scheduled_removal'])) return array('code' => 'error', 'data' => 'No scheduled removal date found');
147 if (empty($vps_info['package_cost'])) return array('code' => 'error', 'data' => 'Missing the expected clone package cost information');
148
149 update_site_option('updraftplus_clone_scheduled_removal', $vps_info['scheduled_removal']);
150 update_site_option('updraftplus_clone_package_cost', $vps_info['package_cost']);
151
152 $clone_removal_warning = false;
153
154 if (isset($vps_info['tokens']) && 0 == $vps_info['tokens']) {
155 if (empty($vps_info['subscription_renewals'])) {
156 $clone_removal_warning = true;
157 } else {
158 $subscription_before_expire = false;
159 foreach ($vps_info['subscription_renewals'] as $renewal) {
160 if ($renewal < $vps_info['scheduled_removal']) $subscription_before_expire = true;
161 }
162
163 if (!$subscription_before_expire) $clone_removal_warning = true;
164 }
165 }
166
167 update_site_option('updraftplus_clone_removal_warning', $clone_removal_warning);
168
169 $vps_data = array(
170 'scheduled_removal' => $vps_info['scheduled_removal'],
171 'package_cost' => $vps_info['package_cost']
172 );
173
174 return array('code' => 'success', 'data' => $vps_data);
175 }
176 }
177
178 if (defined('UPDRAFTPLUS_THIS_IS_CLONE')) {
179 new UpdraftPlus_Temporary_Clone_Dash_Notice();
180 }
181