Ticket #10441: 10441.2.diff
File 10441.2.diff, 8.5 KB (added by , 8 years ago) |
---|
-
src/wp-includes/functions.php
diff --git src/wp-includes/functions.php src/wp-includes/functions.php index 7710ab3..f94320a 100644
function _deprecated_argument( $function, $version, $message = null ) { 3865 3865 } 3866 3866 3867 3867 /** 3868 * Marks an action or filter hook as deprecated and informs when it has been used. 3869 * 3870 * There is a hook deprecated_hook_run that will be called that can be used 3871 * to get the backtrace up to what file and function was used for the callback. 3872 * 3873 * The current behavior is to trigger a user error if WP_DEBUG is true. 3874 * 3875 * This function is to be used for every hook that is deprecated, when any callback is 3876 * attacked to the hook, as determined by has_action() or has_filter(), and shall be 3877 * called before the hook is fired. 3878 * 3879 * @since 4.6.0 3880 * 3881 * @param string $hook The hook that was used. 3882 * @param string $version The version of WordPress that deprecated the hook. 3883 * @param string $replacement Optional. The hook that should have been used. 3884 * @param string $message Optional. A message regarding the change. 3885 */ 3886 function _deprecated_hook( $hook, $version, $replacement = null, $message = null ) { 3887 /** 3888 * Fires when a deprecated hook is called. 3889 * 3890 * @since 4.6.0 3891 * 3892 * @param string $hook The hook that was called. 3893 * @param string $replacement The hook that should be used as a replacement. 3894 * @param string $version The version of WordPress that deprecated the argument used. 3895 * @param string $message A message regarding the change. 3896 */ 3897 do_action( 'deprecated_hook_run', $hook, $replacement, $version, $message ); 3898 3899 /** 3900 * Filter whether to trigger deprecated hook errors. 3901 * 3902 * @since 4.6.0 3903 * 3904 * @param bool $trigger Whether to trigger deprecated hook errors. Requires 3905 * `WP_DEBUG` to be defined true. 3906 */ 3907 if ( WP_DEBUG && apply_filters( 'deprecated_hook_trigger_error', true ) ) { 3908 $message = empty( $message ) ? '' : ' ' . $message; 3909 if ( ! is_null( $replacement ) ) { 3910 trigger_error( sprintf( __( '%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.' ), $hook, $version, $replacement ) . $message ); 3911 } else { 3912 trigger_error( sprintf( __( '%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.' ), $hook, $version ) . $message ); 3913 } 3914 } 3915 } 3916 3917 /** 3868 3918 * Mark something as being incorrectly called. 3869 3919 * 3870 3920 * There is a hook doing_it_wrong_run that will be called that can be used -
src/wp-includes/plugin.php
diff --git src/wp-includes/plugin.php src/wp-includes/plugin.php index dd8798a..d2ebeac 100644
function remove_all_actions($tag, $priority = false) { 655 655 return remove_all_filters($tag, $priority); 656 656 } 657 657 658 /** 659 * Fires functions attached to a deprecated filter hook. 660 * 661 * Wraps apply_filters(). 662 * 663 * @since 4.4.0 664 * 665 * @see _deprecated_hook() 666 * 667 * @param string $tag The name of the filter hook. 668 * @param array $args Array of additional function arguments to be passed to apply_filters(). 669 * @param string $version The version of WordPress that deprecated the hook. 670 * @param string $replacement Optional. The hook that should have been used. 671 * @param string $message Optional. A message regarding the change. 672 */ 673 function apply_filters_deprecated( $tag, $args, $version, $replacement = false, $message = null ) { 674 if ( ! has_filter( $tag ) ) { 675 return; 676 } 677 678 _deprecated_hook( $tag, $version, $replacement, $message ); 679 680 return apply_filters_ref_array( $tag, $args ); 681 } 682 683 /** 684 * Fires functions attached to a deprecated action hook. 685 * 686 * Wraps do_action(). 687 * 688 * @since 4.6.0 689 * 690 * @see _deprecated_hook() 691 * 692 * @param string $tag The name of the filter hook. 693 * @param array $args Array of additional function arguments to be passed to do_action(). 694 * @param string $version The version of WordPress that deprecated the hook. 695 * @param string $replacement Optional. The hook that should have been used. 696 * @param string $message Optional. A message regarding the change. 697 */ 698 function do_action_deprecated( $tag, $args, $version, $replacement = false, $message = null ) { 699 if ( ! has_action( $tag ) ) { 700 return; 701 } 702 703 _deprecated_hook( $tag, $version, $replacement, $message ); 704 705 do_action_ref_array( $tag, $args ); 706 } 707 658 708 // 659 709 // Functions for handling plugins. 660 710 // -
tests/phpunit/includes/testcase.php
diff --git tests/phpunit/includes/testcase.php tests/phpunit/includes/testcase.php index 6c893ce..6eed90a 100644
class WP_UnitTestCase extends PHPUnit_Framework_TestCase { 309 309 } 310 310 add_action( 'deprecated_function_run', array( $this, 'deprecated_function_run' ) ); 311 311 add_action( 'deprecated_argument_run', array( $this, 'deprecated_function_run' ) ); 312 add_action( 'deprecated_hook_run', array( $this, 'deprecated_function_run' ) ); 312 313 add_action( 'doing_it_wrong_run', array( $this, 'doing_it_wrong_run' ) ); 313 314 add_action( 'deprecated_function_trigger_error', '__return_false' ); 314 315 add_action( 'deprecated_argument_trigger_error', '__return_false' ); 316 add_action( 'deprecated_hook_trigger_error', '__return_false' ); 315 317 add_action( 'doing_it_wrong_trigger_error', '__return_false' ); 316 318 } 317 319 -
tests/phpunit/tests/actions.php
diff --git tests/phpunit/tests/actions.php tests/phpunit/tests/actions.php index 583c8ce..5b9cf6c 100644
class Tests_Actions extends WP_UnitTestCase { 356 356 $this->assertTrue( doing_filter( 'testing_nested' ) ); 357 357 $this->assertFalse( doing_filter( 'something_else' ) ); 358 358 } 359 360 /** 361 * @ticket 10441 362 * @expectedDeprecated tests_do_action_deprecated 363 */ 364 public function test_do_action_deprecated() { 365 $p = new WP_Post( (object) array( 'post_title' => 'Foo' ) ); 366 367 add_action( 'tests_do_action_deprecated', array( __CLASS__, 'deprecated_action_callback' ) ); 368 do_action_deprecated( 'tests_do_action_deprecated', array( $p ), '4.6' ); 369 remove_action( 'tests_do_action_deprecated', array( __CLASS__, 'deprecated_action_callback' ) ); 370 371 $this->assertSame( 'Bar', $p->post_title ); 372 } 373 374 public static function deprecated_action_callback( $p ) { 375 $p->post_title = 'Bar'; 376 } 377 378 /** 379 * @ticket 10441 380 * @expectedDeprecated tests_do_action_deprecated 381 */ 382 public function test_do_action_deprecated_with_multiple_params() { 383 $p1 = new WP_Post( (object) array( 'post_title' => 'Foo1' ) ); 384 $p2 = new WP_Post( (object) array( 'post_title' => 'Foo2' ) ); 385 386 add_action( 'tests_do_action_deprecated', array( __CLASS__, 'deprecated_action_callback_multiple_params' ), 10, 2 ); 387 do_action_deprecated( 'tests_do_action_deprecated', array( $p1, $p2 ), '4.6' ); 388 remove_action( 'tests_do_action_deprecated', array( __CLASS__, 'deprecated_action_callback_multiple_params' ), 10, 2 ); 389 390 $this->assertSame( 'Bar1', $p1->post_title ); 391 $this->assertSame( 'Bar2', $p2->post_title ); 392 } 393 394 public static function deprecated_action_callback_multiple_params( $p1, $p2 ) { 395 $p1->post_title = 'Bar1'; 396 $p2->post_title = 'Bar2'; 397 } 398 399 /** 400 * @ticket 10441 401 * @expectedDeprecated tests_apply_filters_deprecated 402 */ 403 public function test_apply_filters_deprecated() { 404 $p = 'Foo'; 405 406 add_filter( 'tests_apply_filters_deprecated', array( __CLASS__, 'deprecated_filter_callback' ) ); 407 $p = apply_filters_deprecated( 'tests_apply_filters_deprecated', array( $p ), '4.6' ); 408 remove_filter( 'tests_apply_filters_deprecated', array( __CLASS__, 'deprecated_filter_callback' ) ); 409 410 $this->assertSame( 'Bar', $p ); 411 } 412 413 public static function deprecated_filter_callback( $p ) { 414 $p = 'Bar'; 415 return $p; 416 } 417 418 /** 419 * @ticket 10441 420 * @expectedDeprecated tests_apply_filters_deprecated 421 */ 422 public function test_apply_filters_deprecated_with_multiple_params() { 423 $p1 = 'Foo1'; 424 $p2 = 'Foo2'; 425 426 add_filter( 'tests_apply_filters_deprecated', array( __CLASS__, 'deprecated_filter_callback_multiple_params' ), 10, 2 ); 427 $p1 = apply_filters_deprecated( 'tests_apply_filters_deprecated', array( $p1, $p2 ), '4.6' ); 428 remove_filter( 'tests_apply_filters_deprecated', array( __CLASS__, 'deprecated_filter_callback_multiple_params' ), 10, 2 ); 429 430 $this->assertSame( 'Bar1', $p1 ); 431 432 // Not passed by reference, so not modified. 433 $this->assertSame( 'Foo2', $p2 ); 434 } 435 436 public static function deprecated_filter_callback_multiple_params( $p1, $p2 ) { 437 $p1 = 'Bar1'; 438 $p2 = 'Bar2'; 439 440 return $p1; 441 } 359 442 }