Make WordPress Core

Changeset 25488


Ignore:
Timestamp:
09/19/2013 01:46:03 AM (12 years ago)
Author:
SergeyBiryukov
Message:

Introduce 'offset' parameter for wp_get_sites().

props jamescollins.
see #14511.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/ms-functions.php

    r25487 r25488  
    20082008 *     @type int       'deleted'    Retrieve deleted or non-deleted sites. Default null, for any.
    20092009 *     @type int       'limit'      Number of sites to limit the query to. Default 100.
     2010 *     @type int       'offset'     Exclude the first x sites. Used in combination with the limit parameter. Default 0.
    20102011 * }
    20112012 *
     
    20262027        'deleted'    => null,
    20272028        'limit'      => 100,
     2029        'offset'     => 0,
    20282030    );
    20292031
     
    20522054        $query .= $wpdb->prepare( "AND deleted = %d ", $args['deleted'] );
    20532055
    2054     if ( isset( $args['limit'] ) )
    2055         $query .= $wpdb->prepare( "LIMIT %d ", $args['limit'] );
     2056    if ( isset( $args['limit'] ) && $args['limit'] ) {
     2057        if ( isset( $args['offset'] ) && $args['offset'] )
     2058            $query .= $wpdb->prepare( "LIMIT %d , %d ", $args['offset'], $args['limit'] );
     2059        else
     2060            $query .= $wpdb->prepare( "LIMIT %d ", $args['limit'] );
     2061    }
    20562062
    20572063    $site_results = $wpdb->get_results( $query, ARRAY_A );
  • trunk/tests/phpunit/tests/ms.php

    r25446 r25488  
    10341034     */
    10351035    function test_wp_get_sites() {
    1036         global $wpdb;
    10371036        $this->factory->blog->create_many( 2, array( 'site_id' => 2, 'meta' => array( 'public' => 1 ) ) );
    10381037        $this->factory->blog->create_many( 3, array( 'site_id' => 3, 'meta' => array( 'public' => 0 ) ) );
     
    10671066        $this->assertCount( 0, wp_get_sites( array( 'network_id' => 3, 'public' => 1 ) ) );
    10681067        $this->assertCount( 3, wp_get_sites( array( 'network_id' => 3, 'public' => 0 ) ) );
     1068    }
     1069
     1070    /**
     1071     * @ticket 14511
     1072     */
     1073    function test_wp_get_sites_limit_offset() {
     1074        // Create 4 more sites (in addition to the default one)
     1075        $this->factory->blog->create_many( 4, array( 'meta' => array( 'public' => 1 ) ) );
     1076
     1077        // Expect all 5 sites when no limit/offset is specified
     1078        $this->assertCount( 5, wp_get_sites() );
     1079
     1080        // Expect first 2 sites when using limit
     1081        $this->assertCount( 2, wp_get_sites( array( 'limit' => 2 ) ) );
     1082
     1083        // Expect only the last 3 sites when using offset of 2 (limit will default to 100)
     1084        $this->assertCount( 3, wp_get_sites( array( 'offset' => 2 ) ) );
     1085
     1086        // Expect only the last 1 site when using offset of 4 and limit of 2
     1087        $this->assertCount( 1, wp_get_sites( array( 'limit' => 2, 'offset' => 4 ) ) );
     1088
     1089        // Expect 0 sites when using an offset larger than the number of sites
     1090        $this->assertCount( 0, wp_get_sites( array( 'offset' => 20 ) ) );
    10691091    }
    10701092
Note: See TracChangeset for help on using the changeset viewer.