Make WordPress Core

Ticket #41197: 41197.2.diff

File 41197.2.diff, 3.1 KB (added by spacedmonkey, 8 years ago)
  • src/wp-includes/class-wp-site-query.php

     
    250250                 */
    251251                do_action_ref_array( 'pre_get_sites', array( &$this ) );
    252252
     253                $_args = wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) );
     254                unset( $_args['fields'] );
     255
    253256                // $args can include anything. Only use the args defined in the query_var_defaults to compute the key.
    254                 $key = md5( serialize( wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ) ) );
     257                $key = md5( serialize( $_args ) );
    255258                $last_changed = wp_cache_get_last_changed( 'sites' );
    256259
    257260                $cache_key = "get_sites:$key:$last_changed";
  • tests/phpunit/tests/multisite/siteQuery.php

     
    163163                $this->assertEqualSets( $expected, $found );
    164164        }
    165165
     166        /**
     167         * @ticket 41197
     168         */
     169        public function test_wp_site_query_cache_with_count() {
     170                global $wpdb;
     171                $q = new WP_Site_Query();
     172
     173                $query_1 = $q->query( array(
     174                        'fields'     => 'ids',
     175                        'network_id' => self::$network_ids['wordpress.org/'],
     176                        'number'     => 3,
     177                        'order'      => 'ASC',
     178                ) );
     179
     180                $number_of_queries = $wpdb->num_queries;
     181
     182                $query_2 = $q->query( array(
     183                        'fields'     => 'ids',
     184                        'network_id' => self::$network_ids['wordpress.org/'],
     185                        'number'     => 3,
     186                        'order'      => 'ASC',
     187                        'count'      => true,
     188                ) );
     189                $this->assertEquals( $number_of_queries + 1, $wpdb->num_queries );
     190        }
     191
     192        /**
     193         * @ticket 41197
     194         */
     195        public function test_wp_site_query_cache_with_both_count() {
     196                global $wpdb;
     197                $q                 = new WP_Site_Query();
     198
     199                $query_1 = $q->query( array(
     200                        'fields'     => 'ids',
     201                        'network_id' => self::$network_ids['wordpress.org/'],
     202                        'number'     => 3,
     203                        'order'      => 'ASC',
     204                        'count'      => true,
     205                ) );
     206                $number_of_queries = $wpdb->num_queries;
     207
     208                $query_2 = $q->query( array(
     209                        'fields'     => 'ids',
     210                        'network_id' => self::$network_ids['wordpress.org/'],
     211                        'number'     => 3,
     212                        'order'      => 'ASC',
     213                        'count'      => true,
     214                ) );
     215                $this->assertEquals( $number_of_queries, $wpdb->num_queries );
     216        }
     217
     218        /**
     219         * @ticket 41197
     220         */
     221        public function test_wp_site_query_cache_with_different_fields() {
     222                global $wpdb;
     223                $q                 = new WP_Site_Query();
     224                $query_1           = $q->query( array(
     225                        'fields'     => 'all',
     226                        'network_id' => self::$network_ids['wordpress.org/'],
     227                        'number'     => 3,
     228                        'order'      => 'ASC',
     229                ) );
     230                $number_of_queries = $wpdb->num_queries;
     231
     232                $query_2 = $q->query( array(
     233                        'fields'     => 'ids',
     234                        'network_id' => self::$network_ids['wordpress.org/'],
     235                        'number'     => 3,
     236                        'order'      => 'ASC',
     237                ) );
     238
     239                $this->assertEquals( $number_of_queries, $wpdb->num_queries );
     240
     241        }
     242
    166243        public function test_wp_site_query_by_network_id_with_order() {
    167244                $q = new WP_Site_Query();
    168245                $found = $q->query( array(