本文整理汇总了PHP中WP_Upgrader类的典型用法代码示例。如果您正苦于以下问题:PHP WP_Upgrader类的具体用法?PHP WP_Upgrader怎么用?PHP WP_Upgrader使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了WP_Upgrader类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: download
/**
* A mimic of the `WP_Upgrader::download_package` method that adds a step to store the temp file with a shorter
* file name.
*
* @see WP_Upgrader::download_package()
*
* @param string $package The URI of the package. If this is the full path to an
* existing local file, it will be returned untouched.
*
* @return string|WP_Error The full path to the downloaded package file, or a WP_Error object.
*/
protected function download($package)
{
if (empty($this->filesystem)) {
// try to connect
$this->upgrader->fs_connect(array(WP_CONTENT_DIR, WP_PLUGIN_DIR));
global $wp_filesystem;
// still empty?
if (empty($wp_filesystem)) {
// bail
return false;
}
$this->filesystem = $wp_filesystem;
}
$this->upgrader->skin->feedback('downloading_package', $package);
$download_file = download_url($package);
if (is_wp_error($download_file)) {
return new WP_Error('download_failed', $this->upgrader->strings['download_failed'], $download_file->get_error_message());
}
$file = $this->get_short_filename($download_file);
$moved = $this->filesystem->move($download_file, $file);
if (empty($moved)) {
// we tried, we failed, we bail and let WP do its job
return false;
}
return $file;
}
示例2: create_lock
/**
* Creates a lock using WordPress options.
*
* @since 4.5.0
* @access public
* @static
*
* @param string $lock_name The name of this unique lock.
* @param int $release_timeout Optional. The duration in seconds to respect an existing lock.
* Default: 1 hour.
* @return bool False if a lock couldn't be created or if the lock is no longer valid. True otherwise.
*/
public static function create_lock($lock_name, $release_timeout = null)
{
global $wpdb;
if (!$release_timeout) {
$release_timeout = HOUR_IN_SECONDS;
}
$lock_option = $lock_name . '.lock';
// Try to lock.
$lock_result = $wpdb->query($wpdb->prepare("INSERT IGNORE INTO `{$wpdb->options}` ( `option_name`, `option_value`, `autoload` ) VALUES (%s, %s, 'no') /* LOCK */", $lock_option, time()));
if (!$lock_result) {
$lock_result = get_option($lock_option);
// If a lock couldn't be created, and there isn't a lock, bail.
if (!$lock_result) {
return false;
}
// Check to see if the lock is still valid. If not, bail.
if ($lock_result > time() - $release_timeout) {
return false;
}
// There must exist an expired lock, clear it and re-gain it.
WP_Upgrader::release_lock($lock_name);
return WP_Upgrader::create_lock($lock_name, $release_timeout);
}
// Update the lock, as by this point we've definitely got a lock, just need to fire the actions.
update_option($lock_option, time());
return true;
}
示例3: upgradePluginTheme
//.........这里部分代码省略.........
if (count($themes) > 0) {
// To fix: optimizePressTheme update
$addFilterToFixUpdate_optimizePressTheme = false;
if (in_array('optimizePressTheme', $themes)) {
$addFilterToFixUpdate_optimizePressTheme = true;
add_filter('site_transient_update_themes', array($this, 'hookFixOptimizePressThemeUpdate'), 99);
}
//@see wp-admin/update.php
$upgrader = new Theme_Upgrader(new Bulk_Theme_Upgrader_Skin(compact('nonce', 'url')));
$result = $upgrader->bulk_upgrade($themes);
if ($addFilterToFixUpdate_optimizePressTheme) {
remove_filter('site_transient_update_themes', array($this, 'hookFixOptimizePressThemeUpdate'), 99);
}
if (!empty($result)) {
foreach ($result as $theme => $info) {
if (empty($info)) {
$information['upgrades'][$theme] = false;
} else {
$information['upgrades'][$theme] = true;
}
}
} else {
MainWP_Helper::error(__('Bad request', 'mainwp-child'));
}
}
if (count($premiumThemes) > 0) {
$mwp_premium_updates = apply_filters('mwp_premium_perform_update', array());
$mwp_premium_updates_todo = array();
$mwp_premium_updates_todo_slugs = array();
if (is_array($premiumThemes) && is_array($mwp_premium_updates)) {
foreach ($premiumThemes as $premiumTheme) {
foreach ($mwp_premium_updates as $key => $update) {
$slug = isset($update['slug']) ? $update['slug'] : $update['Name'];
if (0 === strcmp($slug, $premiumTheme)) {
$mwp_premium_updates_todo[$key] = $update;
$mwp_premium_updates_todo_slugs[] = $slug;
}
}
}
}
unset($mwp_premium_updates);
$premiumUpgrader = new Theme_Upgrader(new Bulk_Theme_Upgrader_Skin(compact('nonce', 'url')));
}
if (count($themes) <= 0 && count($premiumThemes) <= 0) {
MainWP_Helper::error(__('Bad request', 'mainwp-child'));
}
if (null !== $this->filterFunction) {
remove_filter('pre_site_transient_update_themes', $this->filterFunction, 99);
}
} else {
MainWP_Helper::error(__('Bad request', 'mainwp-child'));
}
}
if (count($mwp_premium_updates_todo) > 0) {
//Upgrade via WP
//@see wp-admin/update.php
$result = $premiumUpgrader->bulk_upgrade($mwp_premium_updates_todo_slugs);
if (!empty($result)) {
foreach ($result as $plugin => $info) {
if (!empty($info)) {
$information['upgrades'][$plugin] = true;
foreach ($mwp_premium_updates_todo as $key => $update) {
$slug = isset($update['slug']) ? $update['slug'] : $update['Name'];
if (0 === strcmp($slug, $plugin)) {
//unset($mwp_premium_updates_todo[$key]);
}
}
}
}
}
//Upgrade via callback
foreach ($mwp_premium_updates_todo as $update) {
$slug = isset($update['slug']) ? $update['slug'] : $update['Name'];
if (isset($update['url'])) {
$installer = new WP_Upgrader();
//@see wp-admin/includes/class-wp-upgrader.php
$result = $installer->run(array('package' => $update['url'], 'destination' => 'plugin' === $update['type'] ? WP_PLUGIN_DIR : WP_CONTENT_DIR . '/themes', 'clear_destination' => true, 'clear_working' => true, 'hook_extra' => array()));
$information['upgrades'][$slug] = !is_wp_error($result) && !empty($result);
} else {
if (isset($update['callback'])) {
if (is_array($update['callback']) && isset($update['callback'][0]) && isset($update['callback'][1])) {
$update_result = @call_user_func(array($update['callback'][0], $update['callback'][1]));
$information['upgrades'][$slug] = $update_result && true;
} else {
if (is_string($update['callback'])) {
$update_result = @call_user_func($update['callback']);
$information['upgrades'][$slug] = $update_result && true;
} else {
$information['upgrades'][$slug] = false;
}
}
} else {
$information['upgrades'][$slug] = false;
}
}
}
}
$information['sync'] = $this->getSiteStats(array(), false);
MainWP_Helper::write($information);
}
示例4: upgrade
/**
* Upgrade WordPress core.
*
* @since 2.8.0
* @access public
*
* @global WP_Filesystem_Base $wp_filesystem Subclass
* @global callable $_wp_filesystem_direct_method
*
* @param object $current Response object for whether WordPress is current.
* @param array $args {
* Optional. Arguments for upgrading WordPress core. Default empty array.
*
* @type bool $pre_check_md5 Whether to check the file checksums before
* attempting the upgrade. Default true.
* @type bool $attempt_rollback Whether to attempt to rollback the chances if
* there is a problem. Default false.
* @type bool $do_rollback Whether to perform this "upgrade" as a rollback.
* Default false.
* }
* @return null|false|WP_Error False or WP_Error on failure, null on success.
*/
public function upgrade($current, $args = array())
{
global $wp_filesystem;
include ABSPATH . WPINC . '/version.php';
// $wp_version;
$start_time = time();
$defaults = array('pre_check_md5' => true, 'attempt_rollback' => false, 'do_rollback' => false, 'allow_relaxed_file_ownership' => false);
$parsed_args = wp_parse_args($args, $defaults);
$this->init();
$this->upgrade_strings();
// Is an update available?
if (!isset($current->response) || $current->response == 'latest') {
return new WP_Error('up_to_date', $this->strings['up_to_date']);
}
$res = $this->fs_connect(array(ABSPATH, WP_CONTENT_DIR), $parsed_args['allow_relaxed_file_ownership']);
if (!$res || is_wp_error($res)) {
return $res;
}
$wp_dir = trailingslashit($wp_filesystem->abspath());
$partial = true;
if ($parsed_args['do_rollback']) {
$partial = false;
} elseif ($parsed_args['pre_check_md5'] && !$this->check_files()) {
$partial = false;
}
/*
* If partial update is returned from the API, use that, unless we're doing
* a reinstall. If we cross the new_bundled version number, then use
* the new_bundled zip. Don't though if the constant is set to skip bundled items.
* If the API returns a no_content zip, go with it. Finally, default to the full zip.
*/
if ($parsed_args['do_rollback'] && $current->packages->rollback) {
$to_download = 'rollback';
} elseif ($current->packages->partial && 'reinstall' != $current->response && $wp_version == $current->partial_version && $partial) {
$to_download = 'partial';
} elseif ($current->packages->new_bundled && version_compare($wp_version, $current->new_bundled, '<') && (!defined('CORE_UPGRADE_SKIP_NEW_BUNDLED') || !CORE_UPGRADE_SKIP_NEW_BUNDLED)) {
$to_download = 'new_bundled';
} elseif ($current->packages->no_content) {
$to_download = 'no_content';
} else {
$to_download = 'full';
}
// Lock to prevent multiple Core Updates occuring
$lock = WP_Upgrader::create_lock('core_updater', 15 * MINUTE_IN_SECONDS);
if (!$lock) {
return new WP_Error('locked', $this->strings['locked']);
}
$download = $this->download_package($current->packages->{$to_download});
if (is_wp_error($download)) {
WP_Upgrader::release_lock('core_updater');
return $download;
}
$working_dir = $this->unpack_package($download);
if (is_wp_error($working_dir)) {
WP_Upgrader::release_lock('core_updater');
return $working_dir;
}
// Copy update-core.php from the new version into place.
if (!$wp_filesystem->copy($working_dir . '/wordpress/wp-admin/includes/update-core.php', $wp_dir . 'wp-admin/includes/update-core.php', true)) {
$wp_filesystem->delete($working_dir, true);
WP_Upgrader::release_lock('core_updater');
return new WP_Error('copy_failed_for_update_core_file', __('The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.'), 'wp-admin/includes/update-core.php');
}
$wp_filesystem->chmod($wp_dir . 'wp-admin/includes/update-core.php', FS_CHMOD_FILE);
require_once ABSPATH . 'wp-admin/includes/update-core.php';
if (!function_exists('update_core')) {
WP_Upgrader::release_lock('core_updater');
return new WP_Error('copy_failed_space', $this->strings['copy_failed_space']);
}
$result = update_core($working_dir, $wp_dir);
// In the event of an issue, we may be able to roll back.
if ($parsed_args['attempt_rollback'] && $current->packages->rollback && !$parsed_args['do_rollback']) {
$try_rollback = false;
if (is_wp_error($result)) {
$error_code = $result->get_error_code();
/*
* Not all errors are equal. These codes are critical: copy_failed__copy_dir,
* mkdir_failed__copy_dir, copy_failed__copy_dir_retry, and disk_full.
//.........这里部分代码省略.........
示例5: upgrade_premium
public function upgrade_premium($premium = false)
{
if (!class_exists('WP_Upgrader')) {
include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
}
if (!$premium || empty($premium)) {
return array('error' => 'No premium files for upgrade.');
}
$upgrader = false;
$pr_update = array();
$themes = array();
$plugins = array();
$result = array();
$premium_update = array();
$premium_update = apply_filters('mwp_premium_perform_update', $premium_update);
if (!empty($premium_update)) {
foreach ($premium as $pr) {
foreach ($premium_update as $key => $update) {
$update = array_change_key_case($update, CASE_LOWER);
if ($update['name'] == $pr['name']) {
// prepare bulk updates for premiums that use WordPress upgrader
if (isset($update['type'])) {
if ($update['type'] == 'plugin') {
if (isset($update['slug']) && !empty($update['slug'])) {
$plugins[$update['slug']] = $update;
}
}
if ($update['type'] == 'theme') {
if (isset($update['template']) && !empty($update['template'])) {
$themes[$update['template']] = $update;
}
}
}
} else {
unset($premium_update[$key]);
}
}
}
// try default wordpress upgrader
if (!empty($plugins)) {
$updateplugins = $this->upgrade_plugins(array_values($plugins));
if (!empty($updateplugins) && isset($updateplugins['upgraded'])) {
foreach ($premium_update as $key => $update) {
$update = array_change_key_case($update, CASE_LOWER);
foreach ($updateplugins['upgraded'] as $slug => $upgrade) {
if (isset($update['slug']) && $update['slug'] == $slug) {
if ($upgrade == 1) {
unset($premium_update[$key]);
}
$pr_update['plugins']['upgraded'][md5($update['name'])] = $upgrade;
}
}
}
}
}
//try direct install with overwrite
if (!empty($premium_update)) {
foreach ($premium_update as $update) {
$update = array_change_key_case($update, CASE_LOWER);
$update_result = false;
if (isset($update['url'])) {
if (defined('WP_INSTALLING') && file_exists(ABSPATH . '.maintenance')) {
$pr_update[$update['type'] . 's']['upgraded'][md5($update['name'])] = 'Site under maintanace.';
}
/** @handled class */
$upgrader_skin = new WP_Upgrader_Skin();
$upgrader_skin->done_header = true;
/** @handled class */
$upgrader = new WP_Upgrader();
@($update_result = $upgrader->run(array('package' => $update['url'], 'destination' => isset($update['type']) && $update['type'] == 'theme' ? WP_CONTENT_DIR . '/themes' : WP_PLUGIN_DIR, 'clear_destination' => true, 'clear_working' => true, 'is_multi' => true, 'hook_extra' => array())));
$update_result = !$update_result || is_wp_error($update_result) ? $this->mmb_get_error($update_result) : 1;
} else {
if (isset($update['callback'])) {
if (is_array($update['callback'])) {
$update_result = call_user_func(array($update['callback'][0], $update['callback'][1]));
} else {
if (is_string($update['callback'])) {
$update_result = call_user_func($update['callback']);
} else {
$update_result = 'Upgrade function "' . $update['callback'] . '" does not exists.';
}
}
$update_result = $update_result !== true ? $this->mmb_get_error($update_result) : 1;
} else {
$update_result = 'Bad update params.';
}
}
$pr_update[$update['type'] . 's']['upgraded'][md5($update['name'])] = $update_result;
}
}
return $pr_update;
} else {
foreach ($premium as $pr) {
$result[$pr['type'] . 's']['upgraded'][md5($pr['name'])] = 'This premium update is not registered.';
}
return $result;
}
}
示例6: install_bsf_product
function install_bsf_product($install_id)
{
global $bsf_product_validate_url, $bsf_support_url;
if (!current_user_can('install_plugins')) {
wp_die(__('You do not have sufficient permissions to install plugins for this site.', 'bsf'));
}
$brainstrom_bundled_products = get_option('brainstrom_bundled_products') ? get_option('brainstrom_bundled_products') : array();
$install_product_data = array();
if (!empty($brainstrom_bundled_products)) {
foreach ($brainstrom_bundled_products as $keys => $products) {
if (strlen($keys) > 1) {
foreach ($products as $key => $product) {
if ($product->id === $install_id) {
$install_product_data = $product;
break;
}
}
} else {
if ($products->id === $install_id) {
$install_product_data = $products;
break;
}
}
}
}
if (empty($install_product_data)) {
return false;
}
if ($install_product_data->type !== 'plugin') {
return false;
}
/* temp */
/*$install_product_data->in_house = 'wp';
$install_product_data->download_url = 'https://downloads.wordpress.org/plugin/redux-framework.3.5.9.zip';*/
$is_wp = isset($install_product_data->in_house) && $install_product_data->in_house === 'wp' ? true : false;
if ($is_wp) {
$download_path = $install_product_data->download_url;
} else {
$path = $bsf_product_validate_url;
$timezone = date_default_timezone_get();
$call = 'file=' . $install_product_data->download_url . '&hashtime=' . strtotime(date('d-m-Y h:i:s a')) . '&timezone=' . $timezone;
$hash = $call;
//$parse = parse_url($path);
//$download = $parse['scheme'].'://'.$parse['host'];
$get_path = 'http://downloads.brainstormforce.com/';
$download_path = rtrim($get_path, '/') . '/download.php?' . $hash . '&base=ignore';
}
require_once ABSPATH . '/wp-admin/includes/file.php';
WP_Filesystem();
global $wp_filesystem;
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$WP_Upgrader = new WP_Upgrader();
$res = $WP_Upgrader->fs_connect(array(WP_CONTENT_DIR));
if (!$res) {
wp_die(new WP_Error('Server error', __("Error! Can't connect to filesystem", 'bsf')));
}
$Plugin_Upgrader = new Plugin_Upgrader();
$defaults = array('clear_update_cache' => true);
$args = array();
$parsed_args = wp_parse_args($args, $defaults);
$Plugin_Upgrader->init();
$Plugin_Upgrader->install_strings();
$Plugin_Upgrader->strings['downloading_package'] = __('Downloading package from Server', 'bsf');
$Plugin_Upgrader->strings['remove_old'] = __('Removing old plugin, if exists', 'bsf');
add_filter('upgrader_source_selection', array($Plugin_Upgrader, 'check_package'));
$Plugin_Upgrader->run(array('package' => $download_path, 'destination' => WP_PLUGIN_DIR, 'clear_destination' => true, 'clear_working' => true, 'hook_extra' => array('type' => 'plugin', 'action' => 'install')));
remove_filter('upgrader_source_selection', array($Plugin_Upgrader, 'check_package'));
if (!$Plugin_Upgrader->result || is_wp_error($Plugin_Upgrader->result)) {
return $Plugin_Upgrader->result;
}
// Force refresh of plugin update information
wp_clean_plugins_cache($parsed_args['clear_update_cache']);
//return true;
$response = array('status' => true, 'type' => 'plugin', 'name' => $install_product_data->name, 'init' => $install_product_data->init);
$plugin_abs_path = WP_PLUGIN_DIR . '/' . $install_product_data->init;
if (is_file($plugin_abs_path)) {
if (!isset($_GET['action']) && !isset($_GET['id'])) {
echo '|bsf-plugin-installed|';
}
$is_plugin_installed = true;
if (!is_plugin_active($install_product_data->init)) {
activate_plugin($install_product_data->init);
if (is_plugin_active($install_product_data->init)) {
if (!isset($_GET['action']) && !isset($_GET['id'])) {
echo '|bsf-plugin-activated|';
}
}
} else {
if (!isset($_GET['action']) && !isset($_GET['id'])) {
echo '|bsf-plugin-activated|';
}
}
}
return $response;
}
示例7: settings_panel
public static function settings_panel()
{
if (isset($_GET['wpak_action']) && $_GET['wpak_action'] == 'upload-theme') {
if (!current_user_can('upload_plugins') && !current_user_can('wpak_edit_apps')) {
wp_die(__('You do not have sufficient permissions to install WP AppKit themes on this site.', WpAppKit::i18n_domain));
}
check_admin_referer('wpak-theme-upload');
include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$file_upload = new File_Upload_Upgrader('themezip', 'package');
$file_type = wp_check_filetype($file_upload->filename);
if ($file_type['ext'] == 'zip' && $file_type['type'] == 'application/zip') {
$title = sprintf(__('Installing WP AppKit from uploaded file: %s', WpAppKit::i18n_domain), esc_html(basename($file_upload->filename)));
$nonce = 'wpak-theme-upload';
$url = add_query_arg(array('package' => $file_upload->id));
// A nonce is passed to WP_Upgrader_Skin class, so wp_nonce_url() is called and url is escaped there...
$upgrader = new WP_Upgrader(new WP_Upgrader_Skin(compact('title', 'nonce', 'url')));
$destination_folder_name = basename(sanitize_file_name($file_upload->filename), ".zip");
$result = $upgrader->run(array('package' => $file_upload->package, 'destination' => WpakThemes::get_themes_directory() . '/' . $destination_folder_name, 'clear_destination' => true, 'clear_working' => true, 'hook_extra' => array()));
if ($result || is_wp_error($result)) {
$file_upload->cleanup();
}
if (!is_wp_error($result)) {
echo sprintf(__("WP AppKit theme '%s' installed successfully!", WpAppKit::i18n_domain), $destination_folder_name);
} else {
_e('An error occured', WpAppKit::i18n_domain);
echo ' : ' . $result->get_error_message();
}
echo '<br/><br/><a href="' . esc_url(remove_query_arg('wpak_action')) . '">' . __('Back to theme upload form', WpAppKit::i18n_domain) . '</a>';
echo '<br/><br/><a href="' . admin_url() . '/edit.php?post_type=wpak_apps">' . __('Go to my WP AppKit app list', WpAppKit::i18n_domain) . '</a>';
} else {
_e("Uploaded file must be a valid zip file", WpAppKit::i18n_domain);
}
} else {
?>
<div class="wrap" id="wpak-settings">
<h2><?php
_e('WP AppKit Themes upload', WpAppKit::i18n_domain);
?>
</h2>
<?php
if (!empty($result['message'])) {
?>
<div class="<?php
echo $result['type'];
?>
" ><p><?php
echo $result['message'];
?>
</p></div>
<?php
}
?>
<div class="upload-plugin">
<p class="install-help"><?php
_e('If you have a WP AppKit theme in a .zip format, you may install it by uploading it here.');
?>
</p>
<form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php
echo esc_url(add_query_arg(array('wpak_action' => 'upload-theme')));
?>
">
<?php
wp_nonce_field('wpak-theme-upload');
?>
<label class="screen-reader-text" for="themezip"><?php
_e('WP AppKit Theme zip file', WpAppKit::i18n_domain);
?>
</label>
<input type="file" id="themezip" name="themezip" />
<?php
submit_button(__('Install Now'), 'button', 'install-theme-submit', false);
?>
</form>
</div>
</div>
<?php
}
}
示例8: run
/**
* Kicks off the background update process, looping through all pending updates.
*
* @since 3.7.0
* @access public
*
* @global wpdb $wpdb
* @global string $wp_version
*/
public function run()
{
global $wpdb, $wp_version;
if ($this->is_disabled()) {
return;
}
if (!is_main_network() || !is_main_site()) {
return;
}
if (!WP_Upgrader::create_lock('auto_updater')) {
return;
}
// Don't automatically run these thins, as we'll handle it ourselves
remove_action('upgrader_process_complete', array('Language_Pack_Upgrader', 'async_upgrade'), 20);
remove_action('upgrader_process_complete', 'wp_version_check');
remove_action('upgrader_process_complete', 'wp_update_plugins');
remove_action('upgrader_process_complete', 'wp_update_themes');
// Next, Plugins
wp_update_plugins();
// Check for Plugin updates
$plugin_updates = get_site_transient('update_plugins');
if ($plugin_updates && !empty($plugin_updates->response)) {
foreach ($plugin_updates->response as $plugin) {
$this->update('plugin', $plugin);
}
// Force refresh of plugin update information
wp_clean_plugins_cache();
}
// Next, those themes we all love
wp_update_themes();
// Check for Theme updates
$theme_updates = get_site_transient('update_themes');
if ($theme_updates && !empty($theme_updates->response)) {
foreach ($theme_updates->response as $theme) {
$this->update('theme', (object) $theme);
}
// Force refresh of theme update information
wp_clean_themes_cache();
}
// Next, Process any core update
wp_version_check();
// Check for Core updates
$core_update = find_core_auto_update();
if ($core_update) {
$this->update('core', $core_update);
}
// Clean up, and check for any pending translations
// (Core_Upgrader checks for core updates)
$theme_stats = array();
if (isset($this->update_results['theme'])) {
foreach ($this->update_results['theme'] as $upgrade) {
$theme_stats[$upgrade->item->theme] = true === $upgrade->result;
}
}
wp_update_themes($theme_stats);
// Check for Theme updates
$plugin_stats = array();
if (isset($this->update_results['plugin'])) {
foreach ($this->update_results['plugin'] as $upgrade) {
$plugin_stats[$upgrade->item->plugin] = true === $upgrade->result;
}
}
wp_update_plugins($plugin_stats);
// Check for Plugin updates
// Finally, Process any new translations
$language_updates = wp_get_translation_updates();
if ($language_updates) {
foreach ($language_updates as $update) {
$this->update('translation', $update);
}
// Clear existing caches
wp_clean_update_cache();
wp_version_check();
// check for Core updates
wp_update_themes();
// Check for Theme updates
wp_update_plugins();
// Check for Plugin updates
}
// Send debugging email to all development installs.
if (!empty($this->update_results)) {
$development_version = false !== strpos($wp_version, '-');
/**
* Filter whether to send a debugging email for each automatic background update.
*
* @since 3.7.0
*
* @param bool $development_version By default, emails are sent if the
* install is a development version.
* Return false to avoid the email.
*/
//.........这里部分代码省略.........
示例9: callback_upgrader_process_complete
/**
* Log plugin installations
*
* @action transition_post_status
*
* @param \WP_Upgrader $upgrader
* @param array $extra
*
* @return bool
*/
public function callback_upgrader_process_complete($upgrader, $extra)
{
$logs = array();
$success = !is_wp_error($upgrader->skin->result);
$error = null;
if (!$success) {
$errors = $upgrader->skin->result->errors;
list($error) = reset($errors);
}
// This would have failed down the road anyway
if (!isset($extra['type'])) {
return false;
}
$type = $extra['type'];
$action = $extra['action'];
if (!in_array($type, array('plugin', 'theme'))) {
return false;
}
if ('install' === $action) {
if ('plugin' === $type) {
$path = $upgrader->plugin_info();
if (!$path) {
return false;
}
$data = get_plugin_data($upgrader->skin->result['local_destination'] . '/' . $path);
$slug = $upgrader->result['destination_name'];
$name = $data['Name'];
$version = $data['Version'];
} else {
// theme
$slug = $upgrader->theme_info();
if (!$slug) {
return false;
}
wp_clean_themes_cache();
$theme = wp_get_theme($slug);
$name = $theme->name;
$version = $theme->version;
}
$action = 'installed';
$message = _x('Installed %1$s: %2$s %3$s', 'Plugin/theme installation. 1: Type (plugin/theme), 2: Plugin/theme name, 3: Plugin/theme version', 'stream');
$logs[] = compact('slug', 'name', 'version', 'message', 'action');
} elseif ('update' === $action) {
$action = 'updated';
$message = _x('Updated %1$s: %2$s %3$s', 'Plugin/theme update. 1: Type (plugin/theme), 2: Plugin/theme name, 3: Plugin/theme version', 'stream');
if ('plugin' === $type) {
if (isset($extra['bulk']) && true === $extra['bulk']) {
$slugs = $extra['plugins'];
} else {
$slugs = array($upgrader->skin->plugin);
}
$_plugins = $this->get_plugins();
foreach ($slugs as $slug) {
$plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $slug);
$name = $plugin_data['Name'];
$version = $plugin_data['Version'];
$old_version = $_plugins[$slug]['Version'];
$logs[] = compact('slug', 'name', 'old_version', 'version', 'message', 'action');
}
} else {
// theme
if (isset($extra['bulk']) && true === $extra['bulk']) {
$slugs = $extra['themes'];
} else {
$slugs = array($upgrader->skin->theme);
}
foreach ($slugs as $slug) {
$theme = wp_get_theme($slug);
$stylesheet = $theme['Stylesheet Dir'] . '/style.css';
$theme_data = get_file_data($stylesheet, array('Version' => 'Version'));
$name = $theme['Name'];
$old_version = $theme['Version'];
$version = $theme_data['Version'];
$logs[] = compact('slug', 'name', 'old_version', 'version', 'message', 'action');
}
}
} else {
return false;
}
$context = $type . 's';
foreach ($logs as $log) {
$name = isset($log['name']) ? $log['name'] : null;
$version = isset($log['version']) ? $log['version'] : null;
$slug = isset($log['slug']) ? $log['slug'] : null;
$old_version = isset($log['old_version']) ? $log['old_version'] : null;
$message = isset($log['message']) ? $log['message'] : null;
$action = isset($log['action']) ? $log['action'] : null;
$this->log($message, compact('type', 'name', 'version', 'slug', 'success', 'error', 'old_version'), null, $context, $action);
}
return true;
//.........这里部分代码省略.........
示例10: install_marketpress_dashboard
/**
* 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'));
}
示例11: installPlugin
public static function installPlugin($url, $activatePlugin = false)
{
$hasWPFileSystem = MainWP_Utility::getWPFilesystem();
/** @global WP_Filesystem_Base $wp_filesystem */
global $wp_filesystem;
if (file_exists(ABSPATH . '/wp-admin/includes/screen.php')) {
include_once ABSPATH . '/wp-admin/includes/screen.php';
}
include_once ABSPATH . '/wp-admin/includes/template.php';
include_once ABSPATH . '/wp-admin/includes/misc.php';
include_once ABSPATH . '/wp-admin/includes/class-wp-upgrader.php';
include_once ABSPATH . '/wp-admin/includes/plugin.php';
$installer = new WP_Upgrader();
$ssl_verifyhost = get_option('mainwp_sslVerifyCertificate');
$ssl_api_verifyhost = get_option('mainwp_api_sslVerifyCertificate') === false || get_option('mainwp_api_sslVerifyCertificate') == 1 ? 1 : 0;
if ($ssl_verifyhost === '0' || $ssl_api_verifyhost == 0) {
add_filter('http_request_args', array(MainWP_Extensions::getClassName(), 'noSSLFilterFunction'), 99, 2);
}
add_filter('http_request_args', array(MainWP_Extensions::getClassName(), 'http_request_reject_unsafe_urls'), 99, 2);
$result = $installer->run(array('package' => $url, 'destination' => WP_PLUGIN_DIR, 'clear_destination' => false, 'clear_working' => true, 'hook_extra' => array()));
remove_filter('http_request_args', array(MainWP_Extensions::getClassName(), 'http_request_reject_unsafe_urls'), 99, 2);
if ($ssl_verifyhost === '0') {
remove_filter('http_request_args', array(MainWP_Extensions::getClassName(), 'noSSLFilterFunction'), 99);
}
$error = $output = $plugin_slug = null;
if (is_wp_error($result)) {
$error = $result->get_error_codes();
if (is_array($error)) {
if ($error[0] == 'folder_exists') {
$error = __('Destination folder already exists.', 'mainwp');
} else {
$error = implode(', ', $error);
}
}
} else {
$path = $result['destination'];
foreach ($result['source_files'] as $srcFile) {
// to fix bug
if ($srcFile == 'readme.txt') {
continue;
}
$thePlugin = get_plugin_data($path . $srcFile);
if ($thePlugin != null && $thePlugin != '' && $thePlugin['Name'] != '') {
$output .= __('Successfully installed the plugin', 'mainwp') . ' ' . $thePlugin['Name'] . ' ' . $thePlugin['Version'];
$plugin_slug = $result['destination_name'] . '/' . $srcFile;
if ($activatePlugin) {
activate_plugin($path . $srcFile, '', false, true);
do_action('mainwp_api_extension_activated', $path . $srcFile);
}
break;
}
}
}
if (!empty($error)) {
$return['error'] = $error;
} else {
MainWP_Extensions::enableExtension($plugin_slug);
$return['result'] = 'SUCCESS';
$return['output'] = $output;
$return['slug'] = $plugin_slug;
}
return $return;
}
示例12: upgrade_bsf_product
function upgrade_bsf_product($request_product_id, $bundled_id)
{
global $bsf_product_validate_url, $bsf_support_url;
if (!current_user_can('update_plugins')) {
wp_die(__('You do not have sufficient permissions to update plugins for this site.', 'bsf'));
}
$brainstrom_users = get_option('brainstrom_users') ? get_option('brainstrom_users') : array();
$brainstrom_products = get_option('brainstrom_products') ? get_option('brainstrom_products') : array();
$brainstrom_bundled_products = get_option('brainstrom_bundled_products') ? get_option('brainstrom_bundled_products') : array();
$plugins = $themes = $mix = array();
if (!empty($brainstrom_products)) {
$plugins = isset($brainstrom_products['plugins']) ? $brainstrom_products['plugins'] : array();
$themes = isset($brainstrom_products['themes']) ? $brainstrom_products['themes'] : array();
}
$mix = array_merge($plugins, $themes);
$bsf_username = $purchase_key = $type = $template = $name = '';
if (!empty($brainstrom_users)) {
foreach ($brainstrom_users as $bsf_user) {
$bsf_username = $bsf_user['email'];
}
}
$found_in_bsf_products = false;
if ($bundled_id !== false) {
$product_details_id = $bundled_id;
} else {
$product_details_id = $request_product_id;
}
foreach ($mix as $key => $product) {
$pid = $product['id'];
if ($pid === $product_details_id) {
$purchase_key = $product['purchase_key'];
$type = $product['type'];
$template = $product['template'];
$name = $product['product_name'];
$found_in_bsf_products = true;
break;
}
}
if ($bundled_id !== false) {
if (!empty($brainstrom_bundled_products)) {
foreach ($brainstrom_bundled_products as $bp) {
if ($bp->id === $request_product_id) {
$type = $bp->type;
$template = $bp->init;
$name = $bp->name;
}
}
}
}
if ($bsf_username === '' || $purchase_key === '' || $request_product_id === '') {
wp_die('Not valid to update product');
}
$path = base64_decode($bsf_product_validate_url);
$data = array('action' => 'bsf_product_update_request', 'id' => $request_product_id, 'username' => $bsf_username, 'purchase_key' => $purchase_key, 'site_url' => get_site_url(), 'bundled' => $bundled_id);
$request = @wp_remote_post($path, array('body' => $data, 'timeout' => '60', 'sslverify' => false));
if (!is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200) {
$result = json_decode($request['body']);
if (isset($result->error) && !$result->error) {
$download_path = $result->update_data->download_url;
$timezone = date_default_timezone_get();
$call = 'file=' . $download_path . '&hashtime=' . strtotime(date('d-m-Y h:i:s a')) . '&timezone=' . $timezone;
$hash = base64_encode($call);
$parse = parse_url($path);
$download = $parse['scheme'] . '://' . $parse['host'];
$get_path = 'http://downloads.brainstormforce.com/';
$download_path = rtrim($get_path, '/') . '/download.php?hash=' . $hash;
//echo $download_path;
//die();
require_once ABSPATH . '/wp-admin/includes/file.php';
WP_Filesystem();
global $wp_filesystem;
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$WP_Upgrader = new WP_Upgrader();
$res = $WP_Upgrader->fs_connect(array(WP_CONTENT_DIR));
if (!$res) {
wp_die(new WP_Error('Server error', __("Error! Can't connect to filesystem", 'bsf')));
} else {
$upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade_tmp/bsf_package';
$package_filename = basename($download_path);
$plugin_folder = dirname($template);
if ($type === 'theme' && $bundled_id === false) {
$defaults = array('clear_update_cache' => true);
$args = array();
$parsed_args = wp_parse_args($args, $defaults);
$Theme_Upgrader = new Theme_Upgrader();
$Theme_Upgrader->init();
$Theme_Upgrader->upgrade_strings();
$Theme_Upgrader->strings['downloading_package'] = __('Downloading package from Server', 'bsf');
add_filter('upgrader_pre_install', array(&$Theme_Upgrader, 'current_before'), 10, 2);
add_filter('upgrader_post_install', array(&$Theme_Upgrader, 'current_after'), 10, 2);
add_filter('upgrader_clear_destination', array(&$Theme_Upgrader, 'delete_old_theme'), 10, 4);
$Theme_Upgrader->run(array('package' => $download_path, 'destination' => get_theme_root($template), 'clear_destination' => false, 'abort_if_destination_exists' => false, 'clear_working' => true, 'hook_extra' => array('theme' => $template, 'type' => 'theme', 'action' => 'update')));
remove_filter('upgrader_pre_install', array(&$Theme_Upgrader, 'current_before'));
remove_filter('upgrader_post_install', array(&$Theme_Upgrader, 'current_after'));
remove_filter('upgrader_clear_destination', array(&$Theme_Upgrader, 'delete_old_theme'));
if (!$Theme_Upgrader->result || is_wp_error($Theme_Upgrader->result)) {
return $Theme_Upgrader->result;
}
wp_clean_themes_cache($parsed_args['clear_update_cache']);
$response = array('status' => true, 'type' => 'theme', 'name' => $name);
//.........这里部分代码省略.........
示例13: learn_press_install_add_on
/**
* 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;
}
示例14: background_installer
/**
* 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')));
}
}
}
}
示例15: __construct
public function __construct($skin = null, $info = null, $shortinit = false)
{
global $wpdb;
// Line up a wpdb-like object to use
$this->use_wpdb = !function_exists('mysql_query') && !function_exists('mysqli_query') || !$wpdb->is_mysql || !$wpdb->ready ? true : false;
$this->our_siteurl = untrailingslashit(site_url());
if (false == $this->use_wpdb) {
// We have our own extension which drops lots of the overhead on the query
$wpdb_obj = new UpdraftPlus_WPDB(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
// Was that successful?
if (!$wpdb_obj->is_mysql || !$wpdb_obj->ready) {
$this->use_wpdb = true;
} else {
$this->wpdb_obj = $wpdb_obj;
$this->mysql_dbh = $wpdb_obj->updraftplus_getdbh();
$this->use_mysqli = $wpdb_obj->updraftplus_use_mysqli();
}
}
if ($shortinit) {
return;
}
$this->ud_backup_info = $info;
$this->ud_foreign = empty($info['meta_foreign']) ? false : $info['meta_foreign'];
parent::__construct($skin);
$this->init();
$this->backup_strings();
$this->is_multisite = is_multisite();
}