Ticket #14381: 14381.2.diff
File 14381.2.diff, 3.7 KB (added by , 14 years ago) |
---|
-
wp-includes/update.php
211 211 require_once( ABSPATH . 'wp-includes/theme.php' ); 212 212 213 213 $installed_themes = get_themes( ); 214 $ current_theme = get_site_transient( 'update_themes' );215 if ( ! is_object($ current_theme) )216 $ current_theme = new stdClass;214 $last_update = get_site_transient( 'update_themes' ); 215 if ( ! is_object($last_update) ) 216 $last_update = new stdClass; 217 217 218 $new_option = new stdClass;219 $new_option->last_checked = time( );220 218 $timeout = 'load-themes.php' == current_filter() ? 3600 : 43200; //Check for updated every 60 minutes if hitting the themes page, Else, check every 12 hours 221 $time_not_changed = isset( $ current_theme->last_checked ) && $timeout > ( time( ) - $current_theme->last_checked );219 $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time( ) - $last_update->last_checked ); 222 220 223 221 $themes = array(); 224 222 $checked = array(); 225 $themes['current_theme'] = (array) $current_theme; 223 $exclude_fields = array('Template Files', 'Stylesheet Files', 'Status', 'Theme Root', 'Theme Root URI', 'Template Dir', 'Stylesheet Dir'); 224 225 // Put slug of current theme into request. 226 $themes['current_theme'] = get_option( 'stylesheet' ); 227 226 228 foreach ( (array) $installed_themes as $theme_title => $theme ) { 227 229 $themes[$theme['Stylesheet']] = array(); 228 230 $checked[$theme['Stylesheet']] = $theme['Version']; 229 231 230 foreach ( (array) $theme as $key => $value ) 231 $themes[$theme['Stylesheet']][$key] = $value; 232 $themes[$theme['Stylesheet']]['Name'] = $theme['Name']; 233 $themes[$theme['Stylesheet']]['Version'] = $theme['Version']; 234 235 foreach ( (array) $theme as $key => $value ) { 236 if ( !in_array($key, $exclude_fields) ) 237 $themes[$theme['Stylesheet']][$key] = $value; 238 } 232 239 } 233 240 234 241 $theme_changed = false; 235 242 foreach ( $checked as $slug => $v ) { 236 $ new_option->checked[ $slug ] = $v;243 $update_request->checked[ $slug ] = $v; 237 244 238 if ( !isset( $ current_theme->checked[ $slug ] ) || strval($current_theme->checked[ $slug ]) !== strval($v) )245 if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) ) 239 246 $theme_changed = true; 240 247 } 241 248 242 if ( isset ( $ current_theme->response ) && is_array( $current_theme->response ) ) {243 foreach ( $ current_theme->response as $slug => $update_details ) {249 if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) { 250 foreach ( $last_update->response as $slug => $update_details ) { 244 251 if ( ! isset($checked[ $slug ]) ) { 245 252 $theme_changed = true; 246 253 break; … … 252 259 return false; 253 260 254 261 // Update last_checked for current to prevent multiple blocking requests if request hangs 255 $ current_theme->last_checked = time();256 set_site_transient( 'update_themes', $ current_theme );262 $last_update->last_checked = time(); 263 set_site_transient( 'update_themes', $last_update ); 257 264 258 $current_theme->template = get_option( 'template' );259 260 265 $options = array( 261 266 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3), 262 267 'body' => array( 'themes' => serialize( $themes ) ), … … 271 276 if ( 200 != $raw_response['response']['code'] ) 272 277 return false; 273 278 279 $new_update = new stdClass; 280 $new_update->last_checked = time( ); 274 281 $response = unserialize( $raw_response['body'] ); 275 282 if ( $response ) { 276 $new_ option->checked = $checked;277 $new_ option->response = $response;283 $new_update->checked = $checked; 284 $new_update->response = $response; 278 285 } 279 286 280 set_site_transient( 'update_themes', $new_ option);287 set_site_transient( 'update_themes', $new_update ); 281 288 } 282 289 283 290 function _maybe_update_core() {