Skip to:
Content

bbPress.org

Ticket #3433: 3433.02.patch

File 3433.02.patch, 3.4 KB (added by johnjamesjacoby, 2 years ago)
  • src/includes/common/functions.php

     
    188188}
    189189
    190190/**
     191 * Use the previous status when restoring a topic or reply.
     192 *
     193 * Fixes an issue since WordPress 5.6.0. See
     194 * {@link https://bbpress.trac.wordpress.org/ticket/3433}.
     195 *
     196 * @since 2.6.10 bbPress (r7233)
     197 *
     198 * @param string $new_status      New status to use when untrashing. Default: 'draft'
     199 * @param int    $post_id         Post ID
     200 * @param string $previous_status Previous post status from '_wp_trash_meta_status' meta key. Default: 'pending'
     201 */
     202function bbp_fix_untrash_post_status( $new_status = 'draft', $post_id = 0, $previous_status = 'pending' ) {
     203
     204        // Bail if not Topic or Reply
     205        if ( ! bbp_is_topic( $post_id ) && ! bbp_is_reply( $post_id ) ) {
     206                return $new_status;
     207        }
     208
     209        // Prefer the previous status, falling back to the new status
     210        $retval = ! empty( $previous_status )
     211                ? $previous_status
     212                : $new_status;
     213
     214        return $retval;
     215}
     216
     217/**
    191218 * Check a date against the length of time something can be edited.
    192219 *
    193220 * It is recommended to leave $utc set to true and to work with UTC/GMT dates.
  • src/includes/core/filters.php

     
    5252// Fix post author id for anonymous posts (set it back to 0) when the post status is changed
    5353add_filter( 'wp_insert_post_data', 'bbp_fix_post_author', 30, 2 );
    5454
     55// Fix untrash post status after a topic or reply is re-instated
     56add_filter( 'wp_untrash_post_status', 'bbp_fix_untrash_post_status', 10, 3 );
     57
    5558// Force comments_status on bbPress post types
    5659add_filter( 'comments_open', 'bbp_force_comment_status' );
    5760
  • src/readme.txt

  • tests/phpunit/testcases/topics/functions/topic.php

     
    423423
    424424        /**
    425425         * @covers ::bbp_untrash_topic
    426          * @todo   Implement test_bbp_untrash_topic().
    427426         */
    428427        public function test_bbp_untrash_topic() {
    429                 // Remove the following lines when you implement this test.
    430                 $this->markTestIncomplete(
    431                         'This test has not been implemented yet.'
    432                 );
     428                $f = $this->factory->forum->create();
     429                $t = $this->factory->topic->create( array(
     430                        'post_parent' => $f,
     431                        'topic_meta' => array(
     432                                'forum_id' => $f,
     433                        ),
     434                ) );
     435
     436                wp_trash_post( $t );
     437
     438                wp_untrash_post( $t );
     439
     440                $this->assertTrue( 'publish' === get_post_status( $t ) );
    433441        }
    434442
    435443        /**
    436444         * @covers ::bbp_untrash_topic_replies
    437          * @todo   Implement test_bbp_untrash_topic_replies().
    438445         */
    439446        public function test_bbp_untrash_topic_replies() {
    440                 // Remove the following lines when you implement this test.
    441                 $this->markTestIncomplete(
    442                         'This test has not been implemented yet.'
    443                 );
     447                $f = $this->factory->forum->create();
     448                $t = $this->factory->topic->create( array(
     449                        'post_parent' => $f,
     450                        'topic_meta' => array(
     451                                'forum_id' => $f,
     452                        ),
     453                ) );
     454                $r = $this->factory->reply->create_many( 2, array(
     455                        'post_parent' => $t,
     456                        'reply_meta' => array(
     457                                'forum_id' => $f,
     458                                'topic_id' => $t,
     459                        ),
     460                ) );
     461
     462                wp_trash_post( $t );
     463
     464                wp_untrash_post( $t );
     465
     466                $expected = [];
     467                $expected[] = get_post_status( $r[0] );
     468                $expected[] = get_post_status( $r[1] );
     469
     470                $this->assertSame( [ 'publish', 'publish' ], $expected );
    444471        }
    445472
    446473        /**