Changeset 38223
- Timestamp:
- 08/09/2016 01:44:20 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/plugin.php
r38125 r38223 1020 1020 * @return array the staticvar from the first time it is set. 1021 1021 */ 1022 function _backup_plugin_globals( ){1022 function _backup_plugin_globals( $backup = true ) { 1023 1023 global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; 1024 1024 1025 1025 static $backup_globals = array(); 1026 1026 1027 if ( empty( $backup_globals )) {1027 if ( $backup ) { 1028 1028 $backup_globals = array( 1029 1029 'backup_wp_filter' => $wp_filter, … … 1032 1032 'backup_wp_current_filter' => $wp_current_filter, 1033 1033 ); 1034 }; 1034 1035 $wp_filter = $wp_actions = array(); 1036 } 1035 1037 return $backup_globals; 1036 1038 } … … 1048 1050 * @staticvar array $backup_globals Backed up globals. 1049 1051 */ 1050 function _restore_plugin_globals() {1052 function _restore_plugin_globals() { 1051 1053 global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; 1052 1054 1053 $backup_globals = _backup_plugin_globals(); 1054 1055 if ( $wp_filter !== $backup_globals['backup_wp_filter'] ){ 1056 $wp_filter = array_merge_recursive( $wp_filter, $backup_globals['backup_wp_filter'] ); 1057 } 1058 1059 if ( $wp_actions !== $backup_globals['backup_wp_actions'] ){ 1060 $wp_actions = array_merge_recursive( $wp_actions, $backup_globals['backup_wp_actions'] ); 1061 } 1062 1063 if ( $merged_filters !== $backup_globals['backup_merged_filters'] ){ 1055 $backup_globals = _backup_plugin_globals( false ); 1056 1057 if ( empty( $wp_filter ) ) { 1058 $wp_filter = $backup_globals['backup_wp_filter']; 1059 } else { 1060 $added_filters = $wp_filter; 1061 $wp_filter = $backup_globals['backup_wp_filter']; 1062 1063 foreach ( $added_filters as $tag => $callback_groups ) { 1064 // Loop through callback groups. 1065 foreach ( $callback_groups as $priority => $callbacks ) { 1066 1067 // Loop through callbacks. 1068 foreach ( $callbacks as $cb ) { 1069 add_filter( $tag, $cb['function'], $priority, $cb['accepted_args'] ); 1070 } 1071 } 1072 } 1073 } 1074 1075 if ( empty ( $wp_actions ) ) { 1076 $wp_actions = $backup_globals['backup_wp_actions']; 1077 } else { 1078 $run_actions = $wp_actions; 1079 $wp_actions = $backup_globals['backup_wp_actions']; 1080 1081 foreach( $run_actions as $action => $count ) { 1082 if ( ! isset( $wp_actions[ $action ] ) ) { 1083 $wp_actions[ $action ] = 0; 1084 } 1085 1086 $wp_actions[ $action ] += $count; 1087 } 1088 } 1089 1090 if ( $merged_filters !== $backup_globals['backup_merged_filters'] ) { 1064 1091 $merged_filters = array_merge_recursive( $merged_filters, $backup_globals['backup_merged_filters'] ); 1065 1092 } 1066 1093 1067 if ( $wp_current_filter !== $backup_globals['backup_wp_current_filter'] ) {1094 if ( $wp_current_filter !== $backup_globals['backup_wp_current_filter'] ) { 1068 1095 $wp_current_filter = array_merge_recursive( $wp_current_filter, $backup_globals['backup_wp_current_filter'] ); 1069 1096 } -
trunk/src/wp-settings.php
r38028 r38223 84 84 if ( WP_CACHE && apply_filters( 'enable_loading_advanced_cache_dropin', true ) ) { 85 85 // For an advanced caching plugin to use. Uses a static drop-in because you would only want one. 86 _backup_plugin_globals( );86 _backup_plugin_globals( true ); 87 87 WP_DEBUG ? include( WP_CONTENT_DIR . '/advanced-cache.php' ) : @include( WP_CONTENT_DIR . '/advanced-cache.php' ); 88 88 _restore_plugin_globals(); -
trunk/tests/phpunit/tests/actions.php
r37909 r38223 333 333 */ 334 334 function test_backup_plugin_globals_returns_filters() { 335 $backup = _backup_plugin_globals( );335 $backup = _backup_plugin_globals( true ); 336 336 $this->assertArrayHasKey( 'backup_wp_filter', $backup ); 337 337 $this->assertArrayHasKey( 'backup_wp_actions', $backup ); … … 344 344 */ 345 345 function test_backup_plugin_globals_returns_filters_from_first_time_called() { 346 $backup = _backup_plugin_globals( );347 348 $a = new MockAction(); 349 $tag = rand_str(); 350 351 add_action($tag, array(&$a, 'action')); 352 353 $new_backup = _backup_plugin_globals( );346 $backup = _backup_plugin_globals( true ); 347 348 $a = new MockAction(); 349 $tag = rand_str(); 350 351 add_action($tag, array(&$a, 'action')); 352 353 $new_backup = _backup_plugin_globals( false ); 354 354 $this->assertEquals( $backup, $new_backup ); 355 355 } … … 362 362 $original_actions = $wp_actions; 363 363 364 _backup_plugin_globals( );364 _backup_plugin_globals( true ); 365 365 366 366 $wp_actions = array(); … … 379 379 $original_filter = $wp_filter; 380 380 381 $backup = _backup_plugin_globals( );381 $backup = _backup_plugin_globals( true ); 382 382 383 383 $a = new MockAction(); … … 390 390 391 391 $this->assertNotEquals( $GLOBALS['wp_filter'], $original_filter ); 392 } 393 394 /** 395 * @ticket 36819 396 */ 397 function test_applied_actions_are_counted_after_restore() { 398 global $wp_actions; 399 400 $action_name = 'this_is_a_fake_action_name'; 401 $this->assertArrayNotHasKey( $action_name, $wp_actions ); 402 403 do_action( $action_name ); 404 405 $this->assertEquals( 1, $wp_actions[ $action_name ] ); 406 407 _backup_plugin_globals( true ); 408 do_action( $action_name ); 409 _restore_plugin_globals(); 410 411 $this->assertEquals( 2, $wp_actions[ $action_name ] ); 392 412 } 393 413
Note: See TracChangeset
for help on using the changeset viewer.