Date/Time: Make sure get_the_date() and related functions return correct time if the format was specified as false.

Technically, the `$format` argument should always be a string, but passing `false` used to work before [47808], so this restores backward compatibility.

The list of affected functions:

- `get_the_date()`
- `get_the_time()`
- `get_comment_date()`
- `get_comment_time()`

Props wittich, Rarst, akabarikalpesh, SergeyBiryukov.
Merges [48912] to the 5.5 branch.
Fixes #51184.

git-svn-id: https://develop.svn.wordpress.org/branches/5.5@48921 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jonathan Desrosiers 2020-08-31 18:56:22 +00:00
parent 0318feb679
commit 01c896073d
5 changed files with 93 additions and 20 deletions

View File

@ -552,12 +552,12 @@ function get_comment_class( $class = '', $comment_id = null, $post_id = null ) {
function get_comment_date( $format = '', $comment_ID = 0 ) {
$comment = get_comment( $comment_ID );
if ( '' === $format ) {
$date = mysql2date( get_option( 'date_format' ), $comment->comment_date );
} else {
$date = mysql2date( $format, $comment->comment_date );
if ( ! is_string( $format ) || '' === $format ) {
$format = get_option( 'date_format' );
}
$date = mysql2date( $format, $comment->comment_date );
/**
* Filters the returned comment date.
*
@ -1046,12 +1046,12 @@ function get_comment_time( $format = '', $gmt = false, $translate = true ) {
$comment_date = $gmt ? $comment->comment_date_gmt : $comment->comment_date;
if ( '' === $format ) {
$date = mysql2date( get_option( 'time_format' ), $comment_date, $translate );
} else {
$date = mysql2date( $format, $comment_date, $translate );
if ( ! is_string( $format ) || '' === $format ) {
$format = get_option( 'time_format' );
}
$date = mysql2date( $format, $comment_date, $translate );
/**
* Filters the returned comment time.
*

View File

@ -2525,12 +2525,12 @@ function get_the_date( $format = '', $post = null ) {
return false;
}
if ( '' === $format ) {
$the_date = get_post_time( get_option( 'date_format' ), false, $post, true );
} else {
$the_date = get_post_time( $format, false, $post, true );
if ( ! is_string( $format ) || '' === $format ) {
$format = get_option( 'date_format' );
}
$the_date = get_post_time( $format, false, $post, true );
/**
* Filters the date a post was published.
*
@ -2654,12 +2654,12 @@ function get_the_time( $format = '', $post = null ) {
return false;
}
if ( '' === $format ) {
$the_time = get_post_time( get_option( 'time_format' ), false, $post, true );
} else {
$the_time = get_post_time( $format, false, $post, true );
if ( ! is_string( $format ) || '' === $format ) {
$format = get_option( 'time_format' );
}
$the_time = get_post_time( $format, false, $post, true );
/**
* Filters the time a post was written.
*

View File

@ -0,0 +1,49 @@
<?php
/**
* @group date
* @group datetime
* @group comment
*/
class Tests_Date_Get_Comment_Date extends WP_UnitTestCase {
/**
* @ticket 51184
*/
function test_get_comment_date_returns_correct_time_with_comment_id() {
$c = self::factory()->comment->create( array( 'comment_date' => '2020-08-29 01:51:00' ) );
$this->assertEquals( 'August 29, 2020', get_comment_date( 'F j, Y', $c ) );
}
/**
* @ticket 51184
*/
function test_get_comment_date_returns_correct_time_with_empty_format() {
$c = self::factory()->comment->create( array( 'comment_date' => '2020-08-29 01:51:00' ) );
$this->assertEquals( 'August 29, 2020', get_comment_date( '', $c ) );
$this->assertEquals( 'August 29, 2020', get_comment_date( false, $c ) );
}
/**
* @ticket 51184
*/
function test_get_comment_time_returns_correct_time() {
$c = self::factory()->comment->create( array( 'comment_date' => '2020-08-29 01:51:00' ) );
$GLOBALS['comment'] = get_comment( $c );
$this->assertEquals( '1:51 am', get_comment_time( 'g:i a' ) );
}
/**
* @ticket 51184
*/
function test_get_comment_time_returns_correct_time_with_empty_format() {
$c = self::factory()->comment->create( array( 'comment_date' => '2020-08-29 01:51:00' ) );
$GLOBALS['comment'] = get_comment( $c );
$this->assertEquals( '1:51 am', get_comment_time( '' ) );
$this->assertEquals( '1:51 am', get_comment_time( false ) );
}
}

View File

@ -10,8 +10,9 @@ class Tests_Date_Get_Post_Time extends WP_UnitTestCase {
/**
* @ticket 28310
*/
public function test_get_post_time_with_id_returns_correct_time() {
public function test_get_post_time_returns_correct_time_with_post_id() {
$post_id = self::factory()->post->create( array( 'post_date' => '2014-03-01 16:35:00' ) );
$this->assertEquals( '16:35:00', get_post_time( 'H:i:s', false, $post_id ) );
}
@ -28,8 +29,9 @@ class Tests_Date_Get_Post_Time extends WP_UnitTestCase {
/**
* @ticket 28310
*/
public function test_get_post_modified_time_with_id_returns_correct_time() {
public function test_get_post_modified_time_returns_correct_time_with_post_id() {
$post_id = self::factory()->post->create( array( 'post_date' => '2014-03-01 16:35:00' ) );
$this->assertEquals( '16:35:00', get_post_modified_time( 'H:i:s', false, $post_id ) );
}

View File

@ -10,8 +10,9 @@ class Tests_Date_Get_The_Date extends WP_UnitTestCase {
/**
* @ticket 13771
*/
function test_get_the_date_with_id_returns_correct_time() {
function test_get_the_date_returns_correct_time_with_post_id() {
$post_id = self::factory()->post->create( array( 'post_date' => '2014-03-01 16:35:00' ) );
$this->assertEquals( 'March 1, 2014', get_the_date( 'F j, Y', $post_id ) );
}
@ -25,11 +26,22 @@ class Tests_Date_Get_The_Date extends WP_UnitTestCase {
$this->assertFalse( get_the_date( 'F j, Y h:i:s', 9 ) );
}
/**
* @ticket 51184
*/
function test_get_the_date_returns_correct_time_with_empty_format() {
$post_id = self::factory()->post->create( array( 'post_date' => '2020-08-29 01:51:00' ) );
$this->assertEquals( 'August 29, 2020', get_the_date( '', $post_id ) );
$this->assertEquals( 'August 29, 2020', get_the_date( false, $post_id ) );
}
/**
* @ticket 28310
*/
function test_get_the_time_with_id_returns_correct_time() {
function test_get_the_time_returns_correct_time_with_post_id() {
$post_id = self::factory()->post->create( array( 'post_date' => '2014-03-01 16:35:00' ) );
$this->assertEquals( '16:35:00', get_the_time( 'H:i:s', $post_id ) );
}
@ -42,4 +54,14 @@ class Tests_Date_Get_The_Date extends WP_UnitTestCase {
$this->assertFalse( get_the_time( '', 9 ) );
$this->assertFalse( get_the_time( 'h:i:s', 9 ) );
}
/**
* @ticket 51184
*/
function test_get_the_time_returns_correct_time_with_empty_format() {
$post_id = self::factory()->post->create( array( 'post_date' => '2020-08-29 01:51:00' ) );
$this->assertEquals( '1:51 am', get_the_time( '', $post_id ) );
$this->assertEquals( '1:51 am', get_the_time( false, $post_id ) );
}
}