wp/wp-includes/update.php
changeset 9 177826044cd9
parent 7 cf61fcea0001
child 16 a86126ab1dd4
--- a/wp/wp-includes/update.php	Mon Oct 14 18:06:33 2019 +0200
+++ b/wp/wp-includes/update.php	Mon Oct 14 18:28:13 2019 +0200
@@ -31,24 +31,26 @@
 	include( ABSPATH . WPINC . '/version.php' );
 	$php_version = phpversion();
 
-	$current = get_site_transient( 'update_core' );
+	$current      = get_site_transient( 'update_core' );
 	$translations = wp_get_installed_translations( 'core' );
 
 	// Invalidate the transient when $wp_version changes
-	if ( is_object( $current ) && $wp_version != $current->version_checked )
+	if ( is_object( $current ) && $wp_version != $current->version_checked ) {
 		$current = false;
+	}
 
-	if ( ! is_object($current) ) {
-		$current = new stdClass;
-		$current->updates = array();
+	if ( ! is_object( $current ) ) {
+		$current                  = new stdClass;
+		$current->updates         = array();
 		$current->version_checked = $wp_version;
 	}
 
-	if ( ! empty( $extra_stats ) )
+	if ( ! empty( $extra_stats ) ) {
 		$force_check = true;
+	}
 
 	// Wait 60 seconds between multiple version check requests
-	$timeout = 60;
+	$timeout          = 60;
 	$time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked );
 	if ( ! $force_check && $time_not_changed ) {
 		return;
@@ -67,22 +69,23 @@
 	$current->last_checked = time();
 	set_site_transient( 'update_core', $current );
 
-	if ( method_exists( $wpdb, 'db_version' ) )
-		$mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version());
-	else
+	if ( method_exists( $wpdb, 'db_version' ) ) {
+		$mysql_version = preg_replace( '/[^0-9.].*/', '', $wpdb->db_version() );
+	} else {
 		$mysql_version = 'N/A';
+	}
 
 	if ( is_multisite() ) {
-		$user_count = get_user_count();
-		$num_blogs = get_blog_count();
-		$wp_install = network_site_url();
+		$user_count        = get_user_count();
+		$num_blogs         = get_blog_count();
+		$wp_install        = network_site_url();
 		$multisite_enabled = 1;
 	} else {
-		$user_count = count_users();
-		$user_count = $user_count['total_users'];
+		$user_count        = count_users();
+		$user_count        = $user_count['total_users'];
 		$multisite_enabled = 0;
-		$num_blogs = 1;
-		$wp_install = home_url( '/' );
+		$num_blogs         = 1;
+		$wp_install        = home_url( '/' );
 	}
 
 	$query = array(
@@ -106,7 +109,7 @@
 	 * @since 4.9.0
 	 *
 	 * @param array $query {
-	 *     Version check query arguments. 
+	 *     Version check query arguments.
 	 *
 	 *     @type string $version            WordPress version number.
 	 *     @type string $php                PHP version number.
@@ -125,23 +128,25 @@
 		'translations' => wp_json_encode( $translations ),
 	);
 
-	if ( is_array( $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, '&' );
-	if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
+	if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) {
 		$url = set_url_scheme( $url, 'https' );
+	}
 
 	$doing_cron = wp_doing_cron();
 
 	$options = array(
-		'timeout' => $doing_cron ? 30 : 3,
+		'timeout'    => $doing_cron ? 30 : 3,
 		'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ),
-		'headers' => array(
+		'headers'    => array(
 			'wp_install' => $wp_install,
-			'wp_blog' => home_url( '/' )
+			'wp_blog'    => home_url( '/' ),
 		),
-		'body' => $post_body,
+		'body'       => $post_body,
 	);
 
 	$response = wp_remote_post( $url, $options );
@@ -172,25 +177,48 @@
 
 	foreach ( $offers as &$offer ) {
 		foreach ( $offer as $offer_key => $value ) {
-			if ( 'packages' == $offer_key )
-				$offer['packages'] = (object) array_intersect_key( array_map( 'esc_url', $offer['packages'] ),
-					array_fill_keys( array( 'full', 'no_content', 'new_bundled', 'partial', 'rollback' ), '' ) );
-			elseif ( 'download' == $offer_key )
+			if ( 'packages' == $offer_key ) {
+				$offer['packages'] = (object) array_intersect_key(
+					array_map( 'esc_url', $offer['packages'] ),
+					array_fill_keys( array( 'full', 'no_content', 'new_bundled', 'partial', 'rollback' ), '' )
+				);
+			} elseif ( 'download' == $offer_key ) {
 				$offer['download'] = esc_url( $value );
-			else
+			} else {
 				$offer[ $offer_key ] = esc_html( $value );
+			}
 		}
-		$offer = (object) array_intersect_key( $offer, array_fill_keys( array( 'response', 'download', 'locale',
-			'packages', 'current', 'version', 'php_version', 'mysql_version', 'new_bundled', 'partial_version', 'notify_email', 'support_email', 'new_files' ), '' ) );
+		$offer = (object) array_intersect_key(
+			$offer,
+			array_fill_keys(
+				array(
+					'response',
+					'download',
+					'locale',
+					'packages',
+					'current',
+					'version',
+					'php_version',
+					'mysql_version',
+					'new_bundled',
+					'partial_version',
+					'notify_email',
+					'support_email',
+					'new_files',
+				),
+				''
+			)
+		);
 	}
 
-	$updates = new stdClass();
-	$updates->updates = $offers;
-	$updates->last_checked = time();
+	$updates                  = new stdClass();
+	$updates->updates         = $offers;
+	$updates->last_checked    = time();
 	$updates->version_checked = $wp_version;
 
-	if ( isset( $body['translations'] ) )
+	if ( isset( $body['translations'] ) ) {
 		$updates->translations = $body['translations'];
+	}
 
 	set_site_transient( 'update_core', $updates );
 
@@ -204,6 +232,11 @@
 
 	// Trigger background updates if running non-interactively, and we weren't called from the update handler.
 	if ( $doing_cron && ! doing_action( 'wp_maybe_auto_update' ) ) {
+		/**
+		 * Fires during wp_cron, starting the auto update process.
+		 *
+		 * @since 3.9.0
+		 */
 		do_action( 'wp_maybe_auto_update' );
 	}
 }
@@ -229,35 +262,37 @@
 	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' ) )
+	if ( ! function_exists( 'get_plugins' ) ) {
 		require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
+	}
 
-	$plugins = get_plugins();
+	$plugins      = get_plugins();
 	$translations = wp_get_installed_translations( 'plugins' );
 
 	$active  = get_option( 'active_plugins', array() );
 	$current = get_site_transient( 'update_plugins' );
-	if ( ! is_object($current) )
+	if ( ! is_object( $current ) ) {
 		$current = new stdClass;
+	}
 
-	$new_option = new stdClass;
+	$new_option               = new stdClass;
 	$new_option->last_checked = time();
 
 	$doing_cron = wp_doing_cron();
 
 	// Check for update on a different schedule, depending on the page.
 	switch ( current_filter() ) {
-		case 'upgrader_process_complete' :
+		case 'upgrader_process_complete':
 			$timeout = 0;
 			break;
-		case 'load-update-core.php' :
+		case 'load-update-core.php':
 			$timeout = MINUTE_IN_SECONDS;
 			break;
-		case 'load-plugins.php' :
-		case 'load-update.php' :
+		case 'load-plugins.php':
+		case 'load-update.php':
 			$timeout = HOUR_IN_SECONDS;
 			break;
-		default :
+		default:
 			if ( $doing_cron ) {
 				$timeout = 2 * HOUR_IN_SECONDS;
 			} else {
@@ -272,13 +307,14 @@
 		foreach ( $plugins as $file => $p ) {
 			$new_option->checked[ $file ] = $p['Version'];
 
-			if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) )
+			if ( ! isset( $current->checked[ $file ] ) || strval( $current->checked[ $file ] ) !== strval( $p['Version'] ) ) {
 				$plugin_changed = true;
+			}
 		}
 
-		if ( isset ( $current->response ) && is_array( $current->response ) ) {
+		if ( isset( $current->response ) && is_array( $current->response ) ) {
 			foreach ( $current->response as $plugin_file => $update_details ) {
-				if ( ! isset($plugins[ $plugin_file ]) ) {
+				if ( ! isset( $plugins[ $plugin_file ] ) ) {
 					$plugin_changed = true;
 					break;
 				}
@@ -318,14 +354,14 @@
 	}
 
 	$options = array(
-		'timeout' => $timeout,
-		'body' => array(
+		'timeout'    => $timeout,
+		'body'       => array(
 			'plugins'      => wp_json_encode( $to_send ),
 			'translations' => wp_json_encode( $translations ),
 			'locale'       => wp_json_encode( $locales ),
 			'all'          => wp_json_encode( true ),
 		),
-		'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' )
+		'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ),
 	);
 
 	if ( $extra_stats ) {
@@ -333,8 +369,9 @@
 	}
 
 	$url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/';
-	if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
+	if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) {
 		$url = set_url_scheme( $url, 'https' );
+	}
 
 	$raw_response = wp_remote_post( $url, $options );
 	if ( $ssl && is_wp_error( $raw_response ) ) {
@@ -370,14 +407,14 @@
 	unset( $plugin );
 
 	if ( is_array( $response ) ) {
-		$new_option->response = $response['plugins'];
+		$new_option->response     = $response['plugins'];
 		$new_option->translations = $response['translations'];
 		// TODO: Perhaps better to store no_update in a separate transient with an expiry?
 		$new_option->no_update = $response['no_update'];
 	} else {
-		$new_option->response = array();
+		$new_option->response     = array();
 		$new_option->translations = array();
-		$new_option->no_update = array();
+		$new_option->no_update    = array();
 	}
 
 	set_site_transient( 'update_plugins', $new_option );
@@ -403,11 +440,12 @@
 	include( ABSPATH . WPINC . '/version.php' );
 
 	$installed_themes = wp_get_themes();
-	$translations = wp_get_installed_translations( 'themes' );
+	$translations     = wp_get_installed_translations( 'themes' );
 
 	$last_update = get_site_transient( 'update_themes' );
-	if ( ! is_object($last_update) )
+	if ( ! is_object( $last_update ) ) {
 		$last_update = new stdClass;
+	}
 
 	$themes = $checked = $request = array();
 
@@ -415,14 +453,14 @@
 	$request['active'] = get_option( 'stylesheet' );
 
 	foreach ( $installed_themes as $theme ) {
-		$checked[ $theme->get_stylesheet() ] = $theme->get('Version');
+		$checked[ $theme->get_stylesheet() ] = $theme->get( 'Version' );
 
 		$themes[ $theme->get_stylesheet() ] = array(
-			'Name'       => $theme->get('Name'),
-			'Title'      => $theme->get('Name'),
-			'Version'    => $theme->get('Version'),
-			'Author'     => $theme->get('Author'),
-			'Author URI' => $theme->get('AuthorURI'),
+			'Name'       => $theme->get( 'Name' ),
+			'Title'      => $theme->get( 'Name' ),
+			'Version'    => $theme->get( 'Version' ),
+			'Author'     => $theme->get( 'Author' ),
+			'Author URI' => $theme->get( 'AuthorURI' ),
 			'Template'   => $theme->get_template(),
 			'Stylesheet' => $theme->get_stylesheet(),
 		);
@@ -432,17 +470,17 @@
 
 	// Check for update on a different schedule, depending on the page.
 	switch ( current_filter() ) {
-		case 'upgrader_process_complete' :
+		case 'upgrader_process_complete':
 			$timeout = 0;
 			break;
-		case 'load-update-core.php' :
+		case 'load-update-core.php':
 			$timeout = MINUTE_IN_SECONDS;
 			break;
-		case 'load-themes.php' :
-		case 'load-update.php' :
+		case 'load-themes.php':
+		case 'load-update.php':
 			$timeout = HOUR_IN_SECONDS;
 			break;
-		default :
+		default:
 			if ( $doing_cron ) {
 				$timeout = 2 * HOUR_IN_SECONDS;
 			} else {
@@ -455,13 +493,14 @@
 	if ( $time_not_changed && ! $extra_stats ) {
 		$theme_changed = false;
 		foreach ( $checked as $slug => $v ) {
-			if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) )
+			if ( ! isset( $last_update->checked[ $slug ] ) || strval( $last_update->checked[ $slug ] ) !== strval( $v ) ) {
 				$theme_changed = true;
+			}
 		}
 
-		if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) {
+		if ( isset( $last_update->response ) && is_array( $last_update->response ) ) {
 			foreach ( $last_update->response as $slug => $update_details ) {
-				if ( ! isset($checked[ $slug ]) ) {
+				if ( ! isset( $checked[ $slug ] ) ) {
 					$theme_changed = true;
 					break;
 				}
@@ -501,13 +540,13 @@
 	}
 
 	$options = array(
-		'timeout' => $timeout,
-		'body' => array(
+		'timeout'    => $timeout,
+		'body'       => array(
 			'themes'       => wp_json_encode( $request ),
 			'translations' => wp_json_encode( $translations ),
 			'locale'       => wp_json_encode( $locales ),
 		),
-		'user-agent'	=> 'WordPress/' . $wp_version . '; ' . home_url( '/' )
+		'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ),
 	);
 
 	if ( $extra_stats ) {
@@ -515,8 +554,9 @@
 	}
 
 	$url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/';
-	if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
+	if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) {
 		$url = set_url_scheme( $url, 'https' );
+	}
 
 	$raw_response = wp_remote_post( $url, $options );
 	if ( $ssl && is_wp_error( $raw_response ) ) {
@@ -535,9 +575,9 @@
 		return;
 	}
 
-	$new_update = new stdClass;
+	$new_update               = new stdClass;
 	$new_update->last_checked = time();
-	$new_update->checked = $checked;
+	$new_update->checked      = $checked;
 
 	$response = json_decode( wp_remote_retrieve_body( $raw_response ), true );
 
@@ -555,8 +595,8 @@
  * @since 3.7.0
  */
 function wp_maybe_auto_update() {
-	include_once( ABSPATH . '/wp-admin/includes/admin.php' );
-	include_once( ABSPATH . '/wp-admin/includes/class-wp-upgrader.php' );
+	include_once( ABSPATH . 'wp-admin/includes/admin.php' );
+	include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
 
 	$upgrader = new WP_Automatic_Updater;
 	$upgrader->run();
@@ -567,15 +607,20 @@
  *
  * @since 3.7.0
  *
- * @return array
+ * @return object[] Array of translation objects that have available updates.
  */
 function wp_get_translation_updates() {
-	$updates = array();
-	$transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' );
+	$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 ) )
+		if ( empty( $transient->translations ) ) {
 			continue;
+		}
 
 		foreach ( $transient->translations as $translation ) {
 			$updates[] = (object) $translation;
@@ -592,41 +637,50 @@
  * @return array
  */
 function wp_get_update_data() {
-	$counts = array( 'plugins' => 0, 'themes' => 0, 'wordpress' => 0, 'translations' => 0 );
+	$counts = array(
+		'plugins'      => 0,
+		'themes'       => 0,
+		'wordpress'    => 0,
+		'translations' => 0,
+	);
 
 	if ( $plugins = current_user_can( 'update_plugins' ) ) {
 		$update_plugins = get_site_transient( 'update_plugins' );
-		if ( ! empty( $update_plugins->response ) )
+		if ( ! empty( $update_plugins->response ) ) {
 			$counts['plugins'] = count( $update_plugins->response );
+		}
 	}
 
 	if ( $themes = current_user_can( 'update_themes' ) ) {
 		$update_themes = get_site_transient( 'update_themes' );
-		if ( ! empty( $update_themes->response ) )
+		if ( ! empty( $update_themes->response ) ) {
 			$counts['themes'] = count( $update_themes->response );
+		}
 	}
 
 	if ( ( $core = current_user_can( 'update_core' ) ) && function_exists( 'get_core_updates' ) ) {
-		$update_wordpress = get_core_updates( array('dismissed' => false) );
-		if ( ! empty( $update_wordpress ) && ! in_array( $update_wordpress[0]->response, array('development', 'latest') ) && current_user_can('update_core') )
+		$update_wordpress = get_core_updates( array( 'dismissed' => false ) );
+		if ( ! empty( $update_wordpress ) && ! in_array( $update_wordpress[0]->response, array( 'development', 'latest' ) ) && current_user_can( 'update_core' ) ) {
 			$counts['wordpress'] = 1;
+		}
 	}
 
-	if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() )
+	if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() ) {
 		$counts['translations'] = 1;
+	}
 
 	$counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations'];
-	$titles = array();
+	$titles          = array();
 	if ( $counts['wordpress'] ) {
-		/* translators: 1: Number of updates available to WordPress */
-		$titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] );
+		/* translators: %d: number of updates available to WordPress */
+		$titles['wordpress'] = sprintf( __( '%d WordPress Update' ), $counts['wordpress'] );
 	}
 	if ( $counts['plugins'] ) {
-		/* translators: 1: Number of updates available to plugins */
+		/* translators: %d: number of updates available to plugins */
 		$titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] );
 	}
 	if ( $counts['themes'] ) {
-		/* translators: 1: Number of updates available to themes */
+		/* translators: %d: number of updates available to themes */
 		$titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] );
 	}
 	if ( $counts['translations'] ) {
@@ -635,7 +689,10 @@
 
 	$update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : '';
 
-	$update_data = array( 'counts' => $counts, 'title' => $update_title );
+	$update_data = array(
+		'counts' => $counts,
+		'title'  => $update_title,
+	);
 	/**
 	 * Filters the returned array of update data for plugins, themes, and WordPress core.
 	 *
@@ -684,8 +741,9 @@
  */
 function _maybe_update_plugins() {
 	$current = get_site_transient( 'update_plugins' );
-	if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) )
+	if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) {
 		return;
+	}
 	wp_update_plugins();
 }
 
