Multisite: Deprecate `wp_get_sites()`

Defer to the new `get_sites()` replacement, offering fresh (...or cached) `WP_Site` objects via the new `WP_Site_Query`.

Props flixos90.
Fixes #36994.


git-svn-id: https://develop.svn.wordpress.org/trunk@37653 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jeremy Felt 2016-06-08 03:02:34 +00:00
parent 53ec2e744d
commit 6da085cfe4
3 changed files with 90 additions and 70 deletions

View File

@ -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;
}

View File

@ -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.
*

View File

@ -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 ) ) );