Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Boost: Introduce base minify class for JS and CSS modules #41716

Draft
wants to merge 12 commits into
base: trunk
Choose a base branch
from
18 changes: 17 additions & 1 deletion projects/plugins/boost/app/lib/minify/functions-helpers.php
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,6 @@
function jetpack_boost_minify_activation() {
// Schedule cache cleanup.
jetpack_boost_page_optimize_schedule_cache_cleanup();

// Setup the cronjob to periodically test for the 404 handler.
jetpack_boost_404_setup();
}
Expand All @@ -372,12 +371,29 @@
*
* @return void
*/
function jetpack_boost_minify_deactivation() {

Check failure on line 374 in projects/plugins/boost/app/lib/minify/functions-helpers.php

View workflow job for this annotation

GitHub Actions / Static analysis

RedefineError PhanRedefineFunction Function jetpack_boost_minify_deactivation defined at app/lib/minify/functions-helpers.php:374 was previously defined at app/lib/minify/functions-helpers.php:387 FAQ on Phan issues: pdWQjU-Jb-p2
if ( ! jetpack_boost_minify_is_enabled() ) {
jetpack_boost_minify_clear_scheduled_events();
}
}

/**
* Run during deactivation of any minify module.
*
* This handles removing the 404 tester if both css and js minification are disabled.
*
* @return void
*/
function jetpack_boost_minify_deactivation() {

Check failure on line 387 in projects/plugins/boost/app/lib/minify/functions-helpers.php

View workflow job for this annotation

GitHub Actions / PHP lint (8.0)

Fatal error: Cannot redeclare jetpack_boost_minify_deactivation() (previously declared

Check failure on line 387 in projects/plugins/boost/app/lib/minify/functions-helpers.php

View workflow job for this annotation

GitHub Actions / PHP lint (8.2)

Fatal error: Cannot redeclare jetpack_boost_minify_deactivation() (previously declared

Check failure on line 387 in projects/plugins/boost/app/lib/minify/functions-helpers.php

View workflow job for this annotation

GitHub Actions / PHP lint (8.4)

Fatal error: Cannot redeclare function jetpack_boost_minify_deactivation() (previously declared

Check failure on line 387 in projects/plugins/boost/app/lib/minify/functions-helpers.php

View workflow job for this annotation

GitHub Actions / PHP lint (8.3)

Fatal error: Cannot redeclare jetpack_boost_minify_deactivation() (previously declared

Check failure on line 387 in projects/plugins/boost/app/lib/minify/functions-helpers.php

View workflow job for this annotation

GitHub Actions / PHP lint (7.4)

Fatal error: Cannot redeclare jetpack_boost_minify_deactivation() (previously declared

Check failure on line 387 in projects/plugins/boost/app/lib/minify/functions-helpers.php

View workflow job for this annotation

GitHub Actions / Static analysis

RedefineError PhanRedefineFunction Function jetpack_boost_minify_deactivation defined at app/lib/minify/functions-helpers.php:387 was previously defined at app/lib/minify/functions-helpers.php:374 FAQ on Phan issues: pdWQjU-Jb-p2
$minify_css = new Module( new Minify_CSS() );
$minify_js = new Module( new Minify_JS() );

if ( ! $minify_css->is_enabled() && ! $minify_js->is_enabled() ) {
wp_clear_scheduled_hook( 'jetpack_boost_404_tester_cron' );
jetpack_boost_clear_cache_cleanup_hook();

Check failure on line 393 in projects/plugins/boost/app/lib/minify/functions-helpers.php

View workflow job for this annotation

GitHub Actions / PHP lint (8.1)

Fatal error: Cannot redeclare jetpack_boost_minify_deactivation() (previously declared

Check failure on line 393 in projects/plugins/boost/app/lib/minify/functions-helpers.php

View workflow job for this annotation

GitHub Actions / Static analysis

UndefError PhanUndeclaredFunction Call to undeclared function \jetpack_boost_clear_cache_cleanup_hook() FAQ on Phan issues: pdWQjU-Jb-p2
}
}

Check failure on line 395 in projects/plugins/boost/app/lib/minify/functions-helpers.php

View workflow job for this annotation

GitHub Actions / PHP lint (7.2)

Fatal error: Cannot redeclare jetpack_boost_minify_deactivation() (previously declared

/**
* Run during initialization of any minify module.
*
Expand Down
2 changes: 2 additions & 0 deletions projects/plugins/boost/app/modules/Modules_Index.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use Automattic\Jetpack_Boost\Modules\Optimizations\Cloud_CSS\Cloud_CSS;
use Automattic\Jetpack_Boost\Modules\Optimizations\Critical_CSS\Critical_CSS;
use Automattic\Jetpack_Boost\Modules\Optimizations\Image_CDN\Image_CDN;
use Automattic\Jetpack_Boost\Modules\Optimizations\Minify\Minify;
use Automattic\Jetpack_Boost\Modules\Optimizations\Minify\Minify_CSS;
use Automattic\Jetpack_Boost\Modules\Optimizations\Minify\Minify_JS;
use Automattic\Jetpack_Boost\Modules\Optimizations\Page_Cache\Page_Cache;
Expand All @@ -30,6 +31,7 @@ class Modules_Index {
Critical_CSS::class,
Cloud_CSS::class,
Image_Size_Analysis::class,
Minify::class,
Minify_JS::class,
Minify_CSS::class,
Render_Blocking_JS::class,
Expand Down
71 changes: 71 additions & 0 deletions projects/plugins/boost/app/modules/optimizations/minify/Minify.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<?php
namespace Automattic\Jetpack_Boost\Modules\Optimizations\Minify;

use Automattic\Jetpack_Boost\Contracts\Has_Activate;
use Automattic\Jetpack_Boost\Contracts\Has_Deactivate;
use Automattic\Jetpack_Boost\Contracts\Optimization;
use Automattic\Jetpack_Boost\Contracts\Pluggable;

class Minify implements Pluggable, Optimization, Has_Activate, Has_Deactivate {

/**
* Setup the module. This runs on every page load.
*/
public function setup() {
}

public static function get_slug() {
return 'minify';
}

/**
* The module is ready when at least one child module is active
*/
public function is_ready() {
return get_option( 'jetpack_boost_minify_active_modules', 0 ) > 0;
}

public static function is_available() {
return true;
}

/**
* Called by child modules (Minify_JS, Minify_CSS) when they are activated
*/
public static function register_active_module() {
$active_modules = get_option( 'jetpack_boost_minify_active_modules', 0 );
++$active_modules;
update_option( 'jetpack_boost_minify_active_modules', $active_modules );
if ( $active_modules === 1 ) {
self::activate();
}
}

/**
* Called by child modules when they are deactivated
*/
public static function unregister_active_module() {
$active_modules = get_option( 'jetpack_boost_minify_active_modules', 1 );
--$active_modules;
update_option( 'jetpack_boost_minify_active_modules', $active_modules < 0 ? 0 : $active_modules );
if ( $active_modules === 0 ) {
delete_option( 'jetpack_boost_minify_active_modules' );
self::deactivate();
}
}

/**
* This is called only when the module is activated.
*/
public static function activate() {
jetpack_boost_minify_activation();
jetpack_boost_404_tester();
}

/**
* This is called only when the module is deactivated.
*/
public static function deactivate() {
jetpack_boost_minify_deactivation();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,21 @@ class Minify_CSS implements Pluggable, Changes_Page_Output, Optimization, Has_Ac

public static $default_excludes = array( 'admin-bar', 'dashicons', 'elementor-app' );

public static function get_slug() {
return 'minify_css';
}

public function init_minify() {
global $wp_styles;

// phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
$wp_styles = new Concatenate_CSS( $wp_styles );
$wp_styles->allow_gzip_compression = true; // @todo - used constant ALLOW_GZIP_COMPRESSION = true if not defined.
}

/**
* Setup the module. This runs on every page load.
*/
public function setup() {
require_once JETPACK_BOOST_DIR_PATH . '/app/lib/minify/functions-helpers.php';

Expand All @@ -25,10 +40,6 @@ public function setup() {
add_action( 'init', array( $this, 'init_minify' ) );
}

public static function get_slug() {
return 'minify_css';
}

/**
* The module starts serving as soon as it's enabled.
*
Expand All @@ -42,19 +53,18 @@ public static function is_available() {
return true;
}

public function init_minify() {
global $wp_styles;

// phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
$wp_styles = new Concatenate_CSS( $wp_styles );
$wp_styles->allow_gzip_compression = true; // @todo - used constant ALLOW_GZIP_COMPRESSION = true if not defined.
}

/**
* This is called only when the module is activated.
*/
public static function activate() {
jetpack_boost_minify_activation();
Minify::register_active_module();
}

/**
* This is called only when the module is deactivated.
*/
public static function deactivate() {
Minify::unregister_active_module();
jetpack_boost_page_optimize_cleanup_cache( 'css' );
jetpack_boost_minify_deactivation();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,21 @@ class Minify_JS implements Pluggable, Changes_Page_Output, Optimization, Has_Act

public static $default_excludes = array( 'jquery', 'jquery-core', 'underscore', 'backbone' );

public static function get_slug() {
return 'minify_js';
}

public function init_minify() {
global $wp_scripts;

// phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
$wp_scripts = new Concatenate_JS( $wp_scripts );
$wp_scripts->allow_gzip_compression = true; // @todo - used constant ALLOW_GZIP_COMPRESSION = true if not defined.
}

/**
* Setup the module. This runs on every page load.
*/
public function setup() {
require_once JETPACK_BOOST_DIR_PATH . '/app/lib/minify/functions-helpers.php';

Expand All @@ -25,10 +40,6 @@ public function setup() {
add_action( 'init', array( $this, 'init_minify' ) );
}

public static function get_slug() {
return 'minify_js';
}

/**
* The module starts serving as soon as it's enabled.
*
Expand All @@ -42,19 +53,18 @@ public static function is_available() {
return true;
}

public function init_minify() {
global $wp_scripts;

// phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
$wp_scripts = new Concatenate_JS( $wp_scripts );
$wp_scripts->allow_gzip_compression = true; // @todo - used constant ALLOW_GZIP_COMPRESSION = true if not defined.
}

/**
* This is called only when the module is activated.
*/
public static function activate() {
jetpack_boost_minify_activation();
Minify::register_active_module();
}

/**
* This is called only when the module is deactivated.
*/
public static function deactivate() {
Minify::unregister_active_module();
jetpack_boost_page_optimize_cleanup_cache( 'js' );
jetpack_boost_minify_deactivation();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: added

Concatenation: create invisible "minify module" that handles deactivation of both modules.
Loading