135 lines
3.1 KiB
PHP
135 lines
3.1 KiB
PHP
<?php
|
|
/**
|
|
* PluginsHelper
|
|
*
|
|
* Helper class for the site's plugins.
|
|
*/
|
|
|
|
namespace Automattic\WooCommerce\Admin;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
if ( ! function_exists( 'get_plugins' ) ) {
|
|
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
|
}
|
|
|
|
/**
|
|
* Class PluginsHelper
|
|
*/
|
|
class PluginsHelper {
|
|
|
|
/**
|
|
* Get the path to the plugin file relative to the plugins directory from the plugin slug.
|
|
*
|
|
* E.g. 'woocommerce' returns 'woocommerce/woocommerce.php'
|
|
*
|
|
* @param string $slug Plugin slug to get path for.
|
|
*
|
|
* @return string|false
|
|
*/
|
|
public static function get_plugin_path_from_slug( $slug ) {
|
|
$plugins = get_plugins();
|
|
|
|
if ( strstr( $slug, '/' ) ) {
|
|
// The slug is already a plugin path.
|
|
return $slug;
|
|
}
|
|
|
|
foreach ( $plugins as $plugin_path => $data ) {
|
|
$path_parts = explode( '/', $plugin_path );
|
|
if ( $path_parts[0] === $slug ) {
|
|
return $plugin_path;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Get an array of installed plugin slugs.
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function get_installed_plugin_slugs() {
|
|
return array_map(
|
|
function( $plugin_path ) {
|
|
$path_parts = explode( '/', $plugin_path );
|
|
return $path_parts[0];
|
|
},
|
|
array_keys( get_plugins() )
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get an array of installed plugins with their file paths as a key value pair.
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function get_installed_plugins_paths() {
|
|
$plugins = get_plugins();
|
|
$installed_plugins = array();
|
|
|
|
foreach ( $plugins as $path => $plugin ) {
|
|
$path_parts = explode( '/', $path );
|
|
$slug = $path_parts[0];
|
|
$installed_plugins[ $slug ] = $path;
|
|
}
|
|
|
|
return $installed_plugins;
|
|
}
|
|
|
|
/**
|
|
* Get an array of active plugin slugs.
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function get_active_plugin_slugs() {
|
|
return array_map(
|
|
function( $plugin_path ) {
|
|
$path_parts = explode( '/', $plugin_path );
|
|
return $path_parts[0];
|
|
},
|
|
get_option( 'active_plugins', array() )
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Checks if a plugin is installed.
|
|
*
|
|
* @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function is_plugin_installed( $plugin ) {
|
|
$plugin_path = self::get_plugin_path_from_slug( $plugin );
|
|
return $plugin_path ? array_key_exists( $plugin_path, get_plugins() ) : false;
|
|
}
|
|
|
|
/**
|
|
* Checks if a plugin is active.
|
|
*
|
|
* @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function is_plugin_active( $plugin ) {
|
|
$plugin_path = self::get_plugin_path_from_slug( $plugin );
|
|
return $plugin_path ? in_array( $plugin_path, get_option( 'active_plugins', array() ), true ) : false;
|
|
}
|
|
|
|
/**
|
|
* Get plugin data.
|
|
*
|
|
* @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name.
|
|
*
|
|
* @return array|false
|
|
*/
|
|
public static function get_plugin_data( $plugin ) {
|
|
$plugin_path = self::get_plugin_path_from_slug( $plugin );
|
|
$plugins = get_plugins();
|
|
|
|
return isset( $plugins[ $plugin_path ] ) ? $plugins[ $plugin_path ] : false;
|
|
}
|
|
|
|
}
|