_get_upgradable_plugins(); $ready_for_upgrade = array(); if (!empty($upgradable_plugins)) { foreach ($upgradable_plugins as $upgrade) { $ready_for_upgrade[] = $upgrade->file; } } $return = ''; if (!empty($ready_for_upgrade)) { ob_start(); include_once(ABSPATH . 'wp-admin/includes/file.php'); include_once(ABSPATH . 'wp-admin/includes/plugin.php'); require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'); if (class_exists('Plugin_Upgrader')) { $upgrader = new Plugin_Upgrader(new Bulk_Plugin_Upgrader_Skin(compact('nonce', 'url'))); $result = $upgrader->bulk_upgrade($ready_for_upgrade); ob_end_clean(); foreach ($result as $plugin_slug => $plugin_info) { $data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_slug); if (!$plugin_info || is_wp_error($plugin_info)) { $return .= '' . $data['Name'] . ' was not upgraded.
'; } else { $return .= '' . $data['Name'] . ' successfully upgraded.
'; } } ob_end_clean(); return array( 'upgraded' => $return ); } else { ob_end_clean(); return array( 'error' => 'Could not initialize upgrader.' ); } } return array( 'error' => 'No plugins to upgrade at the moment' ); } /** * Uploads a plugin, given its package url * * @param mixed $args */ function upload_by_url($args) { //print_r($args); $this->_escape($args); $plugin_url = $args['url']; $activate_plugin = $args['activate']; if ($plugin_url) { ob_start(); include_once(ABSPATH . 'wp-admin/includes/file.php'); include_once(ABSPATH . 'wp-admin/includes/plugin.php'); include_once(ABSPATH . 'wp-admin/includes/misc.php'); include_once(ABSPATH . 'wp-admin/includes/template.php'); include_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'); $upgrader = new Plugin_Upgrader(); $result = $upgrader->run(array( 'package' => $plugin_url, 'destination' => WP_PLUGIN_DIR, 'clear_destination' => false, //Do not overwrite files. 'clear_working' => true, 'hook_extra' => array() )); ob_end_clean(); if (is_wp_error($upgrader->skin->result) || !$upgrader->plugin_info()) { return array( 'bool' => false, 'message' => 'Plugin was not installed.' ); } if ($activate_plugin) { $success = activate_plugin($upgrader->plugin_info(), '', false); if (!is_wp_error($success)) { return array( 'bool' => true, 'message' => 'Plugin ' . $upgrader->result[destination_name] . ' successfully installed and activated ' ); } return array( 'bool' => true, 'message' => 'Plugin ' . $upgrader->result[destination_name] . ' successfully installed ' ); } else { return (!$result or is_wp_error($result)) ? array( 'bool' => false, 'message' => 'Upload failed.' ) : array( 'bool' => true, 'message' => 'Plugin ' . $upgrader->result[destination_name] . ' successfully installed ' ); } } else return array( 'bool' => false, 'message' => 'Missing plugin.' ); } function _get_upgradable_plugins() { $current = $this->mmb_get_transient('update_plugins'); $upgradable_plugins = array(); if (!empty($current->response)) { foreach ($current->response as $plugin_path => $plugin_data) { if (!function_exists('get_plugin_data')) include_once ABSPATH . 'wp-admin/includes/plugin.php'; $data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_path); $current->response[$plugin_path]->name = $data['Name']; $current->response[$plugin_path]->old_version = $data['Version']; $current->response[$plugin_path]->file = $plugin_path; $upgradable_plugins[] = $current->response[$plugin_path]; } return $upgradable_plugins; } else return array(); } } ?>