Skip to content

Commit

Permalink
fix: handle Yoast Premium as a replacement for Yoast (#1614)
Browse files Browse the repository at this point in the history
Closes #298
  • Loading branch information
adekbadek authored Apr 20, 2022
1 parent 492a439 commit 9a503c0
Showing 1 changed file with 36 additions and 13 deletions.
49 changes: 36 additions & 13 deletions includes/class-plugin-manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -335,16 +335,9 @@ public static function get_managed_plugins() {
];

// Add plugin status info and fill in defaults.
$installed_plugins = self::get_installed_plugins();
foreach ( $managed_plugins as $plugin_slug => $managed_plugin ) {
$status = 'uninstalled';
if ( isset( $installed_plugins[ $plugin_slug ] ) ) {
if ( is_plugin_active( $installed_plugins[ $plugin_slug ] ) ) {
$status = 'active';
} else {
$status = 'inactive';
}
}
$status = self::get_managed_plugin_status( $plugin_slug );

if ( 'newspack-theme' === $plugin_slug ) {
if ( 'newspack-theme' === get_stylesheet() ) {
$status = 'active';
Expand All @@ -353,9 +346,7 @@ public static function get_managed_plugins() {
if ( isset( $managed_plugin['WPCore'] ) ) {
$status = 'active';
}
if ( Newspack::is_debug_mode() ) {
$status = 'active';
}

$managed_plugins[ $plugin_slug ]['Status'] = $status;
$managed_plugins[ $plugin_slug ]['Slug'] = $plugin_slug;
$managed_plugins[ $plugin_slug ]['HandoffLink'] = isset( $managed_plugins[ $plugin_slug ]['EditPath'] ) ? admin_url( $managed_plugins[ $plugin_slug ]['EditPath'] ) : null;
Expand All @@ -364,6 +355,35 @@ public static function get_managed_plugins() {
return $managed_plugins;
}

/**
* Determine a managed plugin status.
*
* @param string $plugin_slug Plugin slug.
*/
private static function get_managed_plugin_status( $plugin_slug ) {
if ( Newspack::is_debug_mode() ) {
return 'active';
}
$status = 'uninstalled';
$installed_plugins = self::get_installed_plugins();
if ( isset( $installed_plugins[ $plugin_slug ] ) ) {
if ( is_plugin_active( $installed_plugins[ $plugin_slug ] ) ) {
$status = 'active';
} else {
$status = 'inactive';
}
}

// Yoast Premium can be used as a replacement for regular Yoast.
if ( 'wordpress-seo' === $plugin_slug && 'active' !== $status && isset( $installed_plugins['wordpress-seo-premium'] ) && $installed_plugins['wordpress-seo-premium'] ) {
if ( is_plugin_active( $installed_plugins['wordpress-seo-premium'] ) ) {
$status = 'active';
};
}

return $status;
}

/**
* Get the list of plugins which are supported, but not managed.
* These plugins will not be added to the WP Admin plugins screen,
Expand All @@ -375,6 +395,9 @@ private static function get_supported_plugins_slugs() {
'classic-widgets',
'republication-tracker-tool',
'the-events-calendar',
'wordpress-seo-premium',
'gravityformspolls',
'gravityformsmailchimp',
];
}

Expand Down Expand Up @@ -410,7 +433,7 @@ public static function get_missing_plugins() {
$plugins_info = self::get_installed_plugins_info();
$missing_plugins = array();
foreach ( self::$required_plugins as $slug ) {
if ( ! isset( $plugins_info[ $slug ] ) || ! is_plugin_active( $plugins_info[ $slug ]['Path'] ) ) {
if ( 'active' !== self::get_managed_plugin_status( $slug ) ) {
$missing_plugins[ $slug ] = $managed_plugins[ $slug ];
}
}
Expand Down

0 comments on commit 9a503c0

Please sign in to comment.