WordPress.org

Make WordPress Core

Ticket #21459: 21459.2.diff

File 21459.2.diff, 11.3 KB (added by ryan, 21 months ago)
  • wp-includes/admin-bar.php

     
    344344        $blue_wp_logo_url = includes_url('images/wpmini-blue.png'); 
    345345 
    346346        foreach ( (array) $wp_admin_bar->user->blogs as $blog ) { 
    347                 // @todo Replace with some favicon lookup. 
    348                 //$blavatar = '<img src="' . esc_url( blavatar_url( blavatar_domain( $blog->siteurl ), 'img', 16, $blue_wp_logo_url ) ) . '" alt="Blavatar" width="16" height="16" />'; 
     347                switch_to_blog( $blog->userblog_id ); 
     348 
    349349                $blavatar = '<img src="' . esc_url($blue_wp_logo_url) . '" alt="' . esc_attr__( 'Blavatar' ) . '" width="16" height="16" class="blavatar"/>'; 
    350350 
    351351                $blogname = empty( $blog->blogname ) ? $blog->domain : $blog->blogname; 
     
    355355                        'parent'    => 'my-sites-list', 
    356356                        'id'        => $menu_id, 
    357357                        'title'     => $blavatar . $blogname, 
    358                         'href'      => get_admin_url( $blog->userblog_id ), 
     358                        'href'      => admin_url(), 
    359359                ) ); 
    360360 
    361361                $wp_admin_bar->add_menu( array( 
    362362                        'parent' => $menu_id, 
    363363                        'id'     => $menu_id . '-d', 
    364364                        'title'  => __( 'Dashboard' ), 
    365                         'href'   => get_admin_url( $blog->userblog_id ), 
     365                        'href'   => admin_url(), 
    366366                ) ); 
    367367 
    368                 if ( current_user_can_for_blog( $blog->userblog_id, 'edit_posts' ) ) { 
     368                if ( current_user_can( 'edit_posts' ) ) { 
    369369                        $wp_admin_bar->add_menu( array( 
    370370                                'parent' => $menu_id, 
    371371                                'id'     => $menu_id . '-n', 
    372372                                'title'  => __( 'New Post' ), 
    373                                 'href'   => get_admin_url( $blog->userblog_id, 'post-new.php' ), 
     373                                'href'   => admin_url( 'post-new.php' ), 
    374374                        ) ); 
    375375                        $wp_admin_bar->add_menu( array( 
    376376                                'parent' => $menu_id, 
    377377                                'id'     => $menu_id . '-c', 
    378378                                'title'  => __( 'Manage Comments' ), 
    379                                 'href'   => get_admin_url( $blog->userblog_id, 'edit-comments.php' ), 
     379                                'href'   => admin_url( 'edit-comments.php' ), 
    380380                        ) ); 
    381381                } 
    382382 
     
    384384                        'parent' => $menu_id, 
    385385                        'id'     => $menu_id . '-v', 
    386386                        'title'  => __( 'Visit Site' ), 
    387                         'href'   => get_home_url( $blog->userblog_id, '/' ), 
     387                        'href'   => home_url( '/' ), 
    388388                ) ); 
     389 
     390                restore_current_blog(); 
    389391        } 
    390392} 
    391393 
  • wp-includes/ms-blogs.php

     
    325325 * @since MU 
    326326 * 
    327327 * @param int $new_blog The id of the blog you want to switch to. Default: current blog 
    328  * @param bool $validate Whether to check if $new_blog exists before proceeding 
     328 * @param bool $deprecated Depecreated argument 
    329329 * @return bool True on success, False if the validation failed 
    330330 */ 
    331 function switch_to_blog( $new_blog, $validate = false ) { 
    332         global $wpdb, $table_prefix, $blog_id, $switched, $switched_stack, $wp_roles, $wp_object_cache; 
     331function switch_to_blog( $new_blog, $deprecated = null ) { 
     332        global $wpdb, $wp_roles; 
    333333 
    334         if ( empty($new_blog) ) 
    335                 $new_blog = $blog_id; 
     334        if ( empty( $new_blog ) ) 
     335                $new_blog = $GLOBALS['blog_id']; 
    336336 
    337         if ( $validate && ! get_blog_details( $new_blog ) ) 
    338                 return false; 
     337        $GLOBALS['_wp_switched_stack'][] = $GLOBALS['blog_id']; 
    339338 
    340         if ( empty($switched_stack) ) 
    341                 $switched_stack = array(); 
    342  
    343         $switched_stack[] = $blog_id; 
    344  
    345339        /* If we're switching to the same blog id that we're on, 
    346340        * set the right vars, do the associated actions, but skip 
    347341        * the extra unnecessary work */ 
    348         if ( $blog_id == $new_blog ) { 
    349                 do_action( 'switch_blog', $blog_id, $blog_id ); 
    350                 $switched = true; 
     342        if ( $new_blog == $GLOBALS['blog_id'] ) { 
     343                do_action( 'switch_blog', $new_blog, $new_blog ); 
     344                $GLOBALS['_wp_switched'] = true; 
    351345                return true; 
    352346        } 
    353347 
    354         $wpdb->set_blog_id($new_blog); 
    355         $table_prefix = $wpdb->prefix; 
    356         $prev_blog_id = $blog_id; 
    357         $blog_id = $new_blog; 
     348        $wpdb->set_blog_id( $new_blog ); 
     349        $GLOBALS['table_prefix'] = $wpdb->prefix; 
     350        $prev_blog_id = $GLOBALS['blog_id']; 
     351        $GLOBALS['blog_id'] = $new_blog; 
    358352 
    359         if ( is_object( $wp_roles ) ) { 
    360                 $wpdb->suppress_errors(); 
    361                 if ( method_exists( $wp_roles ,'_init' ) ) 
    362                         $wp_roles->_init(); 
    363                 elseif ( method_exists( $wp_roles, '__construct' ) ) 
    364                         $wp_roles->__construct(); 
    365                 $wpdb->suppress_errors( false ); 
    366         } 
    367  
    368         if ( did_action('init') ) { 
     353        if ( did_action( 'init' ) ) { 
     354                $wp_roles->reinit(); 
    369355                $current_user = wp_get_current_user(); 
    370                 if ( is_object( $current_user ) ) 
    371                         $current_user->for_blog( $blog_id ); 
     356                $current_user->for_blog( $new_blog ); 
    372357        } 
    373358 
    374359        if ( function_exists( 'wp_cache_switch_to_blog' ) ) { 
    375                 wp_cache_switch_to_blog( $blog_id ); 
     360                wp_cache_switch_to_blog( $new_blog ); 
    376361        } else { 
     362                global $wp_object_cache; 
     363 
    377364                if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) 
    378365                        $global_groups = $wp_object_cache->global_groups; 
    379366                else 
    380367                        $global_groups = false; 
    381368         
    382369                wp_cache_init(); 
    383                 if ( function_exists('wp_cache_add_global_groups') ) { 
     370 
     371                if ( function_exists( 'wp_cache_add_global_groups' ) ) { 
    384372                        if ( is_array( $global_groups ) ) 
    385373                                wp_cache_add_global_groups( $global_groups ); 
    386374                        else 
    387375                                wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts' ) ); 
    388                         wp_cache_add_non_persistent_groups(array( 'comment', 'counts', 'plugins' )); 
     376                        wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) ); 
    389377                } 
    390378        } 
    391379 
    392         do_action('switch_blog', $blog_id, $prev_blog_id); 
    393         $switched = true; 
     380        do_action( 'switch_blog', $new_blog, $prev_blog_id ); 
     381        $GLOBALS['_wp_switched'] = true; 
     382 
    394383        return true; 
    395384} 
    396385 
     
    403392 * @return bool True on success, False if we're already on the current blog 
    404393 */ 
    405394function restore_current_blog() { 
    406         global $table_prefix, $wpdb, $blog_id, $switched, $switched_stack, $wp_roles, $wp_object_cache; 
     395        global $wpdb, $wp_roles; 
    407396 
    408         if ( !$switched ) 
     397        if ( ! $GLOBALS['_wp_switched'] ) 
    409398                return false; 
    410399 
    411         if ( !is_array( $switched_stack ) ) 
    412                 return false; 
     400        $blog = array_pop( $GLOBALS['_wp_switched_stack'] ); 
    413401 
    414         $blog = array_pop( $switched_stack ); 
    415         if ( $blog_id == $blog ) { 
     402        if ( $GLOBALS['blog_id'] == $blog ) { 
    416403                do_action( 'switch_blog', $blog, $blog ); 
    417                 /* If we still have items in the switched stack, consider ourselves still 'switched' */ 
    418                 $switched = ( is_array( $switched_stack ) && count( $switched_stack ) > 0 ); 
     404                // If we still have items in the switched stack, consider ourselves still 'switched' 
     405                $GLOBALS['_wp_switched'] = ! empty( $GLOBALS['_wp_switched_stack'] ); 
    419406                return true; 
    420407        } 
    421408 
    422         $wpdb->set_blog_id($blog); 
    423         $prev_blog_id = $blog_id; 
    424         $blog_id = $blog; 
    425         $table_prefix = $wpdb->prefix; 
     409        $wpdb->set_blog_id( $blog ); 
     410        $prev_blog_id = $GLOBALS['blog_id']; 
     411        $GLOBALS['blog_id'] = $blog; 
     412        $GLOBALS['table_prefix'] = $wpdb->prefix; 
    426413 
    427         if ( is_object( $wp_roles ) ) { 
    428                 $wpdb->suppress_errors(); 
    429                 if ( method_exists( $wp_roles ,'_init' ) ) 
    430                         $wp_roles->_init(); 
    431                 elseif ( method_exists( $wp_roles, '__construct' ) ) 
    432                         $wp_roles->__construct(); 
    433                 $wpdb->suppress_errors( false ); 
    434         } 
    435  
    436         if ( did_action('init') ) { 
     414        if ( did_action( 'init' ) ) { 
     415                $wp_roles->reinit(); 
    437416                $current_user = wp_get_current_user(); 
    438                 if ( is_object( $current_user ) ) 
    439                         $current_user->for_blog( $blog_id ); 
     417                $current_user->for_blog( $blog ); 
    440418        } 
    441419 
    442420        if ( function_exists( 'wp_cache_switch_to_blog' ) ) { 
    443                 wp_cache_switch_to_blog( $blog_id ); 
     421                wp_cache_switch_to_blog( $blog ); 
    444422        } else { 
     423                global $wp_object_cache; 
     424 
    445425                if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) 
    446426                        $global_groups = $wp_object_cache->global_groups; 
    447427                else 
    448428                        $global_groups = false; 
    449429         
    450430                wp_cache_init(); 
    451                 if ( function_exists('wp_cache_add_global_groups') ) { 
     431 
     432                if ( function_exists( 'wp_cache_add_global_groups' ) ) { 
    452433                        if ( is_array( $global_groups ) ) 
    453434                                wp_cache_add_global_groups( $global_groups ); 
    454435                        else 
    455436                                wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts' ) ); 
    456                         wp_cache_add_non_persistent_groups(array( 'comment', 'counts', 'plugins' )); 
     437                        wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) ); 
    457438                } 
    458439        } 
    459440 
    460         do_action('switch_blog', $blog_id, $prev_blog_id); 
     441        do_action( 'switch_blog', $blog, $prev_blog_id ); 
    461442 
    462         /* If we still have items in the switched stack, consider ourselves still 'switched' */ 
    463         $switched = ( is_array( $switched_stack ) && count( $switched_stack ) > 0 ); 
     443        // If we still have items in the switched stack, consider ourselves still 'switched' 
     444        $GLOBALS['_wp_switched'] = ! empty( $GLOBALS['_wp_switched_stack'] ); 
     445 
    464446        return true; 
    465447} 
    466448 
  • wp-includes/capabilities.php

     
    108108 
    109109                $this->role_objects = array(); 
    110110                $this->role_names =  array(); 
    111                 foreach ( (array) $this->roles as $role => $data ) { 
     111                foreach ( array_keys( $this->roles ) as $role ) { 
    112112                        $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] ); 
    113113                        $this->role_names[$role] = $this->roles[$role]['name']; 
    114114                } 
    115115        } 
    116116 
    117117        /** 
     118         * Reinitialize the object 
     119         * 
     120         * Recreates the role objects. This is typically called only by switch_to_blog() 
     121         * after switching wpdb to a new blog ID. 
     122         * 
     123         * @since 3.5.0 
     124         * @access public 
     125         */ 
     126        function reinit() { 
     127                // There is no need to reinit if using the wp_user_roles global. 
     128                if ( ! $this->use_db ) 
     129                        return; 
     130 
     131                global $wpdb, $wp_user_roles; 
     132 
     133                // Duplicated from _init() to avoid an extra function call. 
     134                $this->role_key = $wpdb->prefix . 'user_roles'; 
     135                $this->roles = get_option( $this->role_key ); 
     136                if ( empty( $this->roles ) ) 
     137                        return; 
     138 
     139                $this->role_objects = array(); 
     140                $this->role_names =  array(); 
     141                foreach ( array_keys( $this->roles ) as $role ) { 
     142                        $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] ); 
     143                        $this->role_names[$role] = $this->roles[$role]['name']; 
     144                } 
     145        } 
     146 
     147        /** 
    118148         * Add role name with capabilities to list. 
    119149         * 
    120150         * Updates the list of roles, if the role doesn't already exist. 
     
    233263         * @param string $role Role name to look up. 
    234264         * @return bool 
    235265         */ 
    236         function is_role( $role ) 
    237         { 
     266        function is_role( $role ) { 
    238267                return isset( $this->role_names[$role] ); 
    239268        } 
    240269} 
  • wp-includes/ms-settings.php

     
    126126$wpdb->set_prefix( $table_prefix, false ); // $table_prefix can be set in sunrise.php 
    127127$wpdb->set_blog_id( $current_blog->blog_id, $current_blog->site_id ); 
    128128$table_prefix = $wpdb->get_blog_prefix(); 
     129$_wp_switched_stack = array(); 
     130$_wp_switched = false; 
    129131 
    130132// need to init cache again after blog_id is set 
    131133wp_start_object_cache(); 
  • wp-settings.php

     
    252252 */ 
    253253$GLOBALS['wp_widget_factory'] = new WP_Widget_Factory(); 
    254254 
     255/** 
     256 * WordPress User Roles 
     257 * @global object $wp_roles 
     258 * @since 2.0.0 
     259 */ 
     260$GLOBALS['wp_roles'] = new WP_Roles(); 
     261 
    255262do_action( 'setup_theme' ); 
    256263 
    257264// Define the template related constants.