@@ -700,8 +758,9 @@
  */
 function _maybe_update_themes() {
 	$current = get_site_transient( 'update_themes' );
-	if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) )
+	if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) {
 		return;
+	}
 	wp_update_themes();
 }
 
@@ -711,14 +770,17 @@
  * @since 3.1.0
  */
 function wp_schedule_update_checks() {
-	if ( ! wp_next_scheduled( 'wp_version_check' ) && ! wp_installing() )
-		wp_schedule_event(time(), 'twicedaily', 'wp_version_check');
+	if ( ! wp_next_scheduled( 'wp_version_check' ) && ! wp_installing() ) {
+		wp_schedule_event( time(), 'twicedaily', 'wp_version_check' );
+	}
 
-	if ( ! wp_next_scheduled( 'wp_update_plugins' ) && ! wp_installing() )
-		wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins');
+	if ( ! wp_next_scheduled( 'wp_update_plugins' ) && ! wp_installing() ) {
+		wp_schedule_event( time(), 'twicedaily', 'wp_update_plugins' );
+	}
 
-	if ( ! wp_next_scheduled( 'wp_update_themes' ) && ! wp_installing() )
-		wp_schedule_event(time(), 'twicedaily', 'wp_update_themes');
+	if ( ! wp_next_scheduled( 'wp_update_themes' ) && ! wp_installing() ) {
+		wp_schedule_event( time(), 'twicedaily', 'wp_update_themes' );
+	}
 }
 
 /**
@@ -755,7 +817,7 @@
 add_action( 'admin_init', '_maybe_update_themes' );
 add_action( 'wp_update_themes', 'wp_update_themes' );
 
-add_action( 'update_option_WPLANG', 'wp_clean_update_cache' , 10, 0 );
+add_action( 'update_option_WPLANG', 'wp_clean_update_cache', 10, 0 );
 
 add_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' );