Make WordPress Core

Ticket #41837: 41837.patch

File 41837.patch, 1.8 KB (added by birgire, 8 years ago)
  • src/wp-includes/class-wp-user-query.php

     
    487487
    488488                $this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array );
    489489
    490                 // limit
    491                 if ( isset( $qv['number'] ) && $qv['number'] > 0 ) {
    492                         if ( $qv['offset'] ) {
    493                                 $this->query_limit = $wpdb->prepare("LIMIT %d, %d", $qv['offset'], $qv['number']);
     490                $number = intval( $qv['number'] ); // -1 is supported
     491                $offset = absint( $qv['offset'] );
     492                $paged  = absint( $qv['paged'] );       
     493
     494                // Limit
     495                if ( $number > 0 ) {
     496                        if ( $offset > 0 ) {                                                           
     497                                $calc_offset = $offset;
     498                        } elseif( $paged > 0 ) {
     499                                $calc_offset = $number * ( $paged - 1 );   
    494500                        } else {
    495                                 $this->query_limit = $wpdb->prepare( "LIMIT %d, %d", $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] );
    496                         }
    497                 }
     501                                $calc_offset = 0;
     502                        }                                               
     503                        $this->query_limit = $wpdb->prepare( "LIMIT %d, %d", $calc_offset, $number );
     504                }
    498505
    499506                $search = '';
    500507                if ( isset( $qv['search'] ) )
  • tests/phpunit/tests/user/query.php

     
    10721072        }
    10731073
    10741074        /**
     1075         * @ticket
     1076         */
     1077        public function test_paged_zero_should_be_same_as_page_one() {
     1078
     1079                $query0 = new WP_User_Query( array(
     1080                        'number'        => 2,
     1081                        'paged'         => 0,
     1082                ) );
     1083
     1084                $query1 = new WP_User_Query( array(
     1085                        'number'        => 2,
     1086                        'paged'         => 1,
     1087                ) );
     1088
     1089                $this->assertSame( $query0->request, $query1->request );
     1090        }
     1091
     1092        /**
    10751093         * @ticket 33449
    10761094         */
    10771095        public function test_query_vars_should_be_filled_in_after_pre_get_users() {