diff --git a/src/wp-includes/ms-deprecated.php b/src/wp-includes/ms-deprecated.php index 19224d78d7..f45896ed4f 100644 --- a/src/wp-includes/ms-deprecated.php +++ b/src/wp-includes/ms-deprecated.php @@ -438,3 +438,76 @@ function get_admin_users_for_domain( $sitedomain = '', $path = '' ) { return false; } + +/** + * Return an array of sites for a network or networks. + * + * @since 3.7.0 + * @deprecated 4.6.0 + * @see get_sites() + * + * @global wpdb $wpdb WordPress database abstraction object. + * + * @param array $args { + * Array of default arguments. Optional. + * + * @type int|array $network_id A network ID or array of network IDs. Set to null to retrieve sites + * from all networks. Defaults to current network ID. + * @type int $public Retrieve public or non-public sites. Default null, for any. + * @type int $archived Retrieve archived or non-archived sites. Default null, for any. + * @type int $mature Retrieve mature or non-mature sites. Default null, for any. + * @type int $spam Retrieve spam or non-spam sites. Default null, for any. + * @type int $deleted Retrieve deleted or non-deleted sites. Default null, for any. + * @type int $limit Number of sites to limit the query to. Default 100. + * @type int $offset Exclude the first x sites. Used in combination with the $limit parameter. Default 0. + * } + * @return array An empty array if the install is considered "large" via wp_is_large_network(). Otherwise, + * an associative array of site data arrays, each containing the site (network) ID, blog ID, + * site domain and path, dates registered and modified, and the language ID. Also, boolean + * values for whether the site is public, archived, mature, spam, and/or deleted. + */ +function wp_get_sites( $args = array() ) { + global $wpdb; + + _deprecated_function( __FUNCTION__, '4.6', 'get_sites()' ); + + if ( wp_is_large_network() ) + return array(); + + $defaults = array( + 'network_id' => $wpdb->siteid, + 'public' => null, + 'archived' => null, + 'mature' => null, + 'spam' => null, + 'deleted' => null, + 'limit' => 100, + 'offset' => 0, + ); + + $args = wp_parse_args( $args, $defaults ); + + // Backwards compatibility + if( is_array( $args['network_id'] ) ){ + $args['network__in'] = $args['network_id']; + $args['network_id'] = null; + } + + if( is_numeric( $args['limit'] ) ){ + $args['number'] = $args['limit']; + $args['limit'] = null; + } + + // Make sure count is disabled. + $args['count'] = false; + + $_sites = get_sites( $args ); + + $results = array(); + + foreach ( $_sites as $_site ) { + $results[] = (array) get_site( $_site ); + } + + return $results; +} diff --git a/src/wp-includes/ms-functions.php b/src/wp-includes/ms-functions.php index b907cb73d9..814b14397c 100644 --- a/src/wp-includes/ms-functions.php +++ b/src/wp-includes/ms-functions.php @@ -2424,76 +2424,6 @@ function wp_is_large_network( $using = 'sites' ) { return apply_filters( 'wp_is_large_network', $count > 10000, 'sites', $count ); } - -/** - * Return an array of sites for a network or networks. - * - * @since 3.7.0 - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param array $args { - * Array of default arguments. Optional. - * - * @type int|array $network_id A network ID or array of network IDs. Set to null to retrieve sites - * from all networks. Defaults to current network ID. - * @type int $public Retrieve public or non-public sites. Default null, for any. - * @type int $archived Retrieve archived or non-archived sites. Default null, for any. - * @type int $mature Retrieve mature or non-mature sites. Default null, for any. - * @type int $spam Retrieve spam or non-spam sites. Default null, for any. - * @type int $deleted Retrieve deleted or non-deleted sites. Default null, for any. - * @type int $limit Number of sites to limit the query to. Default 100. - * @type int $offset Exclude the first x sites. Used in combination with the $limit parameter. Default 0. - * } - * @return array An empty array if the install is considered "large" via wp_is_large_network(). Otherwise, - * an associative array of site data arrays, each containing the site (network) ID, blog ID, - * site domain and path, dates registered and modified, and the language ID. Also, boolean - * values for whether the site is public, archived, mature, spam, and/or deleted. - */ -function wp_get_sites( $args = array() ) { - global $wpdb; - - if ( wp_is_large_network() ) - return array(); - - $defaults = array( - 'network_id' => $wpdb->siteid, - 'public' => null, - 'archived' => null, - 'mature' => null, - 'spam' => null, - 'deleted' => null, - 'limit' => 100, - 'offset' => 0, - ); - - $args = wp_parse_args( $args, $defaults ); - - // Backwards compatibility - if( is_array( $args['network_id'] ) ){ - $args['network__in'] = $args['network_id']; - $args['network_id'] = null; - } - - if( is_numeric( $args['limit'] ) ){ - $args['number'] = $args['limit']; - $args['limit'] = null; - } - - // Make sure count is disabled. - $args['count'] = false; - - $_sites = get_sites( $args ); - - $results = array(); - - foreach ( $_sites as $_site ) { - $results[] = (array) get_site( $_site ); - } - - return $results; -} - /** * Retrieves a list of reserved site on a sub-directory Multisite install. * diff --git a/tests/phpunit/tests/multisite/site.php b/tests/phpunit/tests/multisite/site.php index b7a6a155c8..6001ee2afa 100644 --- a/tests/phpunit/tests/multisite/site.php +++ b/tests/phpunit/tests/multisite/site.php @@ -581,6 +581,7 @@ class Tests_Multisite_Site extends WP_UnitTestCase { * public sites from the current network. * * @ticket 14511 + * @expectedDeprecated wp_get_sites */ function test_wp_get_sites_with_default_arguments() { self::factory()->blog->create( array( 'site_id' => 2 ) ); @@ -590,6 +591,8 @@ class Tests_Multisite_Site extends WP_UnitTestCase { /** * No sites should match a query that specifies an invalid network ID. + * + * @expectedDeprecated wp_get_sites */ function test_wp_get_sites_with_invalid_network_id() { $this->assertcount( 0, wp_get_sites( array( 'network_id' => 999 ) ) ); @@ -597,6 +600,8 @@ class Tests_Multisite_Site extends WP_UnitTestCase { /** * A network ID of null should query for all public sites on all networks. + * + * @expectedDeprecated wp_get_sites */ function test_wp_get_sites_with_network_id_null() { self::factory()->blog->create( array( 'site_id' => 2 ) ); @@ -606,6 +611,8 @@ class Tests_Multisite_Site extends WP_UnitTestCase { /** * Expect only sites on the specified network ID to be returned. + * + * @expectedDeprecated wp_get_sites */ function test_wp_get_sites_with_specific_network_id() { self::factory()->blog->create( array( 'site_id' => 2 ) ); @@ -615,6 +622,8 @@ class Tests_Multisite_Site extends WP_UnitTestCase { /** * Expect sites from both networks if both network IDs are specified. + * + * @expectedDeprecated wp_get_sites */ function test_wp_get_sites_with_multiple_network_ids() { self::factory()->blog->create( array( 'site_id' => 2 ) ); @@ -624,6 +633,8 @@ class Tests_Multisite_Site extends WP_UnitTestCase { /** * Queries for public or non public sites should work across all networks if network ID is null. + * + * @expectedDeprecated wp_get_sites */ function test_wp_get_sites_with_public_meta_on_all_networks() { self::factory()->blog->create( array( 'site_id' => 2, 'meta' => array( 'public' => 0 ) ) ); @@ -634,6 +645,8 @@ class Tests_Multisite_Site extends WP_UnitTestCase { /** * If a network ID is specified, queries for public sites should be restricted to that network. + * + * @expectedDeprecated wp_get_sites */ function test_wp_get_sites_with_public_meta_restrict_to_one_network() { self::factory()->blog->create( array( 'site_id' => 1, 'meta' => array( 'public' => 0 ) ) ); @@ -644,6 +657,8 @@ class Tests_Multisite_Site extends WP_UnitTestCase { /** * Test the limit and offset arguments for wp_get_sites when multiple sites are available. + * + * @expectedDeprecated wp_get_sites */ function test_wp_get_sites_limit_offset() { // Create 2 more sites (in addition to the default one) @@ -661,6 +676,8 @@ class Tests_Multisite_Site extends WP_UnitTestCase { /** * Expect 0 sites when using an offset larger than the total number of sites. + * + * @expectedDeprecated wp_get_sites */ function test_wp_get_sites_offset_greater_than_available_sites() { $this->assertCount( 0, wp_get_sites( array( 'offset' => 20 ) ) );