66 lines
1.3 KiB
PHP
66 lines
1.3 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace WP_Rocket\Engine\Optimization\RUCSS\Frontend;
|
|
|
|
use WP_Rocket\Event_Management\Subscriber_Interface;
|
|
use WP_Rocket\Engine\Optimization\RUCSS\Controller\UsedCSS;
|
|
|
|
class Subscriber implements Subscriber_Interface {
|
|
|
|
/**
|
|
* UsedCss instance
|
|
*
|
|
* @var UsedCSS
|
|
*/
|
|
private $used_css;
|
|
|
|
/**
|
|
* Instantiate the class
|
|
*
|
|
* @param UsedCSS $used_css UsedCSS instance.
|
|
*/
|
|
public function __construct( UsedCSS $used_css ) {
|
|
$this->used_css = $used_css;
|
|
}
|
|
|
|
/**
|
|
* Return an array of events that this subscriber listens to.
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function get_subscribed_events(): array {
|
|
return [
|
|
'rocket_buffer' => [ 'treeshake', 1000 ],
|
|
'rocket_disable_preload_fonts' => 'maybe_disable_preload_fonts',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Apply TreeShaked CSS to the current HTML page.
|
|
*
|
|
* @param string $html HTML content.
|
|
*
|
|
* @return string HTML content.
|
|
*/
|
|
public function treeshake( string $html ): string {
|
|
return $this->used_css->treeshake( $html );
|
|
}
|
|
|
|
/**
|
|
* Disables the preload fonts if RUCSS is enabled
|
|
*
|
|
* @since 3.9
|
|
*
|
|
* @param bool $value Value for the disable preload fonts filter.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function maybe_disable_preload_fonts( $value ): bool {
|
|
if ( $this->used_css->is_allowed() ) {
|
|
return true;
|
|
}
|
|
|
|
return $value;
|
|
}
|
|
}
|