Multisite: Add $network_id parameter to wp_is_large_network().

Now that `get_blog_count()` and `get_user_count()` both support passing a `$network_id` parameter (see [40370] and [40371]), similar functionality is now available for `wp_is_large_network()`. In addition, the filter `wp_is_large_network` now accepts the network ID as its fourth parameter.

This changeset furthermore introduces unit tests for the `wp_is_large_network()` function and its filter.

Fixes #40489.


git-svn-id: https://develop.svn.wordpress.org/trunk@40590 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Felix Arntz
2017-05-09 15:50:04 +00:00
parent 48661c4b00
commit 1515787d31
2 changed files with 131 additions and 6 deletions
+115
View File
@@ -470,6 +470,121 @@ class Tests_Multisite_Network extends WP_UnitTestCase {
$this->assertTrue( $site_count > 0 && $user_count > 0 );
}
/**
* @ticket 40489
* @dataProvider data_wp_is_large_network
*/
public function test_wp_is_large_network( $using, $count, $expected, $different_network ) {
$network_id = $different_network ? self::$different_network_id : null;
$network_option = 'users' === $using ? 'user_count' : 'blog_count';
update_network_option( $network_id, $network_option, $count );
$result = wp_is_large_network( $using, $network_id );
if ( $expected ) {
$this->assertTrue( $result );
} else {
$this->assertFalse( $result );
}
}
public function data_wp_is_large_network() {
return array(
array( 'sites', 10000, false, false ),
array( 'sites', 10001, true, false ),
array( 'users', 10000, false, false ),
array( 'users', 10001, true, false ),
array( 'sites', 10000, false, true ),
array( 'sites', 10001, true, true ),
array( 'users', 10000, false, true ),
array( 'users', 10001, true, true ),
);
}
/**
* @ticket 40489
* @dataProvider data_wp_is_large_network_filtered_by_component
*/
public function test_wp_is_large_network_filtered_by_component( $using, $count, $expected, $different_network ) {
$network_id = $different_network ? self::$different_network_id : null;
$network_option = 'users' === $using ? 'user_count' : 'blog_count';
update_network_option( $network_id, $network_option, $count );
add_filter( 'wp_is_large_network', array( $this, 'filter_wp_is_large_network_for_users' ), 10, 3 );
$result = wp_is_large_network( $using, $network_id );
remove_filter( 'wp_is_large_network', array( $this, 'filter_wp_is_large_network_for_users' ), 10 );
if ( $expected ) {
$this->assertTrue( $result );
} else {
$this->assertFalse( $result );
}
}
public function data_wp_is_large_network_filtered_by_component() {
return array(
array( 'sites', 10000, false, false ),
array( 'sites', 10001, true, false ),
array( 'users', 1000, false, false ),
array( 'users', 1001, true, false ),
array( 'sites', 10000, false, true ),
array( 'sites', 10001, true, true ),
array( 'users', 1000, false, true ),
array( 'users', 1001, true, true ),
);
}
public function filter_wp_is_large_network_for_users( $is_large_network, $using, $count ) {
if ( 'users' === $using ) {
return $count > 1000;
}
return $is_large_network;
}
/**
* @ticket 40489
* @dataProvider data_wp_is_large_network_filtered_by_network
*/
public function test_wp_is_large_network_filtered_by_network( $using, $count, $expected, $different_network ) {
$network_id = $different_network ? self::$different_network_id : null;
$network_option = 'users' === $using ? 'user_count' : 'blog_count';
update_network_option( $network_id, $network_option, $count );
add_filter( 'wp_is_large_network', array( $this, 'filter_wp_is_large_network_on_different_network' ), 10, 4 );
$result = wp_is_large_network( $using, $network_id );
remove_filter( 'wp_is_large_network', array( $this, 'filter_wp_is_large_network_on_different_network' ), 10 );
if ( $expected ) {
$this->assertTrue( $result );
} else {
$this->assertFalse( $result );
}
}
public function data_wp_is_large_network_filtered_by_network() {
return array(
array( 'sites', 10000, false, false ),
array( 'sites', 10001, true, false ),
array( 'users', 10000, false, false ),
array( 'users', 10001, true, false ),
array( 'sites', 1000, false, true ),
array( 'sites', 1001, true, true ),
array( 'users', 1000, false, true ),
array( 'users', 1001, true, true ),
);
}
public function filter_wp_is_large_network_on_different_network( $is_large_network, $using, $count, $network_id ) {
if ( $network_id === (int) self::$different_network_id ) {
return $count > 1000;
}
return $is_large_network;
}
}
endif;