WordPress.org

Make WordPress Core

Ticket #52572: 52572.4.diff

File 52572.4.diff, 4.8 KB (added by johnbillion, 8 months ago)
  • src/wp-includes/cron.php

     
    398398         * }
    399399         * @param bool               $wp_error Whether to return a WP_Error on failure.
    400400         */
    401         $pre = apply_filters( 'pre_reschedule_event', null, $event );
     401        $pre = apply_filters( 'pre_reschedule_event', null, $event, $wp_error );
    402402
    403403        if ( null !== $pre ) {
    404404                if ( $wp_error && false === $pre ) {
  • tests/phpunit/tests/cron.php

     
    775775         * @ticket 49961
    776776         */
    777777        public function test_schedule_short_circuit_with_error_returns_false_when_wp_error_is_set_to_false() {
    778                 $return_error = function() {
     778                $return_error = function( $pre, $event, $wp_error ) {
     779                        $this->assertFalse( $wp_error );
     780
    779781                        return new WP_Error(
    780782                                'my_error',
    781783                                'An error ocurred'
     
    783785                };
    784786
    785787                // Add filters which return a WP_Error:
    786                 add_filter( 'pre_schedule_event', $return_error );
    787                 add_filter( 'pre_reschedule_event', $return_error );
     788                add_filter( 'pre_schedule_event', $return_error, 10, 3 );
     789                add_filter( 'pre_reschedule_event', $return_error, 10, 3 );
    788790
    789791                // Schedule events without the `$wp_error` parameter:
    790792                $single_event      = wp_schedule_single_event( time(), 'hook', array() );
     
    801803         * @ticket 49961
    802804         */
    803805        public function test_schedule_short_circuit_with_error_returns_error_when_wp_error_is_set_to_true() {
    804                 $return_error = function() {
     806                $return_error = function( $pre, $event, $wp_error ) {
     807                        $this->assertTrue( $wp_error );
     808
    805809                        return new WP_Error(
    806810                                'my_error',
    807811                                'An error ocurred'
     
    809813                };
    810814
    811815                // Add filters which return a WP_Error:
    812                 add_filter( 'pre_schedule_event', $return_error );
    813                 add_filter( 'pre_reschedule_event', $return_error );
     816                add_filter( 'pre_schedule_event', $return_error, 10, 3 );
     817                add_filter( 'pre_reschedule_event', $return_error, 10, 3 );
    814818
    815819                // Schedule events with the `$wp_error` parameter:
    816820                $single_event      = wp_schedule_single_event( time(), 'hook', array(), true );
     
    876880         * @expectedDeprecated wp_clear_scheduled_hook
    877881         */
    878882        public function test_deprecated_argument_usage_of_wp_clear_scheduled_hook() {
    879                 add_filter(
    880                         'pre_clear_scheduled_hook',
    881                         function( $pre, $hook, $args, $wp_error ) {
    882                                 $this->assertSame( array( 1, 2, 3 ), $args );
    883                                 $this->assertFalse( $wp_error );
    884 
    885                                 return $pre;
    886                         },
    887                         10,
    888                         4
    889                 );
     883                $return_pre = function( $pre, $hook, $args, $wp_error ) {
     884                        $this->assertSame( array( 1, 2, 3 ), $args );
     885                        $this->assertFalse( $wp_error );
     886
     887                        return $pre;
     888                };
     889
     890                add_filter( 'pre_clear_scheduled_hook', $return_pre, 10, 4 );
    890891
    891892                $cleared = wp_clear_scheduled_hook( 'hook', 1, 2, 3 );
    892893
     
    918919         * @ticket 49961
    919920         */
    920921        public function test_clear_scheduled_hook_returns_custom_pre_filter_error_when_wp_error_is_set_to_true() {
    921                 add_filter(
    922                         'pre_unschedule_event',
    923                         function( $pre ) {
    924                                 return new WP_Error( 'error_code', 'error message' );
    925                         }
    926                 );
     922                $return_error = function( $pre, $timestamp, $hook, $args, $wp_error ) {
     923                        $this->assertTrue( $wp_error );
     924
     925                        return new WP_Error( 'error_code', 'error message' );
     926                };
     927
     928                add_filter( 'pre_unschedule_event', $return_error, 10, 5 );
    927929
    928930                wp_schedule_single_event( strtotime( '+1 hour' ), 'test_hook' );
    929931                wp_schedule_single_event( strtotime( '+2 hours' ), 'test_hook' );
     
    950952         * @ticket 49961
    951953         */
    952954        public function test_unschedule_short_circuit_with_error_returns_false_when_wp_error_is_set_to_false() {
    953                 $return_error = function() {
     955                $return_error = function( $pre, $hook, $wp_error ) {
     956                        $this->assertFalse( $wp_error );
     957
    954958                        return new WP_Error(
    955959                                'my_error',
    956960                                'An error ocurred'
     
    958962                };
    959963
    960964                // Add a filter which returns a WP_Error:
    961                 add_filter( 'pre_unschedule_hook', $return_error );
     965                add_filter( 'pre_unschedule_hook', $return_error, 10, 3 );
    962966
    963967                // Unschedule a hook without the `$wp_error` parameter:
    964968                $result = wp_unschedule_hook( 'hook' );
     
    971975         * @ticket 49961
    972976         */
    973977        public function test_unschedule_short_circuit_with_error_returns_error_when_wp_error_is_set_to_true() {
    974                 $return_error = function() {
     978                $return_error = function( $pre, $hook, $wp_error ) {
     979                        $this->assertTrue( $wp_error );
     980
    975981                        return new WP_Error(
    976982                                'my_error',
    977983                                'An error ocurred'
     
    979985                };
    980986
    981987                // Add a filter which returns a WP_Error:
    982                 add_filter( 'pre_unschedule_hook', $return_error );
     988                add_filter( 'pre_unschedule_hook', $return_error, 10, 3 );
    983989
    984990                // Unschedule a hook with the `$wp_error` parameter:
    985991                $result = wp_unschedule_hook( 'hook', true );