Make WordPress Core


Ignore:
Timestamp:
09/23/2015 06:15:39 PM (9 years ago)
Author:
boonebgorges
Message:

Allow comment_exists() to match based on GMT date.

The comment_date_gmt field of the wp_comments table is indexed, which makes
WHERE matches against the field much faster than against the unindexed
comment_date. For bulk operations like data import, the speed difference can
be meaningful.

We continue to default to 'blog' for $timezone, to preserve compatibility
with existing uses.

Props apokalyptik.
Fixes #33871.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/admin/includesComment.php

    r34457 r34460  
    2424        $this->assertEquals( $p1, comment_exists( 1, '2014-05-06 12:00:00' ) );
    2525    }
     26
     27    /**
     28     * @ticket 33871
     29     */
     30    public function test_default_value_of_timezone_should_be_blog() {
     31        $p = $this->factory->post->create();
     32        $c = $this->factory->comment->create( array(
     33            'comment_author' => 1,
     34            'comment_post_ID' => $p,
     35            'comment_date' => '2014-05-06 12:00:00',
     36            'comment_date_gmt' => '2014-05-06 07:00:00',
     37        ) );
     38
     39        $this->assertEquals( $p, comment_exists( 1, '2014-05-06 12:00:00' ) );
     40    }
     41
     42    /**
     43     * @ticket 33871
     44     */
     45    public function test_should_respect_timezone_blog() {
     46        $p = $this->factory->post->create();
     47        $c = $this->factory->comment->create( array(
     48            'comment_author' => 1,
     49            'comment_post_ID' => $p,
     50            'comment_date' => '2014-05-06 12:00:00',
     51            'comment_date_gmt' => '2014-05-06 07:00:00',
     52        ) );
     53
     54        $this->assertEquals( $p, comment_exists( 1, '2014-05-06 12:00:00', 'blog' ) );
     55    }
     56
     57    /**
     58     * @ticket 33871
     59     */
     60    public function test_should_respect_timezone_gmt() {
     61        $p = $this->factory->post->create();
     62        $c = $this->factory->comment->create( array(
     63            'comment_author' => 1,
     64            'comment_post_ID' => $p,
     65            'comment_date' => '2014-05-06 12:00:00',
     66            'comment_date_gmt' => '2014-05-06 07:00:00',
     67        ) );
     68
     69        $this->assertEquals( $p, comment_exists( 1, '2014-05-06 07:00:00', 'gmt' ) );
     70    }
     71
     72    /**
     73     * @ticket 33871
     74     */
     75    public function test_invalid_timezone_should_fall_back_on_blog() {
     76        $p = $this->factory->post->create();
     77        $c = $this->factory->comment->create( array(
     78            'comment_author' => 1,
     79            'comment_post_ID' => $p,
     80            'comment_date' => '2014-05-06 12:00:00',
     81            'comment_date_gmt' => '2014-05-06 07:00:00',
     82        ) );
     83
     84        $this->assertEquals( $p, comment_exists( 1, '2014-05-06 12:00:00', 'not_a_valid_value' ) );
     85    }
    2686}
Note: See TracChangeset for help on using the changeset viewer.