Changeset 21485
- Timestamp:
- 08/09/2012 04:28:15 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/admin-bar.php
r21425 r21485 345 345 346 346 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 349 349 $blavatar = '<img src="' . esc_url($blue_wp_logo_url) . '" alt="' . esc_attr__( 'Blavatar' ) . '" width="16" height="16" class="blavatar"/>'; 350 350 … … 356 356 'id' => $menu_id, 357 357 'title' => $blavatar . $blogname, 358 'href' => get_admin_url( $blog->userblog_id),358 'href' => admin_url(), 359 359 ) ); 360 360 … … 363 363 'id' => $menu_id . '-d', 364 364 'title' => __( 'Dashboard' ), 365 'href' => get_admin_url( $blog->userblog_id),366 ) ); 367 368 if ( current_user_can _for_blog( $blog->userblog_id,'edit_posts' ) ) {365 'href' => admin_url(), 366 ) ); 367 368 if ( current_user_can( 'edit_posts' ) ) { 369 369 $wp_admin_bar->add_menu( array( 370 370 'parent' => $menu_id, 371 371 'id' => $menu_id . '-n', 372 372 'title' => __( 'New Post' ), 373 'href' => get_admin_url( $blog->userblog_id,'post-new.php' ),373 'href' => admin_url( 'post-new.php' ), 374 374 ) ); 375 375 $wp_admin_bar->add_menu( array( … … 377 377 'id' => $menu_id . '-c', 378 378 'title' => __( 'Manage Comments' ), 379 'href' => get_admin_url( $blog->userblog_id,'edit-comments.php' ),379 'href' => admin_url( 'edit-comments.php' ), 380 380 ) ); 381 381 } … … 385 385 'id' => $menu_id . '-v', 386 386 'title' => __( 'Visit Site' ), 387 'href' => get_home_url( $blog->userblog_id, '/' ), 388 ) ); 387 'href' => home_url( '/' ), 388 ) ); 389 390 restore_current_blog(); 389 391 } 390 392 } -
trunk/wp-includes/capabilities.php
r21413 r21485 109 109 $this->role_objects = array(); 110 110 $this->role_names = array(); 111 foreach ( (array) $this->roles as $role => $data ) { 111 foreach ( array_keys( $this->roles ) as $role ) { 112 $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] ); 113 $this->role_names[$role] = $this->roles[$role]['name']; 114 } 115 } 116 117 /** 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 ) { 112 142 $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] ); 113 143 $this->role_names[$role] = $this->roles[$role]['name']; … … 234 264 * @return bool 235 265 */ 236 function is_role( $role ) 237 { 266 function is_role( $role ) { 238 267 return isset( $this->role_names[$role] ); 239 268 } … … 1232 1261 */ 1233 1262 function current_user_can_for_blog( $blog_id, $capability ) { 1263 switch_to_blog( $blog_id ); 1264 1234 1265 $current_user = wp_get_current_user(); 1235 1266 … … 1237 1268 return false; 1238 1269 1239 // Create new object to avoid stomping the global current_user.1240 $user = new WP_User( $current_user->ID );1241 1242 // Set the blog id. @todo add blog id arg to WP_User constructor?1243 $user->for_blog( $blog_id );1244 1245 1270 $args = array_slice( func_get_args(), 2 ); 1246 1271 $args = array_merge( array( $capability ), $args ); 1247 1272 1248 return call_user_func_array( array( &$user, 'has_cap' ), $args ); 1273 $can = call_user_func_array( array( $current_user, 'has_cap' ), $args ); 1274 1275 restore_current_blog(); 1276 1277 return $can; 1249 1278 } 1250 1279 -
trunk/wp-includes/class-wp-xmlrpc-server.php
r21414 r21485 474 474 475 475 $blog_id = $blog->userblog_id; 476 $is_admin = current_user_can_for_blog( $blog_id, 'manage_options' );477 476 478 477 switch_to_blog( $blog_id ); 478 479 $is_admin = current_user_can( 'manage_options' ); 480 479 481 $struct[] = array( 480 482 'isAdmin' => $is_admin, … … 484 486 'xmlrpc' => site_url( 'xmlrpc.php' ) 485 487 ); 488 486 489 restore_current_blog(); 487 490 } -
trunk/wp-includes/functions.php
r21373 r21485 1433 1433 */ 1434 1434 function wp_upload_dir( $time = null ) { 1435 global $ switched;1435 global $_wp_switched; 1436 1436 $siteurl = get_option( 'siteurl' ); 1437 1437 $upload_path = get_option( 'upload_path' ); … … 1457 1457 } 1458 1458 1459 if ( defined('UPLOADS') && ! $main_override && ( !isset( $switched ) || $switched === false )) {1459 if ( defined('UPLOADS') && ! $main_override && ! $_wp_switched ) { 1460 1460 $dir = ABSPATH . UPLOADS; 1461 1461 $url = trailingslashit( $siteurl ) . UPLOADS; 1462 1462 } 1463 1463 1464 if ( is_multisite() && ! $main_override && ( !isset( $switched ) || $switched === false )) {1464 if ( is_multisite() && ! $main_override && ! $_wp_switched ) { 1465 1465 if ( defined( 'BLOGUPLOADDIR' ) ) 1466 1466 $dir = untrailingslashit(BLOGUPLOADDIR); -
trunk/wp-includes/ms-blogs.php
r21480 r21485 447 447 * 448 448 * @param int $new_blog The id of the blog you want to switch to. Default: current blog 449 * @param bool $ validate Whether to check if $new_blog exists before proceeding449 * @param bool $deprecated Depecreated argument 450 450 * @return bool True on success, False if the validation failed 451 451 */ 452 function switch_to_blog( $new_blog, $validate = false ) { 453 global $wpdb, $table_prefix, $blog_id, $switched, $switched_stack, $wp_roles, $wp_object_cache; 454 455 if ( empty($new_blog) ) 456 $new_blog = $blog_id; 457 458 if ( $validate && ! get_blog_details( $new_blog ) ) 459 return false; 460 461 if ( empty($switched_stack) ) 462 $switched_stack = array(); 463 464 $switched_stack[] = $blog_id; 452 function switch_to_blog( $new_blog, $deprecated = null ) { 453 global $wpdb, $wp_roles; 454 455 if ( empty( $new_blog ) ) 456 $new_blog = $GLOBALS['blog_id']; 457 458 $GLOBALS['_wp_switched_stack'][] = $GLOBALS['blog_id']; 465 459 466 460 /* If we're switching to the same blog id that we're on, 467 461 * set the right vars, do the associated actions, but skip 468 462 * the extra unnecessary work */ 469 if ( $ blog_id == $new_blog) {470 do_action( 'switch_blog', $ blog_id, $blog_id);471 $ switched= true;463 if ( $new_blog == $GLOBALS['blog_id'] ) { 464 do_action( 'switch_blog', $new_blog, $new_blog ); 465 $GLOBALS['_wp_switched'] = true; 472 466 return true; 473 467 } 474 468 475 $wpdb->set_blog_id($new_blog); 476 $table_prefix = $wpdb->prefix; 477 $prev_blog_id = $blog_id; 478 $blog_id = $new_blog; 479 480 if ( is_object( $wp_roles ) ) { 481 $wpdb->suppress_errors(); 482 if ( method_exists( $wp_roles ,'_init' ) ) 483 $wp_roles->_init(); 484 elseif ( method_exists( $wp_roles, '__construct' ) ) 485 $wp_roles->__construct(); 486 $wpdb->suppress_errors( false ); 487 } 488 489 if ( did_action('init') ) { 469 $wpdb->set_blog_id( $new_blog ); 470 $GLOBALS['table_prefix'] = $wpdb->prefix; 471 $prev_blog_id = $GLOBALS['blog_id']; 472 $GLOBALS['blog_id'] = $new_blog; 473 474 if ( did_action( 'init' ) ) { 475 $wp_roles->reinit(); 490 476 $current_user = wp_get_current_user(); 491 if ( is_object( $current_user ) ) 492 $current_user->for_blog( $blog_id ); 477 $current_user->for_blog( $new_blog ); 493 478 } 494 479 495 480 if ( function_exists( 'wp_cache_switch_to_blog' ) ) { 496 wp_cache_switch_to_blog( $ blog_id);481 wp_cache_switch_to_blog( $new_blog ); 497 482 } else { 483 global $wp_object_cache; 484 498 485 if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) 499 486 $global_groups = $wp_object_cache->global_groups; … … 502 489 503 490 wp_cache_init(); 504 if ( function_exists('wp_cache_add_global_groups') ) { 491 492 if ( function_exists( 'wp_cache_add_global_groups' ) ) { 505 493 if ( is_array( $global_groups ) ) 506 494 wp_cache_add_global_groups( $global_groups ); 507 495 else 508 496 wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts' ) ); 509 wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ));497 wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) ); 510 498 } 511 499 } 512 500 513 do_action('switch_blog', $blog_id, $prev_blog_id); 514 $switched = true; 501 do_action( 'switch_blog', $new_blog, $prev_blog_id ); 502 $GLOBALS['_wp_switched'] = true; 503 515 504 return true; 516 505 } … … 525 514 */ 526 515 function restore_current_blog() { 527 global $ table_prefix, $wpdb, $blog_id, $switched, $switched_stack, $wp_roles, $wp_object_cache;528 529 if ( ! $switched)516 global $wpdb, $wp_roles; 517 518 if ( ! $GLOBALS['_wp_switched'] ) 530 519 return false; 531 520 532 if ( !is_array( $switched_stack ) ) 533 return false; 534 535 $blog = array_pop( $switched_stack ); 536 if ( $blog_id == $blog ) { 521 $blog = array_pop( $GLOBALS['_wp_switched_stack'] ); 522 523 if ( $GLOBALS['blog_id'] == $blog ) { 537 524 do_action( 'switch_blog', $blog, $blog ); 538 / * If we still have items in the switched stack, consider ourselves still 'switched' */539 $ switched = ( is_array( $switched_stack ) && count( $switched_stack ) > 0);525 // If we still have items in the switched stack, consider ourselves still 'switched' 526 $GLOBALS['_wp_switched'] = ! empty( $GLOBALS['_wp_switched_stack'] ); 540 527 return true; 541 528 } 542 529 543 $wpdb->set_blog_id($blog); 544 $prev_blog_id = $blog_id; 545 $blog_id = $blog; 546 $table_prefix = $wpdb->prefix; 547 548 if ( is_object( $wp_roles ) ) { 549 $wpdb->suppress_errors(); 550 if ( method_exists( $wp_roles ,'_init' ) ) 551 $wp_roles->_init(); 552 elseif ( method_exists( $wp_roles, '__construct' ) ) 553 $wp_roles->__construct(); 554 $wpdb->suppress_errors( false ); 555 } 556 557 if ( did_action('init') ) { 530 $wpdb->set_blog_id( $blog ); 531 $prev_blog_id = $GLOBALS['blog_id']; 532 $GLOBALS['blog_id'] = $blog; 533 $GLOBALS['table_prefix'] = $wpdb->prefix; 534 535 if ( did_action( 'init' ) ) { 536 $wp_roles->reinit(); 558 537 $current_user = wp_get_current_user(); 559 if ( is_object( $current_user ) ) 560 $current_user->for_blog( $blog_id ); 538 $current_user->for_blog( $blog ); 561 539 } 562 540 563 541 if ( function_exists( 'wp_cache_switch_to_blog' ) ) { 564 wp_cache_switch_to_blog( $blog _id);542 wp_cache_switch_to_blog( $blog ); 565 543 } else { 544 global $wp_object_cache; 545 566 546 if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) 567 547 $global_groups = $wp_object_cache->global_groups; … … 570 550 571 551 wp_cache_init(); 572 if ( function_exists('wp_cache_add_global_groups') ) { 552 553 if ( function_exists( 'wp_cache_add_global_groups' ) ) { 573 554 if ( is_array( $global_groups ) ) 574 555 wp_cache_add_global_groups( $global_groups ); 575 556 else 576 557 wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts' ) ); 577 wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ));558 wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) ); 578 559 } 579 560 } 580 561 581 do_action('switch_blog', $blog_id, $prev_blog_id); 582 583 /* If we still have items in the switched stack, consider ourselves still 'switched' */ 584 $switched = ( is_array( $switched_stack ) && count( $switched_stack ) > 0 ); 562 do_action( 'switch_blog', $blog, $prev_blog_id ); 563 564 // If we still have items in the switched stack, consider ourselves still 'switched' 565 $GLOBALS['_wp_switched'] = ! empty( $GLOBALS['_wp_switched_stack'] ); 566 585 567 return true; 586 568 } -
trunk/wp-includes/ms-settings.php
r19760 r21485 127 127 $wpdb->set_blog_id( $current_blog->blog_id, $current_blog->site_id ); 128 128 $table_prefix = $wpdb->get_blog_prefix(); 129 $_wp_switched_stack = array(); 130 $_wp_switched = false; 129 131 130 132 // need to init cache again after blog_id is set -
trunk/wp-settings.php
r21186 r21485 253 253 $GLOBALS['wp_widget_factory'] = new WP_Widget_Factory(); 254 254 255 /** 256 * WordPress User Roles 257 * @global object $wp_roles 258 * @since 2.0.0 259 */ 260 $GLOBALS['wp_roles'] = new WP_Roles(); 261 255 262 do_action( 'setup_theme' ); 256 263
Note: See TracChangeset
for help on using the changeset viewer.