Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Issue 652 POC/WIP.
  • Loading branch information
10upsimon committed Nov 30, 2023
commit b7bed423528be2785186f7f397ff5ef154352e2a
27 changes: 27 additions & 0 deletions admin/load.php
Original file line number Diff line number Diff line change
Expand Up @@ -616,9 +616,36 @@ function perflab_deactivate_plugin() {
*/
function perflab_plugin_admin_notices() {
if ( 'settings_page_perflab-modules' !== get_current_screen()->id ) {
if ( ! empty( perflab_get_standalone_plugins_with_active_modules() ) ) {
?>
<div class="notice notice-warning is-dismissible">
<p>
<?php
printf(
/* translators: 1: Link to Performance Lab Settings screen */
esc_html__( 'Performance Lab has detected usage of modules that have standalone plugin equivalents. Please visit the %1$s screen to see the plugins available for installation.', 'performance-lab' ),
sprintf(
'<a href="%s">%s</a>',
esc_html( menu_page_url( PERFLAB_MODULES_SCREEN, false ) ),
esc_html__( 'Performance Lab Settings', 'performance-lab' )
)
);
?>
</p>
</div>
<?php
}
return;
}

if ( ! empty( perflab_get_standalone_plugins_with_active_modules() ) ) {
?>
<div class="notice notice-warning is-dismissible">
<p><?php esc_html_e( 'Performance Lab has detected usage of modules that have standalone plugin equivalents. Please see the available plugins below. Installing and activating a performance plugin will disable the legacy module equivalent. This will not impact functionality of the module.', 'performance-lab' ); ?></p>
</div>
<?php
}

if ( isset( $_GET['activate'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
?>
<div class="notice notice-success is-dismissible">
Expand Down
53 changes: 50 additions & 3 deletions admin/plugins.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,40 @@ function perflab_get_standalone_plugins() {
);
}

/**
* Returns an array mapping of standalone plugins to existing wpp modules.
*
* @since n.e.x.t
*
* @return string[]
*/
function perflab_get_standalone_plugins_module_map() {
return array(
'webp-uploads' => 'images/webp-uploads',
'dominant-color-images' => 'images/dominant-color-images',
);
}

/**
* Returns an array of standalone plugins with currently active modules.
*
* @since n.e.x.t
*
* @return string[]
*/
function perflab_get_standalone_plugins_with_active_modules() {
$modules = perflab_get_module_settings();
$standalone_plugins_with_active_modules = array_filter(
perflab_get_standalone_plugins_module_map(),
static function ( $v ) use ( $modules ) {
Comment thread
mukeshpanchal27 marked this conversation as resolved.
Outdated
return ! empty( $modules[ $v ] ) && '1' === $modules[ $v ]['enabled'];
},
ARRAY_FILTER_USE_BOTH
);

return $standalone_plugins_with_active_modules;
}

/**
* Renders plugin UI for managing standalone plugins within PL Settings screen.
*
Expand All @@ -65,10 +99,16 @@ function perflab_render_plugins_ui() {
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
require_once ABSPATH . 'wp-admin/includes/plugin.php';

$standalone_plugins = array();
$standalone_plugins = array();
$standalone_plugins_with_active_modules = perflab_get_standalone_plugins_with_active_modules();
foreach ( perflab_get_standalone_plugins() as $managed_standalone_plugin_slug ) {
$standalone_plugins[ $managed_standalone_plugin_slug ] = array(
'plugin_data' => perflab_query_plugin_info( $managed_standalone_plugin_slug ),
'plugin_data' => array_merge(
perflab_query_plugin_info( $managed_standalone_plugin_slug ),
array(
'perflab_has_enabled_module' => ! empty( $standalone_plugins_with_active_modules[ $managed_standalone_plugin_slug ] ),
)
),
);
}

Expand Down Expand Up @@ -138,7 +178,8 @@ function perflab_render_plugin_card( array $plugin_data ) {
$tested_wp = ( empty( $plugin_data['tested'] ) || version_compare( get_bloginfo( 'version' ), $plugin_data['tested'], '<=' ) );
$action_links = array();

$status = install_plugin_install_status( $plugin_data );
$status = install_plugin_install_status( $plugin_data );
$perflab_has_enabled_module = ! empty( $plugin_data['perflab_has_enabled_module'] ) && true === $plugin_data['perflab_has_enabled_module'];
Comment thread
mukeshpanchal27 marked this conversation as resolved.
Outdated

switch ( $status['status'] ) {
case 'install':
Expand Down Expand Up @@ -265,6 +306,12 @@ function perflab_render_plugin_card( array $plugin_data ) {
?>
<div class="plugin-card plugin-card-<?php echo sanitize_html_class( $plugin_data['slug'] ); ?>">
<?php
if ( true === $perflab_has_enabled_module ) {
echo '<div class="notice inline notice-warning notice-alt"><p>';
echo esc_html__( 'An active performance module was detected, please install and activate this plugin instead.', 'performance-lab' );
echo '</p></div>';
}

if ( ! $compatible_php || ! $compatible_wp ) {
echo '<div class="notice inline notice-error notice-alt">';
if ( ! $compatible_php && ! $compatible_wp ) {
Expand Down