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

253 lines
5.8 KiB
PHP

<?php
declare(strict_types=1);
namespace WP_Rocket\Engine\License;
use WP_Rocket\Event_Management\Subscriber_Interface;
class Subscriber implements Subscriber_Interface {
/**
* Upgrade instance
*
* @var Upgrade
*/
private $upgrade;
/**
* Renewal instance
*
* @var Renewal
*/
private $renewal;
/**
* Instantiate the class
*
* @param Upgrade $upgrade Upgrade instance.
* @param Renewal $renewal Renewal instance.
*/
public function __construct( Upgrade $upgrade, Renewal $renewal ) {
$this->upgrade = $upgrade;
$this->renewal = $renewal;
}
/**
* Events this subscriber listens to.
*
* @return array
*/
public static function get_subscribed_events() {
return [
'rocket_dashboard_license_info' => 'display_upgrade_section',
'rocket_settings_page_footer' => 'display_upgrade_popin',
'rocket_menu_title' => [
[ 'add_notification_bubble' ],
[ 'add_notification_bubble_expired' ],
],
'admin_footer-settings_page_wprocket' => [
[ 'dismiss_notification_bubble' ],
[ 'set_dashboard_seen_transient' ],
],
'rocket_before_dashboard_content' => [
[ 'display_promo_banner' ],
[ 'display_renewal_soon_banner', 11 ],
[ 'display_renewal_expired_banner', 12 ],
],
'wp_ajax_rocket_dismiss_promo' => 'dismiss_promo_banner',
'wp_ajax_rocket_dismiss_renewal' => 'dismiss_renewal_banner',
'rocket_localize_admin_script' => 'add_localize_script_data',
'wp_rocket_upgrade' => [ 'clean_user_transient', 15, 2 ],
'rocket_before_add_field_to_settings' => [
[ 'maybe_disable_ocd', 11 ],
[ 'add_license_expire_warning' ],
],
'get_rocket_option_remove_unused_css' => [ 'maybe_disable_option', PHP_INT_MAX ],
'get_rocket_option_async_css' => [ 'maybe_disable_option', PHP_INT_MAX ],
];
}
/**
* Displays the upgrade section in the license info block
*
* @since 3.7.3
*
* @return void
*/
public function display_upgrade_section() {
$this->upgrade->display_upgrade_section();
}
/**
* Displays the upgrade popin
*
* @since 3.7.3
*
* @return void
*/
public function display_upgrade_popin() {
$this->upgrade->display_upgrade_popin();
}
/**
* Adds the notification bubble to the menu title if a promotion is active
*
* @since 3.7.4
*
* @param string $menu_title The text to be used for the menu.
* @return string
*/
public function add_notification_bubble( $menu_title ) {
return $this->upgrade->add_notification_bubble( $menu_title );
}
/**
* Prevents the notification bubble from showing once the user accessed the dashboard once
*
* @since 3.7.4
*
* @return void
*/
public function dismiss_notification_bubble() {
$this->upgrade->dismiss_notification_bubble();
}
/**
* Displays the promotions banner when a promotion is active
*
* @since 3.7.4
*
* @return void
*/
public function display_promo_banner() {
$this->upgrade->display_promo_banner();
}
/**
* AJAX callback to dismiss the promotion banner
*
* @since 3.7.4
*
* @return void
*/
public function dismiss_promo_banner() {
$this->upgrade->dismiss_promo_banner();
}
/**
* Adds the current time and promotion end time to WP Rocket localize script data
*
* @since 3.7.5 Add the renewal localize data
* @since 3.7.4
*
* @param array $data Localize script data.
* @return array
*/
public function add_localize_script_data( $data ) {
$data = $this->upgrade->add_localize_script_data( $data );
return $this->renewal->add_localize_script_data( $data );
}
/**
* Deletes the user data transient on 3.7.4 update
*
* @since 3.7.4
*
* @param string $new_version New version of the plugin.
* @param string $old_version Installed version of the plugin.
* @return void
*/
public function clean_user_transient( $new_version, $old_version ) {
if ( version_compare( $old_version, '3.7.4', '>' ) ) {
return;
}
delete_transient( 'wp_rocket_customer_data' );
}
/**
* Displays the renewal banner for users expiring in less than 30 days
*
* @since 3.7.5
*
* @return void
*/
public function display_renewal_soon_banner() {
$this->renewal->display_renewal_soon_banner();
}
/**
* Displays the renewal banner for expired users
*
* @since 3.7.5
*
* @return void
*/
public function display_renewal_expired_banner() {
$this->renewal->display_renewal_expired_banner();
}
/**
* AJAX callback to dismiss the renewal banner
*
* @since 3.7.5
*
* @return void
*/
public function dismiss_renewal_banner() {
$this->renewal->dismiss_renewal_expired_banner();
}
/**
* Add license expiring warning to OCD label
*
* @param array $args Setting field arguments.
*
* @return array
*/
public function add_license_expire_warning( $args ): array {
return $this->renewal->add_license_expire_warning( $args );
}
/**
* Adds the notification bubble to WP Rocket menu item when expired
*
* @param string $menu_title Menu title.
*
* @return string
*/
public function add_notification_bubble_expired( $menu_title ) {
return $this->renewal->add_expired_bubble( $menu_title );
}
/**
* Sets the dashboard seen transient to hide the expired bubble
*
* @return void
*/
public function set_dashboard_seen_transient() {
$this->renewal->set_dashboard_seen_transient();
}
/**
* Disable optimize CSS delivery setting
*
* @param array $args Array of setting field arguments.
*
* @return array
*/
public function maybe_disable_ocd( $args ) {
return $this->renewal->maybe_disable_ocd( $args );
}
/**
* Disables the RUCSS & Async CSS options if license is expired
*
* @param mixed $value Current option value.
*
* @return mixed
*/
public function maybe_disable_option( $value ) {
return $this->renewal->maybe_disable_option( $value );
}
}