public function get_plugins()
{
$plugins = get_transient('ep_installed_plugins');
if (is_array($plugins)) {
return $plugins;
}
$plugins = array();
if (is_wp_error(ep_get_host())) {
return array('status' => false, 'msg' => esc_html__('Elasticsearch Host is not available.', 'elasticpress'));
}
$path = '/_nodes?plugin=true';
$request = ep_remote_request($path, array('method' => 'GET'));
if (!is_wp_error($request)) {
$response = json_decode(wp_remote_retrieve_body($request), true);
if (isset($response['nodes'])) {
foreach ($response['nodes'] as $node) {
if (isset($node['plugins']) && is_array($node['plugins'])) {
foreach ($node['plugins'] as $plugin) {
$plugins[$plugin['name']] = $plugin['version'];
}
break;
}
}
}
set_transient('ep_installed_plugins', $plugins, apply_filters('ep_installed_plugins_exp', 3600));
return $plugins;
}
return array('status' => false, 'msg' => $request->get_error_message());
}