PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.3.2
Jetpack – WP Security, Backup, Speed, & Growth v12.3.2
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 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / masterbar / admin-menu / class-atomic-admin-menu.php
jetpack / modules / masterbar / admin-menu Last commit date
admin-menu-rtl.css 3 years ago admin-menu-rtl.min.css 3 years ago admin-menu.css 3 years ago admin-menu.js 3 years ago admin-menu.min.css 3 years ago class-admin-menu.php 3 years ago class-atomic-admin-menu.php 3 years ago class-base-admin-menu.php 3 years ago class-dashboard-switcher-tracking.php 3 years ago class-domain-only-admin-menu.php 3 years ago class-jetpack-admin-menu.php 3 years ago class-p2-admin-menu.php 4 years ago class-wpcom-admin-menu.php 3 years ago class-wpcom-email-subscription-checker.php 3 years ago dashicon-set.php 4 years ago globe-icon.svg 3 years ago load.php 3 years ago menu-mappings.php 3 years ago
class-atomic-admin-menu.php
464 lines
1 <?php
2 /**
3 * Atomic Admin Menu file.
4 *
5 * @package automattic/jetpack
6 */
7
8 namespace Automattic\Jetpack\Dashboard_Customizations;
9
10 use Automattic\Jetpack\Blaze;
11 use Automattic\Jetpack\Connection\Client;
12 use Automattic\Jetpack\Current_Plan as Jetpack_Plan;
13 use Automattic\Jetpack\Status;
14
15 require_once __DIR__ . '/class-admin-menu.php';
16
17 /**
18 * Class Atomic_Admin_Menu.
19 */
20 class Atomic_Admin_Menu extends Admin_Menu {
21
22 /**
23 * Atomic_Admin_Menu constructor.
24 */
25 protected function __construct() {
26 parent::__construct();
27
28 add_action( 'wp_enqueue_scripts', array( $this, 'dequeue_scripts' ), 20 );
29 add_action( 'admin_enqueue_scripts', array( $this, 'dequeue_scripts' ), 20 );
30 add_action( 'wp_ajax_sidebar_state', array( $this, 'ajax_sidebar_state' ) );
31 add_action( 'wp_ajax_jitm_dismiss', array( $this, 'wp_ajax_jitm_dismiss' ) );
32 add_action( 'wp_ajax_upsell_nudge_jitm', array( $this, 'wp_ajax_upsell_nudge_jitm' ) );
33 add_filter( 'block_editor_settings_all', array( $this, 'site_editor_dashboard_link' ) );
34
35 if ( ! $this->is_api_request ) {
36 add_filter( 'submenu_file', array( $this, 'override_the_theme_installer' ), 10, 2 );
37 }
38
39 add_action(
40 'admin_menu',
41 function () {
42 remove_action( 'admin_menu', 'gutenberg_menu', 9 );
43 },
44 0
45 );
46 }
47
48 /**
49 * Dequeues unnecessary scripts.
50 */
51 public function dequeue_scripts() {
52 wp_dequeue_script( 'a8c_wpcom_masterbar_overrides' ); // Initially loaded in modules/masterbar/masterbar/class-masterbar.php.
53 }
54
55 /**
56 * Determines whether the current locale is right-to-left (RTL).
57 *
58 * Performs the check against the current locale set on the WordPress.com's account settings.
59 * See `Masterbar::__construct` in `modules/masterbar/masterbar/class-masterbar.php`.
60 */
61 public function is_rtl() {
62 return get_user_option( 'jetpack_wpcom_is_rtl' );
63 }
64
65 /**
66 * Create the desired menu output.
67 */
68 public function reregister_menu_items() {
69 parent::reregister_menu_items();
70
71 $this->add_my_home_menu();
72 $this->remove_gutenberg_menu();
73
74 if ( ! get_option( 'wpcom_is_staging_site' ) ) {
75 $this->add_inbox_menu();
76 }
77
78 // Not needed outside of wp-admin.
79 if ( ! $this->is_api_request ) {
80 $this->add_browse_sites_link();
81 $this->add_site_card_menu();
82 $this->add_new_site_link();
83 }
84
85 $this->add_woocommerce_installation_menu();
86 ksort( $GLOBALS['menu'] );
87 }
88
89 /**
90 * Get the preferred view for the given screen.
91 *
92 * @param string $screen Screen identifier.
93 * @param bool $fallback_global_preference (Optional) Whether the global preference for all screens should be used
94 * as fallback if there is no specific preference for the given screen.
95 * Default: true.
96 * @return string
97 */
98 public function get_preferred_view( $screen, $fallback_global_preference = true ) {
99 // Export on Atomic sites are always managed on WP Admin.
100 if ( in_array( $screen, array( 'export.php' ), true ) ) {
101 return self::CLASSIC_VIEW;
102 }
103
104 /**
105 * When Jetpack SSO is disabled, we need to force Calypso because it might create confusion to be redirected to WP-Admin.
106 * Furthermore, because we don't display the quick switcher, users having an WP-Admin interface by default won't be able to go back to the Calyso version.
107 */
108 if ( ! \Jetpack::is_module_active( 'sso' ) ) {
109 return self::DEFAULT_VIEW;
110 }
111
112 return parent::get_preferred_view( $screen, $fallback_global_preference );
113 }
114
115 /**
116 * Adds Users menu.
117 */
118 public function add_users_menu() {
119 $current_locale = get_user_locale();
120 if ( substr( $current_locale, 0, 2 ) === 'en' ) {
121 add_submenu_page( 'users.php', esc_attr__( 'Subscribers', 'jetpack' ), __( 'Subscribers', 'jetpack' ), 'list_users', 'https://wordpress.com/subscribers/' . $this->domain, null, 3 );
122 }
123 }
124
125 /**
126 * Adds Plugins menu.
127 */
128 public function add_plugins_menu() {
129 global $submenu;
130
131 // Calypso plugins screens link.
132 $plugins_slug = 'https://wordpress.com/plugins/' . $this->domain;
133
134 // Link to the Marketplace on sites that can't manage plugins.
135 if (
136 function_exists( 'wpcom_site_has_feature' ) &&
137 ! wpcom_site_has_feature( \WPCOM_Features::MANAGE_PLUGINS )
138 ) {
139 add_menu_page( __( 'Plugins', 'jetpack' ), __( 'Plugins', 'jetpack' ), 'manage_options', $plugins_slug, null, 'dashicons-admin-plugins', '65' );
140 return;
141 }
142
143 if ( ! isset( $submenu['plugins.php'] ) ) {
144 return;
145 }
146
147 $plugins_submenu = $submenu['plugins.php'];
148
149 // Move "Add New" plugin submenu to the top position.
150 foreach ( $plugins_submenu as $submenu_key => $submenu_keys ) {
151 if ( 'plugin-install.php' === $submenu_keys[2] ) {
152 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
153 $submenu['plugins.php'] = array( $submenu_key => $plugins_submenu[ $submenu_key ] ) + $plugins_submenu;
154 }
155 }
156
157 $submenus_to_update = array( 'plugin-install.php' => $plugins_slug );
158
159 $this->update_submenus( 'plugins.php', $submenus_to_update );
160 }
161
162 /**
163 * Adds the site switcher link if user has more than one site.
164 */
165 public function add_browse_sites_link() {
166 $site_count = get_user_option( 'wpcom_site_count' );
167 if ( ! $site_count || $site_count < 2 ) {
168 return;
169 }
170
171 // Add the menu item.
172 add_menu_page( __( 'site-switcher', 'jetpack' ), __( 'Browse sites', 'jetpack' ), 'read', 'https://wordpress.com/sites', null, 'dashicons-arrow-left-alt2', 0 );
173 add_filter( 'add_menu_classes', array( $this, 'set_browse_sites_link_class' ) );
174 }
175
176 /**
177 * Adds a custom element class for Site Switcher menu item.
178 *
179 * @param array $menu Associative array of administration menu items.
180 *
181 * @return array
182 */
183 public function set_browse_sites_link_class( array $menu ) {
184 foreach ( $menu as $key => $menu_item ) {
185 if ( 'site-switcher' !== $menu_item[3] ) {
186 continue;
187 }
188
189 $menu[ $key ][4] = add_cssclass( 'site-switcher', $menu_item[4] );
190 break;
191 }
192
193 return $menu;
194 }
195
196 /**
197 * Adds a link to the menu to create a new site.
198 */
199 public function add_new_site_link() {
200 $site_count = get_user_option( 'wpcom_site_count' );
201 if ( $site_count && $site_count > 1 ) {
202 return;
203 }
204
205 add_menu_page( __( 'Add New Site', 'jetpack' ), __( 'Add New Site', 'jetpack' ), 'read', 'https://wordpress.com/start?ref=calypso-sidebar', null, 'dashicons-plus-alt' );
206 }
207
208 /**
209 * Adds site card component.
210 */
211 public function add_site_card_menu() {
212 $default = plugins_url( 'globe-icon.svg', __FILE__ );
213 $icon = get_site_icon_url( 32, $default );
214 $blog_name = get_option( 'blogname' ) !== '' ? get_option( 'blogname' ) : $this->domain;
215 $is_coming_soon = ( new Status() )->is_coming_soon();
216
217 $badge = '';
218
219 if ( get_option( 'wpcom_is_staging_site' ) ) {
220 $badge .= '<span class="site__badge site__badge-staging">' . esc_html__( 'Staging', 'jetpack' ) . '</span>';
221 }
222
223 if ( ( function_exists( 'site_is_private' ) && site_is_private() ) || $is_coming_soon ) {
224 $badge .= sprintf(
225 '<span class="site__badge site__badge-private">%s</span>',
226 $is_coming_soon ? esc_html__( 'Coming Soon', 'jetpack' ) : esc_html__( 'Private', 'jetpack' )
227 );
228 }
229
230 $site_card = '
231 <div class="site__info">
232 <div class="site__title">%1$s</div>
233 <div class="site__domain">%2$s</div>
234 %3$s
235 </div>';
236
237 $site_card = sprintf(
238 $site_card,
239 $blog_name,
240 $this->domain,
241 $badge
242 );
243
244 add_menu_page( 'site-card', $site_card, 'read', get_home_url(), null, $icon, 1 );
245 add_filter( 'add_menu_classes', array( $this, 'set_site_card_menu_class' ) );
246 }
247
248 /**
249 * Adds a custom element class and id for Site Card's menu item.
250 *
251 * @param array $menu Associative array of administration menu items.
252 *
253 * @return array
254 */
255 public function set_site_card_menu_class( array $menu ) {
256 foreach ( $menu as $key => $menu_item ) {
257 if ( 'site-card' !== $menu_item[3] ) {
258 continue;
259 }
260
261 $classes = ' toplevel_page_site-card';
262
263 // webclip.png is the default on WoA sites. Anything other than that means we have a custom site icon.
264 if ( has_site_icon() && 'https://s0.wp.com/i/webclip.png' !== get_site_icon_url( 512 ) ) {
265 $classes .= ' has-site-icon';
266 }
267
268 $menu[ $key ][4] = $menu_item[4] . $classes;
269 $menu[ $key ][5] = 'toplevel_page_site_card';
270 break;
271 }
272
273 return $menu;
274 }
275
276 /**
277 * Returns the first available upsell nudge.
278 *
279 * @return array
280 */
281 public function get_upsell_nudge() {
282 $jitm = \Automattic\Jetpack\JITMS\JITM::get_instance();
283 $message_path = 'calypso:sites:sidebar_notice';
284 $message = $jitm->get_messages( $message_path, wp_json_encode( array( 'message_path' => $message_path ) ), false );
285
286 if ( isset( $message[0] ) ) {
287 $message = $message[0];
288 return array(
289 'content' => $message->content->message,
290 'cta' => $message->CTA->message, // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
291 'link' => $message->CTA->link, // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
292 'tracks_impression_event_name' => $message->tracks->display->name,
293 'tracks_impression_cta_name' => $message->tracks->display->props->cta_name,
294 'tracks_click_event_name' => $message->tracks->click->name,
295 'tracks_click_cta_name' => $message->tracks->click->props->cta_name,
296 'dismissible' => $message->is_dismissible,
297 'feature_class' => $message->feature_class,
298 'id' => $message->id,
299 );
300 }
301 }
302
303 /**
304 * Adds Stats menu.
305 */
306 public function add_stats_menu() {
307 $menu_title = __( 'Stats', 'jetpack' );
308
309 if (
310 ! $this->is_api_request &&
311 \Jetpack::is_module_active( 'stats' ) &&
312 function_exists( 'stats_get_image_chart_src' )
313 ) {
314 $img_src = esc_attr(
315 stats_get_image_chart_src( 'admin-bar-hours-scale-2x', array( 'masterbar' => '' ) )
316 );
317 $alt = esc_attr__( 'Hourly views', 'jetpack' );
318
319 $menu_title .= "<img class='sidebar-unified__sparkline' src='$img_src' width='80' height='20' alt='$alt'>";
320 }
321
322 add_menu_page( __( 'Stats', 'jetpack' ), $menu_title, 'edit_posts', 'https://wordpress.com/stats/day/' . $this->domain, null, 'dashicons-chart-bar', 3 );
323 }
324
325 /**
326 * Adds Upgrades menu.
327 *
328 * @param string $plan The current WPCOM plan of the blog.
329 */
330 public function add_upgrades_menu( $plan = null ) {
331
332 if ( get_option( 'wpcom_is_staging_site' ) ) {
333 return;
334 }
335 $products = Jetpack_Plan::get();
336 if ( array_key_exists( 'product_name_short', $products ) ) {
337 $plan = $products['product_name_short'];
338 }
339 parent::add_upgrades_menu( $plan );
340
341 $last_upgrade_submenu_position = $this->get_submenu_item_count( 'paid-upgrades.php' );
342
343 add_submenu_page( 'paid-upgrades.php', __( 'Domains', 'jetpack' ), __( 'Domains', 'jetpack' ), 'manage_options', 'https://wordpress.com/domains/manage/' . $this->domain, null, $last_upgrade_submenu_position - 1 );
344
345 /**
346 * Whether to show the WordPress.com Emails submenu under the main Upgrades menu.
347 *
348 * @use add_filter( 'jetpack_show_wpcom_upgrades_email_menu', '__return_true' );
349 * @module masterbar
350 *
351 * @since 9.7.0
352 *
353 * @param bool $show_wpcom_upgrades_email_menu Load the WordPress.com Emails submenu item. Default to false.
354 */
355 if ( apply_filters( 'jetpack_show_wpcom_upgrades_email_menu', false ) ) {
356 add_submenu_page( 'paid-upgrades.php', __( 'Emails', 'jetpack' ), __( 'Emails', 'jetpack' ), 'manage_options', 'https://wordpress.com/email/' . $this->domain, null, $last_upgrade_submenu_position );
357 }
358 }
359
360 /**
361 * Adds Settings menu.
362 */
363 public function add_options_menu() {
364 parent::add_options_menu();
365
366 if ( Jetpack_Plan::supports( 'security-settings' ) ) {
367 add_submenu_page(
368 'options-general.php',
369 esc_attr__( 'Security', 'jetpack' ),
370 __( 'Security', 'jetpack' ),
371 'manage_options',
372 'https://wordpress.com/settings/security/' . $this->domain,
373 null,
374 2
375 );
376 }
377
378 add_submenu_page( 'options-general.php', esc_attr__( 'Hosting Configuration', 'jetpack' ), __( 'Hosting Configuration', 'jetpack' ), 'manage_options', 'https://wordpress.com/hosting-config/' . $this->domain, null, 11 );
379
380 // Page Optimize is active by default on all Atomic sites and registers a Settings > Performance submenu which
381 // would conflict with our own Settings > Performance that links to Calypso, so we hide it it since the Calypso
382 // performance settings already have a link to Page Optimize settings page.
383 $this->hide_submenu_page( 'options-general.php', 'page-optimize' );
384
385 if ( Blaze::should_initialize() ) {
386 add_submenu_page( 'tools.php', esc_attr__( 'Advertising', 'jetpack' ), __( 'Advertising', 'jetpack' ), 'manage_options', 'https://wordpress.com/advertising/' . $this->domain, null, 1 );
387 }
388 }
389
390 /**
391 * Adds Tools menu entries.
392 */
393 public function add_tools_menu() {
394 parent::add_tools_menu();
395
396 /**
397 * Whether to show the WordPress.com Site Logs submenu under the main Tools menu.
398 *
399 * @use add_filter( 'jetpack_show_wpcom_site_logs_menu', '__return_true' );
400 * @module masterbar
401 *
402 * @since 12.0
403 *
404 * @param bool $show_wpcom_site_logs_menu Load the WordPress.com Site Logs submenu item. Default to false.
405 */
406 if ( apply_filters( 'jetpack_show_wpcom_site_logs_menu', false ) ) {
407 add_submenu_page( 'tools.php', esc_attr__( 'Site Logs', 'jetpack' ), __( 'Site Logs', 'jetpack' ), 'manage_options', 'https://wordpress.com/site-logs/' . $this->domain, null, 7 );
408 }
409 }
410
411 /**
412 * Override the global submenu_file for theme-install.php page so the WP Admin menu item gets highlighted correctly.
413 *
414 * @param string $submenu_file The current pages $submenu_file global variable value.
415 * @return string | null
416 */
417 public function override_the_theme_installer( $submenu_file ) {
418 global $pagenow;
419
420 if ( 'themes.php' === $submenu_file && 'theme-install.php' === $pagenow ) {
421 return null;
422 }
423 return $submenu_file;
424 }
425
426 /**
427 * Also remove the Gutenberg plugin menu.
428 */
429 public function remove_gutenberg_menu() {
430 // Always remove the Gutenberg menu.
431 remove_menu_page( 'gutenberg' );
432 }
433
434 /**
435 * Saves the sidebar state ( expanded / collapsed ) via an ajax request.
436 */
437 public function ajax_sidebar_state() {
438 $expanded = isset( $_REQUEST['expanded'] ) ? filter_var( wp_unslash( $_REQUEST['expanded'] ), FILTER_VALIDATE_BOOLEAN ) : false; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
439 Client::wpcom_json_api_request_as_user(
440 '/me/preferences',
441 '2',
442 array(
443 'method' => 'POST',
444 ),
445 (object) array( 'calypso_preferences' => (object) array( 'sidebarCollapsed' => ! $expanded ) ),
446 'wpcom'
447 );
448
449 wp_die();
450 }
451
452 /**
453 * Handle ajax requests to dismiss a just-in-time-message
454 */
455 public function wp_ajax_jitm_dismiss() {
456 check_ajax_referer( 'jitm_dismiss' );
457 $jitm = \Automattic\Jetpack\JITMS\JITM::get_instance();
458 if ( isset( $_REQUEST['id'] ) && isset( $_REQUEST['feature_class'] ) ) {
459 $jitm->dismiss( sanitize_text_field( wp_unslash( $_REQUEST['id'] ) ), sanitize_text_field( wp_unslash( $_REQUEST['feature_class'] ) ) );
460 }
461 wp_die();
462 }
463 }
464