Make WordPress Core


Ignore:
Timestamp:
01/22/2016 08:19:49 PM (8 years ago)
Author:
boonebgorges
Message:

Allow comment query results to be limited to comments with comment_post_ID = 0.

Previously, this was not possible due to an overly broad empty() check.

Passing null, false, or '' to 'post_id', or omitting 'post_id'
altogether, will continue to return comments regardless of comment_post_ID,
as before. Passing 0 or '0' will limit results to comments with no
associated post.

Props danielbachhuber.
Fixes #35090.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/comment/query.php

    r36346 r36381  
    3737    }
    3838
    39     public function test_query_post_id_0() {
    40         $c1 = self::factory()->comment->create( array( 'comment_post_ID' => self::$post_id, 'comment_approved' => '1' ) );
     39    /**
     40     * @ticket 35090
     41     */
     42    public function test_post_id_0_should_return_comments_with_no_parent() {
     43        $c1 = self::factory()->comment->create( array( 'comment_post_ID' => self::$post_id, 'comment_approved' => '1' ) );
     44        $c2 = self::factory()->comment->create( array( 'comment_post_ID' => 0, 'comment_approved' => '1' ) );
    4145
    4246        $q = new WP_Comment_Query();
     
    4650        ) );
    4751
    48         $this->assertEqualSets( array( $c1 ), $found );
     52        $this->assertEqualSets( array( $c2 ), $found );
     53    }
     54
     55    /**
     56     * @ticket 35090
     57     */
     58    public function test_post_id_string_0_should_return_comments_with_no_parent() {
     59        $c1 = self::factory()->comment->create( array( 'comment_post_ID' => self::$post_id, 'comment_approved' => '1' ) );
     60        $c2 = self::factory()->comment->create( array( 'comment_post_ID' => 0, 'comment_approved' => '1' ) );
     61
     62        $q = new WP_Comment_Query();
     63        $found = $q->query( array(
     64            'post_id' => '0',
     65            'fields' => 'ids',
     66        ) );
     67
     68        $this->assertEqualSets( array( $c2 ), $found );
     69    }
     70
     71    /**
     72     * @ticket 35090
     73     */
     74    public function test_post_id_null_should_be_ignored() {
     75        $c1 = self::factory()->comment->create( array( 'comment_post_ID' => self::$post_id, 'comment_approved' => '1' ) );
     76        $c2 = self::factory()->comment->create( array( 'comment_post_ID' => 0, 'comment_approved' => '1' ) );
     77
     78        $q = new WP_Comment_Query();
     79        $found = $q->query( array(
     80            'post_id' => null,
     81            'fields' => 'ids',
     82        ) );
     83
     84        $this->assertEqualSets( array( $c1, $c2 ), $found );
     85    }
     86
     87    /**
     88     * @ticket 35090
     89     */
     90    public function test_post_id_false_should_be_ignored() {
     91        $c1 = self::factory()->comment->create( array( 'comment_post_ID' => self::$post_id, 'comment_approved' => '1' ) );
     92        $c2 = self::factory()->comment->create( array( 'comment_post_ID' => 0, 'comment_approved' => '1' ) );
     93
     94        $q = new WP_Comment_Query();
     95        $found = $q->query( array(
     96            'post_id' => false,
     97            'fields' => 'ids',
     98        ) );
     99
     100        $this->assertEqualSets( array( $c1, $c2 ), $found );
     101    }
     102
     103    /**
     104     * @ticket 35090
     105     */
     106    public function test_post_id_empty_string_should_be_ignored() {
     107        $c1 = self::factory()->comment->create( array( 'comment_post_ID' => self::$post_id, 'comment_approved' => '1' ) );
     108        $c2 = self::factory()->comment->create( array( 'comment_post_ID' => 0, 'comment_approved' => '1' ) );
     109
     110        $q = new WP_Comment_Query();
     111        $found = $q->query( array(
     112            'post_id' => '',
     113            'fields' => 'ids',
     114        ) );
     115
     116        $this->assertEqualSets( array( $c1, $c2 ), $found );
    49117    }
    50118
Note: See TracChangeset for help on using the changeset viewer.