Files

32 lines
1.5 KiB
PHP

<?php
namespace AskTamMCP\Tools;
defined('ABSPATH') || exit;
class PluginTools {
public static function listPlugins(array $args): array {
if (!function_exists('get_plugins')) require_once ABSPATH.'wp-admin/includes/plugin.php';
$all = get_plugins();
$active = get_option('active_plugins',[]);
$status = $args['status'] ?? 'all';
$result = [];
foreach ($all as $file => $data) {
$isActive = in_array($file, $active, true);
if ($status === 'active' && !$isActive) continue;
if ($status === 'inactive' && $isActive) continue;
$result[] = ['file'=>$file,'name'=>$data['Name'],'version'=>$data['Version'],'active'=>$isActive,'description'=>$data['Description']];
}
return ['plugins'=>$result,'total'=>count($result)];
}
public static function activatePlugin(array $args): array {
if (!function_exists('activate_plugin')) require_once ABSPATH.'wp-admin/includes/plugin.php';
$r = activate_plugin($args['plugin']);
if (is_wp_error($r)) throw new \RuntimeException($r->get_error_message());
return ['plugin'=>$args['plugin'],'activated'=>true];
}
public static function deactivatePlugin(array $args): array {
if (!function_exists('deactivate_plugins')) require_once ABSPATH.'wp-admin/includes/plugin.php';
deactivate_plugins($args['plugin']);
return ['plugin'=>$args['plugin'],'deactivated'=>true];
}
}