WordPress.org

Make WordPress Core

Ticket #7519: wp-includes--update.php.diff

File wp-includes--update.php.diff, 3.2 KB (added by josephscott, 6 years ago)
  • wp-includes/update.php

     
    165165        update_option( 'update_plugins', $new_option ); 
    166166} 
    167167 
     168/** 
     169 * Check theme versions against the latest versions hosted on WordPress.org. 
     170 * 
     171 * A list of all themes installed in sent to WP. Checks against the  
     172 * WordPress server at api.wordpress.org. Will only check if PHP has  
     173 * fsockopen enabled and WordPress isn't installing. 
     174 * 
     175 * @package WordPress 
     176 * @since 2.7.0 
     177 * @uses $wp_version Used to notidy the WordPress version. 
     178 * 
     179 * @return mixed Returns null if update is unsupported. Returns false if check is too soon. 
     180 */ 
     181function wp_update_themes( ) { 
     182        global $wp_version; 
     183 
     184        if( defined( 'WP_INSTALLING' ) ) 
     185                return false; 
     186 
     187        if( !function_exists( 'get_themes' ) ) 
     188                require_once( ABSPATH . 'wp-includes/theme.php' ); 
     189 
     190        $installed_themes = get_themes( ); 
     191        $current_theme = get_option( 'update_themes' ); 
     192 
     193        $new_option = ''; 
     194        $new_option->last_checked = time( ); 
     195        $time_not_changed = isset( $current->last_checked ) && 43200 > ( time( ) - $current->last_checked ); 
     196 
     197        if( $time_not_changed ) 
     198                return false; 
     199 
     200        $themes = array( ); 
     201        $themes['current_theme'] = $current_theme; 
     202        foreach( (array) $installed_themes as $theme_title => $theme ) { 
     203                $themes[$theme['Template']] = array( ); 
     204 
     205                foreach( (array) $theme as $key => $value ) { 
     206                        $themes[$theme['Template']][$key] = $value; 
     207                } 
     208        } 
     209 
     210        $options = array( 
     211                'method'                => 'POST', 
     212                'timeout'               => 3, 
     213                'body'                  => 'themes=' . urlencode( serialize( $themes ) ) 
     214        ); 
     215        $options['headers'] = array( 
     216                'Content-Type'          => 'application/x-www-form-urlencoded; charset=' . get_option( 'blog_charset' ), 
     217                'Content-Length'        => strlen( $options['body'] ), 
     218                'User-Agent'            => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) 
     219        ); 
     220 
     221        $raw_response = wp_remote_request( 'http://api.wordpress.org/themes/update-check/1.0/', $options ); 
     222 
     223        if( is_wp_error( $raw_response ) ) 
     224                return false; 
     225 
     226        if( 200 != $raw_response['response']['code'] ) 
     227                return false; 
     228 
     229        $response = unserialize( $raw_response['body'] ); 
     230        if( $response ) 
     231                $new_option->response = $response; 
     232 
     233        update_option( 'update_themes', $new_option ); 
     234} 
     235 
    168236function _maybe_update_plugins() { 
    169237        $current = get_option( 'update_plugins' ); 
    170238        if ( isset( $current->last_checked ) && 43200 > ( time() - $current->last_checked ) ) 
     
    172240        wp_update_plugins(); 
    173241} 
    174242 
     243function _maybe_update_themes( ) { 
     244        $current = get_option( 'update_themes' ); 
     245        if( isset( $current->last_checked ) && 43200 > ( time( ) - $current->last_checked ) ) 
     246                return; 
     247 
     248        wp_update_themes( ); 
     249} 
     250 
    175251add_action( 'load-plugins.php', 'wp_update_plugins' ); 
    176252add_action( 'admin_init', '_maybe_update_plugins' ); 
    177253add_action( 'wp_update_plugins', 'wp_update_plugins' ); 
    178254 
     255add_action( 'admin_init', '_maybe_update_themes' ); 
     256add_action( 'wp_update_themes', 'wp_update_themes' ); 
     257 
    179258if ( !wp_next_scheduled('wp_update_plugins') ) 
    180259        wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins'); 
    181260 
     261 
     262if ( !wp_next_scheduled('wp_update_themes') ) 
     263        wp_schedule_event(time(), 'twicedaily', 'wp_update_themes'); 
     264 
    182265?>