Skip to:
Content

BuddyPress.org

Changeset 11067


Ignore:
Timestamp:
09/06/2016 07:34:00 PM (9 years ago)
Author:
boonebgorges
Message:

Bail early if an array containing only 0 is passed to 'include' in user queries.

When 'include' is [ 0 ] or [ '0' ]`, there's no reason to run a costly
SQL query - we can immediately report no results.

Fixes #7248.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/classes/class-bp-user-query.php

    r11024 r11067  
    365365        $include     = false !== $include ? wp_parse_id_list( $include ) : array();
    366366        $include_ids = $this->get_include_ids( $include );
    367         if ( ! empty( $include_ids ) ) {
     367
     368        // An array containing nothing but 0 should always fail.
     369        if ( 1 === count( $include_ids ) && 0 == reset( $include_ids ) ) {
     370            $sql['where'][] = $this->no_results['where'];
     371        } elseif ( ! empty( $include_ids ) ) {
    368372            $include_ids    = implode( ',', wp_parse_id_list( $include_ids ) );
    369373            $sql['where'][] = "u.{$this->uid_name} IN ({$include_ids})";
  • trunk/tests/phpunit/testcases/core/class-bp-user-query.php

    r10043 r11067  
    6868
    6969    /**
     70     * @ticket BP7248
     71     */
     72    public function test_include_array_contaning_only_0_should_result_in_no_results_query() {
     73        $q = new BP_User_Query( array(
     74            'include' => array( 0 ),
     75        ) );
     76
     77        $this->assertContains( '0 = 1', $q->uid_clauses['where'] );
     78    }
     79
     80    /**
     81     * @ticket BP7248
     82     */
     83    public function test_include_array_contaning_0_but_also_real_IDs_should_not_result_in_no_results_query() {
     84        $q = new BP_User_Query( array(
     85            'include' => array( 0, 1 ),
     86        ) );
     87
     88        $this->assertNotContains( '0 = 1', $q->uid_clauses['where'] );
     89    }
     90
     91    /**
    7092     * @group user_ids
    7193     */
Note: See TracChangeset for help on using the changeset viewer.