WordPress.org

Make WordPress Core

Ticket #18387: 18387.diff

File 18387.diff, 4.8 KB (added by ryan, 6 years ago)

Down the rabbit hole

  • wp-includes/load.php

     
    409409                wp_cache_init();
    410410
    411411        if ( function_exists( 'wp_cache_add_global_groups' ) ) {
    412                 wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts' ) );
     412                wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
    413413                wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
    414414        }
    415415}
  • wp-includes/ms-blogs.php

     
    253253        $blog_id = (int) $blog_id;
    254254        $details = get_blog_details( $blog_id, false );
    255255
    256         wp_cache_delete( $blog_id , 'blog-details' );
    257         wp_cache_delete( $blog_id . 'short' , 'blog-details' );
    258         wp_cache_delete( md5( $details->domain . $details->path )  , 'blog-lookup' );
    259         wp_cache_delete( 'current_blog_' . $details->domain, 'site-options' );
    260         wp_cache_delete( 'current_blog_' . $details->domain . $details->path, 'site-options' );
    261         wp_cache_delete( 'get_id_from_blogname_' . trim( $details->path, '/' ), 'blog-details' );
     256        clean_blog_cache( $details );
    262257
    263258        do_action( 'refresh_blog_details', $blog_id );
    264259}
     
    317312}
    318313
    319314/**
     315 * Clean the blog cache
     316 *
     317 * @since 3.5.0
     318 *
     319 * @param stdClass $blog The blog details as returned from get_blog_details()
     320 */
     321function clean_blog_cache( $blog ) {
     322        $blog_id = $blog->blog_id;
     323        $domain_path_key = md5( $blog->domain . $blog->path );
     324
     325        wp_cache_delete( $blog_id , 'blog-details' );
     326        wp_cache_delete( $blog_id . 'short' , 'blog-details' );
     327        wp_cache_delete(  $domain_path_key, 'blog-lookup' );
     328        wp_cache_delete( 'current_blog_' . $blog->domain, 'site-options' );
     329        wp_cache_delete( 'current_blog_' . $blog->domain . $blog->path, 'site-options' );
     330        wp_cache_delete( 'get_id_from_blogname_' . trim( $blog->path, '/' ), 'blog-details' );
     331        wp_cache_delete( $domain_path_key, 'blog-id-cache' );
     332}
     333
     334/**
    320335 * Retrieve option value for a given blog id based on name of option.
    321336 *
    322337 * If the option does not exist or does not have a value, then the return value
  • wp-includes/ms-functions.php

     
    332332 *
    333333 * @param string $domain
    334334 * @param string $path Optional. Not required for subdomain installations.
    335  * @return int
     335 * @return int 0 if no blog found, otherwise the ID of the matching blog
    336336 */
    337337function get_blog_id_from_url( $domain, $path = '/' ) {
    338338        global $wpdb;
    339339
    340         $domain = strtolower( $wpdb->escape( $domain ) );
    341         $path = strtolower( $wpdb->escape( $path ) );
     340        $domain = strtolower( $domain );
     341        $path = strtolower( $path );
    342342        $id = wp_cache_get( md5( $domain . $path ), 'blog-id-cache' );
    343343
    344         if ( $id == -1 ) { // blog does not exist
     344        if ( $id == -1 ) // blog does not exist
    345345                return 0;
    346         } elseif ( $id ) {
    347                 return (int)$id;
    348         }
     346        elseif ( $id )
     347                return (int) $id;
    349348
    350         $id = $wpdb->get_var( "SELECT blog_id FROM $wpdb->blogs WHERE domain = '$domain' and path = '$path' /* get_blog_id_from_url */" );
     349        $id = $wpdb->get_var( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE domain = %s and path = %s /* get_blog_id_from_url */", $domain, $path ) );
    351350
    352         if ( !$id ) {
     351        if ( ! $id ) {
    353352                wp_cache_set( md5( $domain . $path ), -1, 'blog-id-cache' );
    354                 return false;
     353                return 0;
    355354        }
     355
    356356        wp_cache_set( md5( $domain . $path ), $id, 'blog-id-cache' );
    357357
    358358        return $id;
  • wp-admin/includes/ms.php

     
    5555        global $wpdb, $current_site;
    5656
    5757        $switch = false;
    58         if ( $blog_id != $wpdb->blogid ) {
     58        if ( get_current_blog_id() != $blog_id ) {
    5959                $switch = true;
    6060                switch_to_blog( $blog_id );
    61                 $blog = get_blog_details( $blog_id );
    62         } else {
    63                 $blog = $GLOBALS['current_blog'];
    6461        }
    6562
     63        $blog = get_blog_details( $blog_id );
     64
    6665        do_action( 'delete_blog', $blog_id, $drop );
    6766
    6867        $users = get_users( array( 'blog_id' => $blog_id, 'fields' => 'ids' ) );
     
    8180                $drop = false;
    8281
    8382        if ( $drop ) {
    84 
    8583                $drop_tables = apply_filters( 'wpmu_drop_tables', $wpdb->tables( 'blog' ) );
    8684
    8785                foreach ( (array) $drop_tables as $table ) {
     
    122120                        if ( $dir != $top_dir)
    123121                        @rmdir( $dir );
    124122                }
     123
     124                clean_blog_cache( $blog );
    125125        }
    126126
    127127        if ( $switch )