* @return string Full URL of the blog if found. Empty string if not.
*/
function get_blogaddress_by_id( $blog_id ) {
- $bloginfo = get_blog_details( (int) $blog_id );
+ $bloginfo = get_site( (int) $blog_id );
if ( empty( $bloginfo ) ) {
return '';
}
/**
- * Given a blog's (subdomain or directory) slug, retrieve its id.
+ * Retrieves a sites ID given its (subdomain or directory) slug.
*
* @since MU
+ * @since 4.7.0 Converted to use get_sites().
*
- * @global wpdb $wpdb WordPress database abstraction object.
- *
- * @param string $slug
- * @return int A blog id
+ * @param string $slug A site's slug.
+ * @return int|null The site ID, or null if no site is found for the given slug.
*/
function get_id_from_blogname( $slug ) {
- global $wpdb;
-
- $current_site = get_current_site();
+ $current_network = get_network();
$slug = trim( $slug, '/' );
- $blog_id = wp_cache_get( 'get_id_from_blogname_' . $slug, 'blog-details' );
- if ( $blog_id )
- return $blog_id;
-
if ( is_subdomain_install() ) {
- $domain = $slug . '.' . $current_site->domain;
- $path = $current_site->path;
+ $domain = $slug . '.' . preg_replace( '|^www\.|', '', $current_network->domain );
+ $path = $current_network->path;
} else {
- $domain = $current_site->domain;
- $path = $current_site->path . $slug . '/';
+ $domain = $current_network->domain;
+ $path = $current_network->path . $slug . '/';
}
- $blog_id = $wpdb->get_var( $wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE domain = %s AND path = %s", $domain, $path) );
- wp_cache_set( 'get_id_from_blogname_' . $slug, $blog_id, 'blog-details' );
- return $blog_id;
+ $site_ids = get_sites( array(
+ 'number' => 1,
+ 'fields' => 'ids',
+ 'domain' => $domain,
+ 'path' => $path,
+ ) );
+
+ if ( empty( $site_ids ) ) {
+ return null;
+ }
+
+ return array_shift( $site_ids );
}
/**
* Filters a blog's details.
*
* @since MU
+ * @deprecated 4.7.0 Use site_details
*
* @param object $details The blog details.
*/
- $details = apply_filters( 'blog_details', $details );
+ $details = apply_filters_deprecated( 'blog_details', array( $details ), '4.7.0', 'site_details' );
wp_cache_set( $blog_id . $all, $details, 'blog-details' );
$blog_id = get_current_blog_id();
}
- $details = get_blog_details( $blog_id, false );
+ $details = get_site( $blog_id );
if ( ! $details ) {
// Make sure clean_blog_cache() gets the blog ID
// when the blog has been previously cached as
if ( is_object($details) )
$details = get_object_vars($details);
- $current_details = get_blog_details($blog_id, false);
+ $current_details = get_site( $blog_id );
if ( empty($current_details) )
return false;
*
* @since 3.5.0
*
- * @param WP_Site $blog The blog details as returned from get_blog_details()
+ * @param WP_Site $blog The site object to be cleared from cache.
*/
function clean_blog_cache( $blog ) {
$blog_id = $blog->blog_id;
wp_cache_delete( $domain_path_key, 'blog-lookup' );
wp_cache_delete( 'current_blog_' . $blog->domain, 'site-options' );
wp_cache_delete( 'current_blog_' . $blog->domain . $blog->path, 'site-options' );
- wp_cache_delete( 'get_id_from_blogname_' . trim( $blog->path, '/' ), 'blog-details' );
wp_cache_delete( $domain_path_key, 'blog-id-cache' );
/**
* Default false.
* @type array $date_query Date query clauses to limit sites by. See WP_Date_Query.
* Default null.
- * @type string $fields Site fields to return. Accepts 'ids' for site IDs only or empty
- * for all fields. Default empty.
+ * @type string $fields Site fields to return. Accepts 'ids' (returns an array of site IDs)
+ * or empty (returns an array of complete site objects). Default empty.
* @type int $ID A site ID to only return that site. Default empty.
- * @type int $number Maximum number of sites to retrieve. Default null (no limit).
+ * @type int $number Maximum number of sites to retrieve. Default 100.
* @type int $offset Number of sites to offset the query. Used to build LIMIT clause.
* Default 0.
* @type bool $no_found_rows Whether to disable the `SQL_CALC_FOUND_ROWS` query. Default true.
* an empty array, or 'none' to disable `ORDER BY` clause.
* Default 'id'.
* @type string $order How to order retrieved sites. Accepts 'ASC', 'DESC'. Default 'ASC'.
- * @type int $network_id Limit results to those affiliated with a given network ID.
- * Default current network ID.
+ * @type int $network_id Limit results to those affiliated with a given network ID. If 0,
+ * include all networks. Default 0.
* @type array $network__in Array of network IDs to include affiliated sites for. Default empty.
* @type array $network__not_in Array of network IDs to exclude affiliated sites for. Default empty.
- * @type string $domain Limit results to those affiliated with a given domain.
- * Default empty.
+ * @type string $domain Limit results to those affiliated with a given domain. Default empty.
* @type array $domain__in Array of domains to include affiliated sites for. Default empty.
* @type array $domain__not_in Array of domains to exclude affiliated sites for. Default empty.
- * @type string $path Limit results to those affiliated with a given path.
- * Default empty.
+ * @type string $path Limit results to those affiliated with a given path. Default empty.
* @type array $path__in Array of paths to include affiliated sites for. Default empty.
* @type array $path__not_in Array of paths to exclude affiliated sites for. Default empty.
* @type int $public Limit results to public sites. Accepts '1' or '0'. Default empty.
* @type int $spam Limit results to spam sites. Accepts '1' or '0'. Default empty.
* @type int $deleted Limit results to deleted sites. Accepts '1' or '0'. Default empty.
* @type string $search Search term(s) to retrieve matching sites for. Default empty.
+ * @type array $search_columns Array of column names to be searched. Accepts 'domain' and 'path'.
+ * Default empty array.
* @type bool $update_site_cache Whether to prime the cache for found sites. Default false.
* }
* @return array List of sites.
* @return true Always returns True.
*/
function switch_to_blog( $new_blog, $deprecated = null ) {
- global $wpdb;
+ global $wpdb, $wp_roles;
- if ( empty( $new_blog ) )
- $new_blog = $GLOBALS['blog_id'];
+ $blog_id = get_current_blog_id();
+ if ( empty( $new_blog ) ) {
+ $new_blog = $blog_id;
+ }
- $GLOBALS['_wp_switched_stack'][] = $GLOBALS['blog_id'];
+ $GLOBALS['_wp_switched_stack'][] = $blog_id;
/*
* If we're switching to the same blog id that we're on,
* set the right vars, do the associated actions, but skip
* the extra unnecessary work
*/
- if ( $new_blog == $GLOBALS['blog_id'] ) {
+ if ( $new_blog == $blog_id ) {
/**
* Fires when the blog is switched.
*
$wpdb->set_blog_id( $new_blog );
$GLOBALS['table_prefix'] = $wpdb->get_blog_prefix();
- $prev_blog_id = $GLOBALS['blog_id'];
+ $prev_blog_id = $blog_id;
$GLOBALS['blog_id'] = $new_blog;
if ( function_exists( 'wp_cache_switch_to_blog' ) ) {
} else {
global $wp_object_cache;
- if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) )
+ if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) {
$global_groups = $wp_object_cache->global_groups;
- else
+ } else {
$global_groups = false;
-
+ }
wp_cache_init();
if ( function_exists( 'wp_cache_add_global_groups' ) ) {
}
if ( did_action( 'init' ) ) {
- wp_roles()->reinit();
+ $wp_roles = new WP_Roles();
$current_user = wp_get_current_user();
$current_user->for_blog( $new_blog );
}
* @return bool True on success, false if we're already on the current blog
*/
function restore_current_blog() {
- global $wpdb;
+ global $wpdb, $wp_roles;
- if ( empty( $GLOBALS['_wp_switched_stack'] ) )
+ if ( empty( $GLOBALS['_wp_switched_stack'] ) ) {
return false;
+ }
$blog = array_pop( $GLOBALS['_wp_switched_stack'] );
+ $blog_id = get_current_blog_id();
- if ( $GLOBALS['blog_id'] == $blog ) {
+ if ( $blog_id == $blog ) {
/** This filter is documented in wp-includes/ms-blogs.php */
do_action( 'switch_blog', $blog, $blog );
// If we still have items in the switched stack, consider ourselves still 'switched'
}
$wpdb->set_blog_id( $blog );
- $prev_blog_id = $GLOBALS['blog_id'];
+ $prev_blog_id = $blog_id;
$GLOBALS['blog_id'] = $blog;
$GLOBALS['table_prefix'] = $wpdb->get_blog_prefix();
} else {
global $wp_object_cache;
- if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) )
+ if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) {
$global_groups = $wp_object_cache->global_groups;
- else
+ } else {
$global_groups = false;
+ }
wp_cache_init();
}
if ( did_action( 'init' ) ) {
- wp_roles()->reinit();
+ $wp_roles = new WP_Roles();
$current_user = wp_get_current_user();
$current_user->for_blog( $blog );
}
function get_blog_status( $id, $pref ) {
global $wpdb;
- $details = get_blog_details( $id, false );
+ $details = get_site( $id );
if ( $details )
return $details->$pref;