wp_back/wp-content/plugins/wp-asset-clean-up/classes/PluginsManager.php

81 lines
2.1 KiB
PHP
Raw Permalink Normal View History

2024-05-20 15:37:46 +03:00
<?php
namespace WpAssetCleanUp;
/**
* Class PluginsManager
* @package WpAssetCleanUp
*/
class PluginsManager
{
/**
* @var array
*/
public $data = array();
/**
*
*/
public function page()
{
// Get active plugins and their basic information
$this->data['active_plugins'] = self::getActivePlugins();
$this->data['plugins_icons'] = Misc::getAllActivePluginsIcons();
$wpacuSubPage = (isset($_GET['wpacu_sub_page']) && $_GET['wpacu_sub_page']) ? $_GET['wpacu_sub_page'] : 'manage_plugins_front';
$this->data['wpacu_sub_page'] = $wpacuSubPage;
Main::instance()->parseTemplate('admin-page-plugins-manager', $this->data, true);
}
/**
* @return array
*/
public static function getActivePlugins()
{
$activePluginsFinal = array();
// Get active plugins and their basic information
$activePlugins = wp_get_active_and_valid_plugins();
// Also check any network activated plugins in case we're dealing with a MultiSite setup
if ( is_multisite() ) {
$activeNetworkPlugins = wp_get_active_network_plugins();
if ( ! empty( $activeNetworkPlugins ) ) {
foreach ( $activeNetworkPlugins as $activeNetworkPlugin ) {
$activePlugins[] = $activeNetworkPlugin;
}
}
}
$activePlugins = array_unique($activePlugins);
foreach ($activePlugins as $pluginPath) {
// Skip Asset CleanUp as it's obviously needed for the functionality
if (strpos($pluginPath, 'wp-asset-clean-up') !== false) {
continue;
}
$networkActivated = isset($activeNetworkPlugins) && in_array($pluginPath, $activeNetworkPlugins);
$pluginRelPath = trim(str_replace(WP_PLUGIN_DIR, '', $pluginPath), '/');
$pluginData = get_plugin_data($pluginPath);
$activePluginsFinal[] = array(
'title' => $pluginData['Name'],
'path' => $pluginRelPath,
'network_activated' => $networkActivated
);
}
if ( ! empty($activePluginsFinal) ) {
usort( $activePluginsFinal, static function( $a, $b ) {
return strcmp( $a['title'], $b['title'] );
} );
}
return $activePluginsFinal;
}
}