From c4e0aa63d98c35bd362514747c76fdc150fa6097 Mon Sep 17 00:00:00 2001 From: Dion Hulse Date: Fri, 15 Nov 2013 03:04:00 +0000 Subject: [PATCH] Updates: Force an update check to occur when the 'Check Again' button is used in the Dashboard. Fixes #25831 git-svn-id: https://develop.svn.wordpress.org/trunk@26192 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/update-core.php | 6 ++++-- src/wp-includes/update.php | 10 +++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/wp-admin/update-core.php b/src/wp-admin/update-core.php index f4e4550f4d..ece0666787 100644 --- a/src/wp-admin/update-core.php +++ b/src/wp-admin/update-core.php @@ -483,8 +483,10 @@ get_current_screen()->set_help_sidebar( ); if ( 'upgrade-core' == $action ) { + // Force a update check when requested + $force_check = ! empty( $_GET['force-check'] ); + wp_version_check( array(), $force_check ); - wp_version_check(); require_once(ABSPATH . 'wp-admin/admin-header.php'); ?>
@@ -503,7 +505,7 @@ if ( 'upgrade-core' == $action ) { echo '

'; /* translators: %1 date, %2 time. */ printf( __('Last checked on %1$s at %2$s.'), date_i18n( get_option( 'date_format' ) ), date_i18n( get_option( 'time_format' ) ) ); - echo '   ' . __( 'Check Again' ) . ''; + echo '   ' . __( 'Check Again' ) . ''; echo '

'; if ( $core = current_user_can( 'update_core' ) ) diff --git a/src/wp-includes/update.php b/src/wp-includes/update.php index 437ffb94ee..c670f9d0b7 100644 --- a/src/wp-includes/update.php +++ b/src/wp-includes/update.php @@ -18,9 +18,10 @@ * @uses $wp_version Used to check against the newest WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. + * @param bool $force_check Whether to bypass the transient cache and force a fresh update check. Defaults to false, true if $extra_stats is set. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ -function wp_version_check( $extra_stats = array() ) { +function wp_version_check( $extra_stats = array(), $force_check = false ) { if ( defined('WP_INSTALLING') ) return; @@ -41,10 +42,13 @@ function wp_version_check( $extra_stats = array() ) { $current->version_checked = $wp_version; } + if ( ! empty( $extra_stats ) ) + $force_check = true; + // Wait 60 seconds between multiple version check requests $timeout = 60; $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); - if ( $time_not_changed && empty( $extra_stats ) ) + if ( ! $force_check && $time_not_changed ) return false; $locale = get_locale(); @@ -94,7 +98,7 @@ function wp_version_check( $extra_stats = array() ) { 'translations' => json_encode( $translations ), ); - if ( $extra_stats ) + if ( is_array( $extra_stats ) ) $post_body = array_merge( $post_body, $extra_stats ); $url = $http_url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' );