X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/febc815b2c9d85be5717da9e8d164bd2daa97e31..16e7b37c7914d753890c1a05a9335f3b43751eb8:/wp-includes/ms-blogs.php diff --git a/wp-includes/ms-blogs.php b/wp-includes/ms-blogs.php index ccafd047..91887503 100644 --- a/wp-includes/ms-blogs.php +++ b/wp-includes/ms-blogs.php @@ -38,7 +38,7 @@ function wpmu_update_blogs_date() { * @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 ''; @@ -72,36 +72,38 @@ function get_blogaddress_by_name( $blogname ) { } /** - * 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 ); } /** @@ -238,10 +240,11 @@ function get_blog_details( $fields = null, $get_all = true ) { * 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' ); @@ -264,7 +267,7 @@ function refresh_blog_details( $blog_id = 0 ) { $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 @@ -308,7 +311,7 @@ function update_blog_details( $blog_id, $details = array() ) { 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; @@ -440,7 +443,7 @@ function update_blog_details( $blog_id, $details = array() ) { * * @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; @@ -453,7 +456,6 @@ function clean_blog_cache( $blog ) { 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' ); /** @@ -566,10 +568,10 @@ function update_site_cache( $sites ) { * 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. @@ -579,16 +581,14 @@ function update_site_cache( $sites ) { * 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. @@ -597,6 +597,8 @@ function update_site_cache( $sites ) { * @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. @@ -764,19 +766,21 @@ function update_blog_option( $id, $option, $value, $deprecated = null ) { * @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. * @@ -792,7 +796,7 @@ function switch_to_blog( $new_blog, $deprecated = null ) { $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' ) ) { @@ -800,11 +804,11 @@ function switch_to_blog( $new_blog, $deprecated = null ) { } 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' ) ) { @@ -818,7 +822,7 @@ function switch_to_blog( $new_blog, $deprecated = null ) { } if ( did_action( 'init' ) ) { - wp_roles()->reinit(); + $wp_roles = new WP_Roles(); $current_user = wp_get_current_user(); $current_user->for_blog( $new_blog ); } @@ -846,14 +850,16 @@ function switch_to_blog( $new_blog, $deprecated = null ) { * @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' @@ -862,7 +868,7 @@ function restore_current_blog() { } $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(); @@ -871,10 +877,11 @@ function restore_current_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(); @@ -889,7 +896,7 @@ function restore_current_blog() { } if ( did_action( 'init' ) ) { - wp_roles()->reinit(); + $wp_roles = new WP_Roles(); $current_user = wp_get_current_user(); $current_user->for_blog( $blog ); } @@ -1032,7 +1039,7 @@ function update_blog_status( $blog_id, $pref, $value, $deprecated = null ) { function get_blog_status( $id, $pref ) { global $wpdb; - $details = get_blog_details( $id, false ); + $details = get_site( $id ); if ( $details ) return $details->$pref;