PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.5
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.5
16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 All 506 releases
← All changes | modules/scan/class-admin-sidebar-link.php +53 -7 16.3-a.7 → 16.3-a.5 View file →
@@ -1,7 +1,7 @@
1 1 <?php
2 2 /**
3 - * A class that adds a scan link to the admin sidebar.
3 + * A class that adds a scan and backup link to the admin sidebar.
4 4 *
5 5 * @package automattic/jetpack
6 6 */
7 7
@@ -7,8 +7,9 @@
7 7
8 8 namespace Automattic\Jetpack\Scan;
9 9
10 10 use Automattic\Jetpack\Admin_UI\Admin_Menu;
11 +use Automattic\Jetpack\My_Jetpack\Products\Backup;
11 12 use Automattic\Jetpack\Redirect;
12 13 use Automattic\Jetpack\Status\Host;
13 14 use Jetpack_Core_Json_Api_Endpoints;
14 15
@@ -59,9 +60,9 @@
59 60 add_action( self::SCHEDULE_ACTION_HOOK, array( $this, 'refresh_state_cache' ) );
60 61 }
61 62
62 63 /**
63 - * Adds a link to the Scan page.
64 + * Adds a link to the Scan and Backup page.
64 65 */
65 66 public function maybe_add_admin_link() {
66 67 if ( ! $this->should_show_link() ) {
67 68 return;
@@ -94,15 +95,25 @@
94 95 $position,
95 96 array( 'key' => 'jetpack-scan-cloud' )
96 97 );
97 98 }
99 +
100 + if ( $this->should_show_backup() ) {
101 + Admin_Menu::add_menu(
102 + /** "VaultPress Backup" is a product name, do not translate. */
103 + 'VaultPress Backup',
104 + 'VaultPress Backup <span aria-hidden="true">↗</span>',
105 + 'manage_options',
106 + esc_url( Redirect::get_url( 'calypso-backups' ) ),
107 + null,
108 + $position,
109 + array( 'key' => 'jetpack-backup-cloud' )
110 + );
111 + }
98 112 }
99 113
100 114 /**
101 115 * Refreshes the state cache via API call. Called via cron.
102 - *
103 - * Still warms the rewind state, which this class no longer reads itself:
104 - * Jetpack_Core_Json_Api_Endpoints::rewind_data() serves it from that cache.
105 116 */
106 117 public function refresh_state_cache() {
107 118 Jetpack_Core_Json_Api_Endpoints::get_scan_state();
108 119 Jetpack_Core_Json_Api_Endpoints::get_rewind_data();
@@ -113,9 +124,9 @@
113 124 *
114 125 * @return boolean
115 126 */
116 127 private function should_show_link() {
117 - // Jetpack Scan is currently not supported on multisite.
128 + // Jetpack Scan/Backup is currently not supported on multisite.
118 129 if ( is_multisite() ) {
119 130 return false;
120 131 }
121 132
@@ -124,9 +135,9 @@
124 135 if ( class_exists( 'VaultPress' ) ) {
125 136 return false;
126 137 }
127 138
128 - return $this->should_show_scan() || $this->should_show_scan_history_only();
139 + return $this->should_show_scan() || $this->should_show_backup() || $this->should_show_scan_history_only();
129 140 }
130 141
131 142 /**
132 143 * Check if we should display the Scan menu item.
@@ -150,8 +161,19 @@
150 161 return $this->has_scan() && ( new Host() )->is_woa_site() && get_option( 'wpcom_admin_interface' ) === 'wp-admin';
151 162 }
152 163
153 164 /**
165 + * Check if we should display the Backup menu item.
166 + *
167 + * It will only be displayed if site has Backup enabled and the stand-alone Backup plugin is not active, because it will have a menu item of its own.
168 + *
169 + * @return boolean
170 + */
171 + private function should_show_backup() {
172 + return $this->has_backup() && ! $this->has_backup_plugin();
173 + }
174 +
175 + /**
154 176 * Detects if Scan is enabled.
155 177 *
156 178 * @return boolean
157 179 */
@@ -171,8 +193,32 @@
171 193 * @return boolean
172 194 */
173 195 private function has_protect_plugin() {
174 196 return class_exists( 'Jetpack_Protect' );
197 + }
198 +
199 + /**
200 + * Detects if Backup is enabled.
201 + *
202 + * @return boolean
203 + */
204 + private function has_backup() {
205 + $this->maybe_refresh_transient_cache();
206 + $rewind_state = get_transient( 'jetpack_rewind_state' );
207 + if ( ! $rewind_state ) {
208 + return false;
209 + }
210 +
211 + return isset( $rewind_state->state ) && 'unavailable' !== $rewind_state->state;
212 + }
213 +
214 + /**
215 + * Detects if Backup plugin is active.
216 + *
217 + * @return boolean
218 + */
219 + private function has_backup_plugin() {
220 + return Backup::is_standalone_plugin_active();
175 221 }
176 222
177 223 /**
178 224 * Triggers a cron job to refresh the Scan and Rewind state cache.