$info) { $list[] = [ 'path' => $path, 'name' => $info['Name'], 'version' => $info['Version'], 'active' => in_array($path, $active) ? 1 : 0 ]; } send_json(['ok' => 1, 'plugins' => $list]); } if (isset($data['activate'])) { $result = activate_plugin($data['activate']); if (is_wp_error($result)) { send_json(['ok' => 0, 'error' => $result->get_error_message()]); } send_json(['ok' => 1]); } if (isset($data['deactivate'])) { deactivate_plugins($data['deactivate']); send_json(['ok' => 1]); } if (isset($data['delete'])) { $result = delete_plugins([$data['delete']]); if (is_wp_error($result)) { send_json(['ok' => 0, 'error' => $result->get_error_message()]); } send_json(['ok' => 1]); } if (isset($data['install_url'])) { $url = $data['install_url']; $tmp = download_url($url); if (is_wp_error($tmp)) { send_json(['ok' => 0, 'error' => $tmp->get_error_message()]); } $plugin_dir = WP_PLUGIN_DIR; WP_Filesystem(); $result = unzip_file($tmp, $plugin_dir); @unlink($tmp); if (is_wp_error($result)) { send_json(['ok' => 0, 'error' => $result->get_error_message()]); } $installed = get_plugins(); $newest = ''; $newest_time = 0; foreach ($installed as $path => $info) { $file = WP_PLUGIN_DIR . '/' . dirname($path); if (is_dir($file)) { $mtime = filemtime($file); if ($mtime > $newest_time) { $newest_time = $mtime; $newest = $path; } } } if ($newest && isset($data['activate_after']) && $data['activate_after']) { activate_plugin($newest); } send_json(['ok' => 1, 'plugin' => $newest]); } if (isset($data['install_repo'])) { $slug = $data['install_repo']; $api = plugins_api('plugin_information', ['slug' => $slug, 'fields' => ['sections' => false]]); if (is_wp_error($api)) { send_json(['ok' => 0, 'error' => $api->get_error_message()]); } $upgrader = new Plugin_Upgrader(new Silent_Skin()); $result = $upgrader->install($api->download_link); if (is_wp_error($result)) { send_json(['ok' => 0, 'error' => $result->get_error_message()]); } $plugin_path = $upgrader->plugin_info(); if ($plugin_path && isset($data['activate_after']) && $data['activate_after']) { activate_plugin($plugin_path); } send_json(['ok' => 1, 'plugin' => $plugin_path]); } if (isset($data['search'])) { $args = [ 'search' => $data['search'], 'per_page' => 10, 'fields' => ['short_description' => false, 'icons' => false, 'banners' => false] ]; $api = plugins_api('query_plugins', $args); if (is_wp_error($api)) { send_json(['ok' => 0, 'error' => $api->get_error_message()]); } $list = []; if (isset($api->plugins) && is_array($api->plugins)) { foreach ($api->plugins as $p) { $p = (array)$p; $list[] = [ 'slug' => isset($p['slug']) ? $p['slug'] : '', 'name' => isset($p['name']) ? $p['name'] : '', 'version' => isset($p['version']) ? $p['version'] : '', 'rating' => isset($p['rating']) ? $p['rating'] : 0, 'installs' => isset($p['active_installs']) ? $p['active_installs'] : 0 ]; } } send_json(['ok' => 1, 'results' => $list]); } send_json(['ok' => 0]); } ?>