Add missing doc blocks to `update.php`:

* `wp_version_check()`, `wp_update_plugins()`, and `wp_update_themes()` do not return meaningful responses, and their responses are never handled by core. As such, they shouldn't alternately return `void` or `false`. "Returning" in those functions is just "bailing"
* In the same functions, `version.php` doesn't need to load if `WP_INSTALLING` is defined - the function will immediately bail, the values will never be read, and the globals won't be reset. I have unified the approach in all 3 functions.
* When returning filtered `$locale`, there is no need to set the variable twice.
* In `_maybe_update_core()`, `isset()` can take multiple values to bail before the call to `time()`, if necessary. This is a micro-optimization to prevent PHP from hitting the OS unnecessarily.

See #32444.

Built from https://develop.svn.wordpress.org/trunk@32635


git-svn-id: http://core.svn.wordpress.org/trunk@32605 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Scott Taylor 2015-05-28 15:29:28 +00:00
parent f1ff34e547
commit 66a9c83284
2 changed files with 56 additions and 44 deletions

View File

@ -14,18 +14,21 @@
* isn't installing.
*
* @since 2.3.0
* @uses $wp_version Used to check against the newest WordPress version.
* @global string $wp_version Used to check against the newest WordPress version.
* @global wpdb $wpdb
* @global string $wp_local_package
*
* @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 null|false Returns null if update is unsupported. Returns false if check is too soon.
* @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.
*/
function wp_version_check( $extra_stats = array(), $force_check = false ) {
if ( defined('WP_INSTALLING') )
if ( defined( 'WP_INSTALLING' ) ) {
return;
}
global $wpdb, $wp_local_package;
include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version
global $wp_version, $wpdb, $wp_local_package;
// include an unmodified $wp_version
include( ABSPATH . WPINC . '/version.php' );
$php_version = phpversion();
$current = get_site_transient( 'update_core' );
@ -47,10 +50,10 @@ function wp_version_check( $extra_stats = array(), $force_check = false ) {
// Wait 60 seconds between multiple version check requests
$timeout = 60;
$time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked );
if ( ! $force_check && $time_not_changed )
return false;
if ( ! $force_check && $time_not_changed ) {
return;
}
$locale = get_locale();
/**
* Filter the locale requested for WordPress core translations.
*
@ -58,7 +61,7 @@ function wp_version_check( $extra_stats = array(), $force_check = false ) {
*
* @param string $locale Current locale.
*/
$locale = apply_filters( 'core_version_check_locale', $locale );
$locale = apply_filters( 'core_version_check_locale', get_locale() );
// Update last_checked for current to prevent multiple blocking requests if request hangs
$current->last_checked = time();
@ -120,14 +123,16 @@ function wp_version_check( $extra_stats = array(), $force_check = false ) {
$response = wp_remote_post( $http_url, $options );
}
if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) )
return false;
if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) {
return;
}
$body = trim( wp_remote_retrieve_body( $response ) );
$body = json_decode( $body, true );
if ( ! is_array( $body ) || ! isset( $body['offers'] ) )
return false;
if ( ! is_array( $body ) || ! isset( $body['offers'] ) ) {
return;
}
$offers = $body['offers'];
@ -177,16 +182,18 @@ function wp_version_check( $extra_stats = array(), $force_check = false ) {
* api.wordpress.org. Will only check if WordPress isn't installing.
*
* @since 2.3.0
* @uses $wp_version Used to notify the WordPress version.
* @global string $wp_version Used to notify the WordPress version.
*
* @param array $extra_stats Extra statistics to report to the WordPress.org API.
* @return false|null Returns null if update is unsupported. Returns false if check is too soon.
*/
function wp_update_plugins( $extra_stats = array() ) {
include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version
if ( defined( 'WP_INSTALLING' ) ) {
return;
}
if ( defined('WP_INSTALLING') )
return false;
global $wp_version;
// include an unmodified $wp_version
include( ABSPATH . WPINC . '/version.php' );
// If running blog-side, bail unless we've not checked in the last 12 hours
if ( !function_exists( 'get_plugins' ) )
@ -244,8 +251,9 @@ function wp_update_plugins( $extra_stats = array() ) {
}
// Bail if we've checked recently and if nothing has changed
if ( ! $plugin_changed )
return false;
if ( ! $plugin_changed ) {
return;
}
}
// Update last_checked for current to prevent multiple blocking requests if request hangs
@ -254,7 +262,6 @@ function wp_update_plugins( $extra_stats = array() ) {
$to_send = compact( 'plugins', 'active' );
$locales = array( get_locale() );
/**
* Filter the locales requested for plugin translations.
*
@ -262,7 +269,7 @@ function wp_update_plugins( $extra_stats = array() ) {
*
* @param array $locales Plugin locale. Default is current locale of the site.
*/
$locales = apply_filters( 'plugins_update_check_locales', $locales );
$locales = apply_filters( 'plugins_update_check_locales', array( get_locale() ) );
if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
$timeout = 30;
@ -296,8 +303,9 @@ function wp_update_plugins( $extra_stats = array() ) {
$raw_response = wp_remote_post( $http_url, $options );
}
if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) )
return false;
if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) {
return;
}
$response = json_decode( wp_remote_retrieve_body( $raw_response ), true );
foreach ( $response['plugins'] as &$plugin ) {
@ -334,13 +342,14 @@ function wp_update_plugins( $extra_stats = array() ) {
* @uses $wp_version Used to notify the WordPress version.
*
* @param array $extra_stats Extra statistics to report to the WordPress.org API.
* @return false|null Returns null if update is unsupported. Returns false if check is too soon.
*/
function wp_update_themes( $extra_stats = array() ) {
include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version
if ( defined( 'WP_INSTALLING' ) )
return false;
if ( defined( 'WP_INSTALLING' ) ) {
return;
}
global $wp_version;
// include an unmodified $wp_version
include( ABSPATH . WPINC . '/version.php' );
$installed_themes = wp_get_themes();
$translations = wp_get_installed_translations( 'themes' );
@ -407,8 +416,9 @@ function wp_update_themes( $extra_stats = array() ) {
}
// Bail if we've checked recently and if nothing has changed
if ( ! $theme_changed )
return false;
if ( ! $theme_changed ) {
return;
}
}
// Update last_checked for current to prevent multiple blocking requests if request hangs
@ -417,7 +427,6 @@ function wp_update_themes( $extra_stats = array() ) {
$request['themes'] = $themes;
$locales = array( get_locale() );
/**
* Filter the locales requested for theme translations.
*
@ -425,7 +434,7 @@ function wp_update_themes( $extra_stats = array() ) {
*
* @param array $locales Theme locale. Default is current locale of the site.
*/
$locales = apply_filters( 'themes_update_check_locales', $locales );
$locales = apply_filters( 'themes_update_check_locales', array( get_locale() ) );
if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
$timeout = 30;
@ -458,8 +467,9 @@ function wp_update_themes( $extra_stats = array() ) {
$raw_response = wp_remote_post( $http_url, $options );
}
if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) )
return false;
if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) {
return;
}
$new_update = new stdClass;
$new_update->last_checked = time();
@ -492,12 +502,13 @@ function wp_maybe_auto_update() {
* Retrieves a list of all language updates available.
*
* @since 3.7.0
*
* @return array
*/
function wp_get_translation_updates() {
$updates = array();
$transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' );
foreach ( $transients as $transient => $type ) {
$transient = get_site_transient( $transient );
if ( empty( $transient->translations ) )
continue;
@ -506,7 +517,6 @@ function wp_get_translation_updates() {
$updates[] = (object) $translation;
}
}
return $updates;
}
@ -571,17 +581,20 @@ function wp_get_update_data() {
return apply_filters( 'wp_get_update_data', $update_data, $titles );
}
/**
* @global string $wp_version
*/
function _maybe_update_core() {
global $wp_version;
include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version
$current = get_site_transient( 'update_core' );
if ( isset( $current->last_checked ) &&
if ( isset( $current->last_checked, $current->version_checked ) &&
12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) &&
isset( $current->version_checked ) &&
$current->version_checked == $wp_version )
$current->version_checked == $wp_version ) {
return;
}
wp_version_check();
}
/**
@ -614,7 +627,6 @@ function _maybe_update_themes() {
$current = get_site_transient( 'update_themes' );
if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) )
return;
wp_update_themes();
}

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.3-alpha-32634';
$wp_version = '4.3-alpha-32635';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.