WordPress.org

Make WordPress Core

Ticket #18387: 18387.diff

File 18387.diff, 4.8 KB (added by ryan, 19 months 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 )