oont-contents/plugins/wp-rocket/inc/Engine/CriticalPath/Admin/Subscriber.php
2025-02-08 15:10:23 +01:00

189 lines
4.3 KiB
PHP

<?php
namespace WP_Rocket\Engine\CriticalPath\Admin;
use WP_Rocket\Event_Management\Subscriber_Interface;
class Subscriber implements Subscriber_Interface {
/**
* Instance of the CPCSS Settings handler.
*
* @var Settings
*/
private $settings;
/**
* Instance of the Post handler
*
* @var Post
*/
private $post;
/**
* Instance of the Admin handler
*
* @var Admin
*/
private $admin;
/**
* Creates an instance of the subscriber.
*
* @param Post $post Post instance.
* @param Settings $settings CPCSS Settings instance.
* @param Admin $admin Admin instance.
*/
public function __construct( Post $post, Settings $settings, Admin $admin ) {
$this->post = $post;
$this->settings = $settings;
$this->admin = $admin;
}
/**
* Events this subscriber wants to listen to.
*
* @return array
*/
public static function get_subscribed_events() {
return [
'rocket_after_options_metabox' => 'cpcss_section',
'rocket_metabox_cpcss_content' => 'cpcss_actions',
'rocket_first_install_options' => 'add_async_css_mobile_option',
'wp_rocket_upgrade' => [ 'set_async_css_mobile_default_value', 12, 2 ],
'rocket_hidden_settings_fields' => 'add_hidden_async_css_mobile',
'rocket_settings_tools_content' => 'display_cpcss_mobile_section',
'wp_ajax_rocket_enable_mobile_cpcss' => 'enable_mobile_cpcss',
'wp_ajax_rocket_cpcss_heartbeat' => 'cpcss_heartbeat',
'admin_enqueue_scripts' => [
[ 'enqueue_admin_edit_script' ],
[ 'enqueue_admin_cpcss_heartbeat_script' ],
],
'rocket_admin_bar_items' => 'add_regenerate_menu_item',
];
}
/**
* Enable CPCSS mobile.
*
* @since 3.6
*
* @return void
*/
public function enable_mobile_cpcss() {
$this->settings->enable_mobile_cpcss();
}
/**
* Display CPCSS mobile section tool admin view.
*
* @since 3.6
*
* @return void
*/
public function display_cpcss_mobile_section() {
$this->settings->display_cpcss_mobile_section();
}
/**
* Enqueue CPCSS generation / deletion script on edit.php page.
*
* @since 3.6
*
* @param string $page The current admin page.
*
* @return void
*/
public function enqueue_admin_edit_script( $page ) {
$this->post->enqueue_admin_edit_script( $page );
}
/**
* Displays the critical CSS block in WP Rocket options metabox.
*
* @since 3.6
*
* @return void
*/
public function cpcss_section() {
$this->post->cpcss_section();
}
/**
* Displays the content inside the critical CSS block.
*
* @since 3.6
*
* @return void
*/
public function cpcss_actions() {
$this->post->cpcss_actions();
}
/**
* Adds async_css_mobile option to WP Rocket options.
*
* @since 3.6
*
* @param array $options WP Rocket options array.
*
* @return array
*/
public function add_async_css_mobile_option( $options ) {
return $this->settings->add_async_css_mobile_option( $options );
}
/**
* Sets the default value of async_css_mobile to 0 when upgrading from < 3.6.
*
* @since 3.6
*
* @param string $new_version New WP Rocket version.
* @param string $old_version Previous WP Rocket version.
*/
public function set_async_css_mobile_default_value( $new_version, $old_version ) {
$this->settings->set_async_css_mobile_default_value( $new_version, $old_version );
}
/**
* Adds async_css_mobile to the hidden settings fields.
*
* @since 3.6
*
* @param array $hidden_settings_fields An array of hidden settings fields ID.
*
* @return array
*/
public function add_hidden_async_css_mobile( $hidden_settings_fields ) {
return $this->settings->add_hidden_async_css_mobile( $hidden_settings_fields );
}
/**
* Check the CPCSS heartbeat.
*
* @since 3.6
*/
public function cpcss_heartbeat() {
$this->admin->cpcss_heartbeat();
}
/**
* Enqueue CPCSS heartbeat script on all admin pages.
*
* @since 3.6
*/
public function enqueue_admin_cpcss_heartbeat_script() {
$this->admin->enqueue_admin_cpcss_heartbeat_script();
}
/**
* Add Regenerate Critical CSS link to WP Rocket admin bar item
*
* @since 3.6
*
* @param WP_Admin_Bar $wp_admin_bar WP_Admin_Bar instance, passed by reference.
* @return void
*/
public function add_regenerate_menu_item( $wp_admin_bar ) {
$this->admin->add_regenerate_menu_item( $wp_admin_bar );
}
}