/** * Install a plugin * * @param string $plugin_name * @return array */ function learn_press_install_add_on($plugin_name) { require_once LPR_PLUGIN_PATH . '/inc/admin/class-lpr-upgrader.php'; $upgrader = new LPR_Upgrader(); global $wp_filesystem; $response = array(); $package = 'http://thimpress.com/lprepo/' . $plugin_name . '.zip'; $package = $upgrader->download_package($package); if (is_wp_error($package)) { $response['error'] = $package; } else { $working_dir = $upgrader->unpack_package($package, true, $plugin_name); if (is_wp_error($working_dir)) { $response['error'] = $working_dir; } else { $wp_upgrader = new WP_Upgrader(); $options = array('source' => $working_dir, 'destination' => WP_PLUGIN_DIR, 'clear_destination' => false, 'clear_working' => true, 'hook_extra' => array('type' => 'plugin', 'action' => 'install')); //$response = array(); $result = $wp_upgrader->install_package($options); if (is_wp_error($result)) { $response['error'] = $result; } else { $response = $result; $response['text'] = __('Installed'); } } } return $response; }
/** * Install a plugin from .org in the background via a cron job (used by * installer - opt in). * @param string $plugin_to_install_id * @param array $plugin_to_install * @since 2.6.0 */ public static function background_installer($plugin_to_install_id, $plugin_to_install) { if (!empty($plugin_to_install['repo-slug'])) { require_once ABSPATH . 'wp-admin/includes/file.php'; require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; require_once ABSPATH . 'wp-admin/includes/plugin.php'; WP_Filesystem(); $skin = new Automatic_Upgrader_Skin(); $upgrader = new WP_Upgrader($skin); $installed_plugins = array_map(array(__CLASS__, 'format_plugin_slug'), array_keys(get_plugins())); $plugin_slug = $plugin_to_install['repo-slug']; $plugin = $plugin_slug . '/' . $plugin_slug . '.php'; $installed = false; $activate = false; // See if the plugin is installed already if (in_array($plugin_to_install['repo-slug'], $installed_plugins)) { $installed = true; $activate = !is_plugin_active($plugin); } // Install this thing! if (!$installed) { // Suppress feedback ob_start(); try { $plugin_information = plugins_api('plugin_information', array('slug' => $plugin_to_install['repo-slug'], 'fields' => array('short_description' => false, 'sections' => false, 'requires' => false, 'rating' => false, 'ratings' => false, 'downloaded' => false, 'last_updated' => false, 'added' => false, 'tags' => false, 'homepage' => false, 'donate_link' => false, 'author_profile' => false, 'author' => false))); if (is_wp_error($plugin_information)) { throw new Exception($plugin_information->get_error_message()); } $package = $plugin_information->download_link; $download = $upgrader->download_package($package); if (is_wp_error($download)) { throw new Exception($download->get_error_message()); } $working_dir = $upgrader->unpack_package($download, true); if (is_wp_error($working_dir)) { throw new Exception($working_dir->get_error_message()); } $result = $upgrader->install_package(array('source' => $working_dir, 'destination' => WP_PLUGIN_DIR, 'clear_destination' => false, 'abort_if_destination_exists' => false, 'clear_working' => true, 'hook_extra' => array('type' => 'plugin', 'action' => 'install'))); if (is_wp_error($result)) { throw new Exception($result->get_error_message()); } $activate = true; } catch (Exception $e) { WC_Admin_Notices::add_custom_notice($plugin_to_install_id . '_install_error', sprintf(__('%1$s could not be installed (%2$s). <a href="%3$s">Please install it manually by clicking here.</a>', 'woocommerce'), $plugin_to_install['name'], $e->getMessage(), esc_url(admin_url('index.php?wc-install-plugin-redirect=' . $plugin_to_install['repo-slug'])))); } // Discard feedback ob_end_clean(); } wp_clean_plugins_cache(); // Activate this thing if ($activate) { try { $result = activate_plugin($plugin); if (is_wp_error($result)) { throw new Exception($result->get_error_message()); } } catch (Exception $e) { WC_Admin_Notices::add_custom_notice($plugin_to_install_id . '_install_error', sprintf(__('%1$s was installed but could not be activated. <a href="%2$s">Please activate it manually by clicking here.</a>', 'woocommerce'), $plugin_to_install['name'], admin_url('plugins.php'))); } } } }
/** * Downloads the MarketPress Dashboard * * @since 0.1 * @uses WP_Upgrader, wp_safe_redirect, admin_url * @return void */ public function install_marketpress_dashboard() { // Download $package = 'http://marketpress.com/mpdash.zip'; $upgrader = new WP_Upgrader(new AU_Install_Skin()); // File System Connect $res = $upgrader->fs_connect(array(WP_CONTENT_DIR, WP_PLUGIN_DIR)); // Download Package $download = $upgrader->download_package($package); // Don't delete local files $delete_package = $download != $package; // Unpack the package $working_dir = $upgrader->unpack_package($download, $delete_package); // Install the package $result = $upgrader->install_package(array('source' => $working_dir, 'destination' => WP_PLUGIN_DIR, 'clear_destination' => FALSE, 'clear_working' => TRUE, 'hook_extra' => array())); // Redirect wp_safe_redirect(network_admin_url('plugins.php?message=marketpress_installed')); }