oont-contents/plugins/wp-rocket/inc/ThirdParty/Plugins/Optimization/WPMeteor.php
2025-02-08 15:10:23 +01:00

112 lines
2.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
namespace WP_Rocket\ThirdParty\Plugins\Optimization;
use WP_Rocket\Event_Management\Subscriber_Interface;
class WPMeteor implements Subscriber_Interface {
/**
* Returns an array of events that this subscriber wants to listen to.
*
* @return array
*/
public static function get_subscribed_events(): array {
return [
'rocket_delay_js_settings_field' => 'maybe_disable_delay_js_field',
'activate_wp-meteor/wp-meteor.php' => 'disable_delay_js',
'wp_rocket_upgrade' => [ 'maybe_disable_delay_js', 10, 2 ],
'pre_update_option_wp_rocket_settings' => 'disable_delay_js_on_option_update',
];
}
/**
* Disable the delay JS field when WP Meteor is active
*
* @since 3.9.2
*
* @param array $field Delay JS field data array.
*
* @return array
*/
public function maybe_disable_delay_js_field( $field ): array {
if ( ! is_plugin_active( 'wp-meteor/wp-meteor.php' ) ) {
return $field;
}
$field['container_class'][] = 'wpr-isDisabled';
$field['value'] = 0;
$field['input_attr']['disabled'] = 1;
$field['helper'] = sprintf(
// translators: %1$s = plugin name.
__( 'Delay JS is currently activated in %1$s. If you want to use WP Rockets delay JS, disable %1$s', 'rocket' ),
'WP Meteor'
);
return $field;
}
/**
* Disable delay JS option when WP Meteor is activated
*
* @since 3.9.2
*
* @return void
*/
public function disable_delay_js() {
$options = get_option( 'wp_rocket_settings', [] );
$options['delay_js'] = 0;
update_option( 'wp_rocket_settings', $options );
}
/**
* Disable delay JS when updating to 3.9.2 and above and WP Meteor is active
*
* @since 3.9.2
*
* @param string $new_version Plugin new version.
* @param string $old_version Plugin old version.
*
* @return void
*/
public function maybe_disable_delay_js( $new_version, $old_version ) {
if ( version_compare( $old_version, '3.9.2', '>' ) ) {
return;
}
if ( ! is_plugin_active( 'wp-meteor/wp-meteor.php' ) ) {
return;
}
$this->disable_delay_js();
}
/**
* Disable delay JS on WP Rocket settings update if WP Meteor is active
*
* @since 3.9.2
*
* @param mixed $value The new, unserialized option value.
*
* @return mixed
*/
public function disable_delay_js_on_option_update( $value ) {
if ( ! is_plugin_active( 'wp-meteor/wp-meteor.php' ) ) {
return $value;
}
if ( ! isset( $value['delay_js'] ) ) {
return $value;
}
if ( 0 === (int) $value['delay_js'] ) {
return $value;
}
$value['delay_js'] = 0;
return $value;
}
}