32 lines
1.5 KiB
PHP
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];
|
|
}
|
|
}
|