WordPress.org

Make WordPress Core

Ticket #25347: wp-insert-post-future-comparison.patch

File wp-insert-post-future-comparison.patch, 1.9 KB (added by Rarst, 5 months ago)
  • src/wp-includes/post.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    35943594                        if ( mysql2date( 'U', $post_date_gmt, false ) > mysql2date( 'U', $now, false ) ) {
    35953595                                $post_status = 'future';
    35963596                        }
    3597                 } elseif ( 'future' == $post_status ) {
    3598                         $now = gmdate( 'Y-m-d H:i:59' );
    3599                         if ( mysql2date( 'U', $post_date_gmt, false ) <= mysql2date( 'U', $now, false ) ) {
     3597                } elseif ( 'future' === $post_status ) {
     3598
     3599                        // String comparison to work around far future (year 2038+) scheduled on 32-bit systems.
     3600                        if ( $post_date_gmt <= gmdate( 'Y-m-d H:i:59' ) ) {
    36003601                                $post_status = 'publish';
    36013602                        }
    36023603                }
  • tests/phpunit/tests/post/wpInsertPost.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    302302                $this->assertSame( $expected, $actual );
    303303        }
    304304
     305        function test_scheduled_past_time_should_be_published() {
     306
     307                $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
     308
     309                $post_id = $this->factory()->post->create( [
     310                        'post_date_gmt' => $now->modify( '-1 year' )->format( 'Y-m-d H:i:s' ),
     311                        'post_status'   => 'future',
     312                ] );
     313
     314                $this->assertEquals( 'publish', get_post_status( $post_id ) );
     315
     316                $post_id = $this->factory()->post->create( [
     317                        'post_date_gmt' => $now->modify( '+50 years' )->format( 'Y-m-d H:i:s' ),
     318                        'post_status'   => 'future',
     319                ] );
     320
     321                $this->assertEquals( 'future', get_post_status( $post_id ) );
     322        }
    305323}