WordPress.org

Make WordPress Core

Ticket #28310: 28310.5.diff

File 28310.5.diff, 8.1 KB (added by tollmanz, 5 years ago)

Patch updated with unit tests covering each of the functions relevant to the ticket.

  • src/wp-includes/functions.php

     
    2121 * @param string $format    Format of the date to return.
    2222 * @param string $date      Date string to convert.
    2323 * @param bool   $translate Whether the return date should be translated. Default true.
    24  * @return string|int Formatted date string, or Unix timestamp.
     24 * @return string|int|bool Formatted date string or Unix timestamp. False if $date is empty.
    2525 */
    2626function mysql2date( $format, $date, $translate = true ) {
    2727        if ( empty( $date ) )
  • src/wp-includes/general-template.php

     
    17251725 *
    17261726 * @param  string      $d    Optional. PHP date format defaults to the date_format option if not specified.
    17271727 * @param  int|WP_Post $post Optional. Post ID or WP_Post object. Default current post.
    1728  * @return string Date the current post was written.
     1728 * @return string|bool Date the current post was written. False on failure.
    17291729 */
    17301730function get_the_date( $d = '', $post = null ) {
    17311731        $post = get_post( $post );
    17321732
     1733        if ( ! $post ) {
     1734                return false;
     1735        }
     1736
    17331737        if ( '' == $d ) {
    17341738                $the_date = mysql2date( get_option( 'date_format' ), $post->post_date );
    17351739        } else {
     
    18391843 *                          was written. Either 'G', 'U', or php date format defaults
    18401844 *                          to the value specified in the time_format option. Default empty.
    18411845 * @param int|WP_Post $post WP_Post object or ID. Default is global $post object.
    1842  * @return string|int Formatted date string, or Unix timestamp.
     1846 * @return string|int|bool Formatted date string or Unix timestamp. False on failure.
    18431847 */
    18441848function get_the_time( $d = '', $post = null ) {
    18451849        $post = get_post($post);
    18461850
     1851        if ( ! $post ) {
     1852                return false;
     1853        }
     1854
    18471855        if ( '' == $d )
    18481856                $the_time = get_post_time(get_option('time_format'), false, $post, true);
    18491857        else
     
    18731881 * @param bool        $gmt       Optional. Whether to retrieve the GMT time. Default false.
    18741882 * @param int|WP_Post $post      WP_Post object or ID. Default is global $post object.
    18751883 * @param bool        $translate Whether to translate the time string. Default false.
    1876  * @return string|int Formatted date string, or Unix timestamp.
     1884 * @return string|int|bool Formatted date string or Unix timestamp. False on failure.
    18771885 */
    18781886function get_post_time( $d = 'U', $gmt = false, $post = null, $translate = false ) {
    18791887        $post = get_post($post);
    18801888
     1889        if ( ! $post ) {
     1890                return false;
     1891        }
     1892
    18811893        if ( $gmt )
    18821894                $time = $post->post_date_gmt;
    18831895        else
     
    19511963 *
    19521964 * @since 2.0.0
    19531965 *
    1954  * @param string $d Optional, default is 'U'. Either 'G', 'U', or php date format.
    1955  * @param bool $gmt Optional, default is false. Whether to return the gmt time.
    1956  * @param int|object $post Optional, default is global post object. A post_id or post object
    1957  * @param bool $translate Optional, default is false. Whether to translate the result
    1958  * @return string Returns timestamp
     1966 * @param string      $d         Optional. Format to use for retrieving the time the post
     1967 *                               was modified. Either 'G', 'U', or php date format. Default 'U'.
     1968 * @param bool        $gmt       Optional. Whether to retrieve the GMT time. Default false.
     1969 * @param int|WP_Post $post      WP_Post object or ID. Default is global $post object.
     1970 * @param bool        $translate Whether to translate the time string. Default false.
     1971 * @return string|int|bool Formatted date string or Unix timestamp. False on failure.
    19591972 */
    19601973function get_post_modified_time( $d = 'U', $gmt = false, $post = null, $translate = false ) {
    19611974        $post = get_post($post);
    19621975
     1976        if ( ! $post ) {
     1977                return false;
     1978        }
     1979
    19631980        if ( $gmt )
    19641981                $time = $post->post_modified_gmt;
    19651982        else
  • tests/phpunit/tests/post.php

     
    875875        }
    876876
    877877        /**
     878         * @ticket 28310
     879         */
     880        function test_get_the_date_returns_false_with_null_post() {
     881                $this->assertFalse( get_the_date() );
     882        }
     883
     884        /**
     885         * @ticket 28310
     886         */
     887        function test_get_the_date_returns_false_with_format_and_null_post() {
     888                $this->assertFalse( get_the_date( 'F j, Y h:i:s' ) );
     889        }
     890
     891        /**
     892         * @ticket 28310
     893         */
     894        function test_get_the_date_returns_false_with_post_that_is_not_found() {
     895                $this->assertFalse( get_the_date( '', 9 ) );
     896        }
     897
     898        /**
     899         * @ticket 28310
     900         */
     901        function test_get_the_date_returns_false_with_format_and_post_that_is_not_found() {
     902                $this->assertFalse( get_the_date( 'F j, Y h:i:s', 9 ) );
     903        }
     904
     905        /**
     906         * @ticket 28310
     907         */
     908        function test_get_the_time_with_id_returns_correct_time() {
     909                $post_id = $this->factory->post->create( array( 'post_date' => '2014-03-01 16:35:00' ) );
     910                $this->assertEquals( '16:35:00', get_the_time( 'H:i:s', $post_id ) );
     911        }
     912
     913        /**
     914         * @ticket 28310
     915         */
     916        function test_get_the_time_returns_false_with_null_post() {
     917                $this->assertFalse( get_the_time() );
     918        }
     919
     920        /**
     921         * @ticket 28310
     922         */
     923        function test_get_the_time_returns_false_with_format_and_null_post() {
     924                $this->assertFalse( get_the_time( 'h:i:s' ) );
     925        }
     926
     927        /**
     928         * @ticket 28310
     929         */
     930        function test_get_the_time_returns_false_with_post_that_is_not_found() {
     931                $this->assertFalse( get_the_time( '', 9 ) );
     932        }
     933
     934        /**
     935         * @ticket 28310
     936         */
     937        function test_get_the_time_returns_false_with_format_and_post_that_is_not_found() {
     938                $this->assertFalse( get_the_time( 'h:i:s', 9 ) );
     939        }
     940
     941        /**
     942         * @ticket 28310
     943         */
     944        function test_get_post_time_with_id_returns_correct_time() {
     945                $post_id = $this->factory->post->create( array( 'post_date' => '2014-03-01 16:35:00' ) );
     946                $this->assertEquals( '16:35:00', get_post_time( 'H:i:s', false, $post_id ) );
     947        }
     948
     949        /**
     950         * @ticket 28310
     951         */
     952        function test_get_post_time_returns_false_with_null_post() {
     953                $this->assertFalse( get_post_time() );
     954        }
     955
     956        /**
     957         * @ticket 28310
     958         */
     959        function test_get_post_time_returns_false_with_format_and_null_post() {
     960                $this->assertFalse( get_post_time( 'h:i:s' ) );
     961        }
     962
     963        /**
     964         * @ticket 28310
     965         */
     966        function test_get_post_time_returns_false_with_post_that_is_not_found() {
     967                $this->assertFalse( get_post_time( '', false, 9 ) );
     968        }
     969
     970        /**
     971         * @ticket 28310
     972         */
     973        function test_get_post_time_returns_false_with_format_and_post_that_is_not_found() {
     974                $this->assertFalse( get_post_time( 'h:i:s', false, 9 ) );
     975        }
     976
     977        /**
     978         * @ticket 28310
     979         */
     980        function test_get_post_modified_time_with_id_returns_correct_time() {
     981                $post_id = $this->factory->post->create( array( 'post_date' => '2014-03-01 16:35:00' ) );
     982                $this->assertEquals( '16:35:00', get_post_modified_time( 'H:i:s', false, $post_id ) );
     983        }
     984
     985        /**
     986         * @ticket 28310
     987         */
     988        function test_get_post_modified_time_returns_false_with_null_post() {
     989                $this->assertFalse( get_post_modified_time() );
     990        }
     991
     992        /**
     993         * @ticket 28310
     994         */
     995        function test_get_post_modified_time_returns_false_with_format_and_null_post() {
     996                $this->assertFalse( get_post_modified_time( 'h:i:s' ) );
     997        }
     998
     999        /**
     1000         * @ticket 28310
     1001         */
     1002        function test_get_post_modified_time_returns_false_with_post_that_is_not_found() {
     1003                $this->assertFalse( get_post_modified_time( '', false, 9 ) );
     1004        }
     1005
     1006        /**
     1007         * @ticket 28310
     1008         */
     1009        function test_get_post_modified_time_returns_false_with_format_and_post_that_is_not_found() {
     1010                $this->assertFalse( get_post_modified_time( 'h:i:s', false, 9 ) );
     1011        }
     1012
     1013        /**
     1014         * @ticket 28310
     1015         */
     1016        function test_mysql2date_returns_false_with_no_date() {
     1017                $this->assertFalse( mysql2date( 'F j, Y H:i:s', '' ) );
     1018        }
     1019
     1020        /**
     1021         * @ticket 28310
     1022         */
     1023        function test_mysql2date_returns_gmt_unix_timestamp() {
     1024                $this->assertEquals( '441013392', mysql2date( 'G', '1983-12-23 07:43:12' ) );
     1025        }
     1026
     1027        /**
     1028         * @ticket 28310
     1029         */
     1030        function test_mysql2date_returns_unix_timestamp() {
     1031                $this->assertEquals( '441013392', mysql2date( 'U', '1983-12-23 07:43:12' ) );
     1032        }
     1033
     1034        /**
    8781035         * @ticket 25566
    8791036         */
    8801037        function test_wp_tag_cloud_link_with_post_type() {