Changeset 15671 for trunk/wp-includes
- Timestamp:
- 09/27/2010 08:26:36 PM (14 years ago)
- Location:
- trunk/wp-includes
- Files:
-
- 9 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/ms-functions.php
r15621 r15671 29 29 30 30 return false; 31 }32 33 function get_blogs_of_user( $id, $all = false ) {34 global $wpdb;35 36 $cache_suffix = $all ? '_all' : '_short';37 $return = wp_cache_get( 'blogs_of_user_' . $id . $cache_suffix, 'users' );38 if ( $return )39 return apply_filters( 'get_blogs_of_user', $return, $id, $all );40 41 $user = get_userdata( (int) $id );42 if ( !$user )43 return false;44 45 $blogs = $match = array();46 $prefix_length = strlen($wpdb->base_prefix);47 foreach ( (array) $user as $key => $value ) {48 if ( $prefix_length && substr($key, 0, $prefix_length) != $wpdb->base_prefix )49 continue;50 if ( substr($key, -12, 12) != 'capabilities' )51 continue;52 if ( preg_match( '/^' . $wpdb->base_prefix . '((\d+)_)?capabilities$/', $key, $match ) ) {53 if ( count( $match ) > 2 )54 $blog_id = $match[ 2 ];55 else56 $blog_id = 1;57 $blog = get_blog_details( $blog_id );58 if ( $blog && isset( $blog->domain ) && ( $all == true || $all == false && ( $blog->archived == 0 && $blog->spam == 0 && $blog->deleted == 0 ) ) ) {59 $blogs[ $blog_id ]->userblog_id = $blog_id;60 $blogs[ $blog_id ]->blogname = $blog->blogname;61 $blogs[ $blog_id ]->domain = $blog->domain;62 $blogs[ $blog_id ]->path = $blog->path;63 $blogs[ $blog_id ]->site_id = $blog->site_id;64 $blogs[ $blog_id ]->siteurl = $blog->siteurl;65 }66 }67 }68 69 wp_cache_add( 'blogs_of_user_' . $id . $cache_suffix, $blogs, 'users', 5 );70 return apply_filters( 'get_blogs_of_user', $blogs, $id, $all );71 31 } 72 32 … … 367 327 } 368 328 369 function is_blog_user( $blog_id = 0 ) {370 global $wpdb;371 372 $current_user = wp_get_current_user();373 if ( !$blog_id )374 $blog_id = $wpdb->blogid;375 376 $cap_key = $wpdb->base_prefix . $blog_id . '_capabilities';377 378 if ( is_array($current_user->$cap_key) && in_array(1, $current_user->$cap_key) )379 return true;380 381 return false;382 }383 384 329 function is_email_address_unsafe( $user_email ) { 385 330 $banned_names = get_site_option( 'banned_email_domains' ); -
trunk/wp-includes/user.php
r15590 r15671 576 576 577 577 /** 578 * Get the blogs a user belong to. 579 * 580 * $since 3.0.0 581 * 582 * @param int $id User Id 583 * @param bool $all Whether to retrieve all blog details or an abbreviated set of details. Default is abbreviated. 584 * @return array A list of the user's blogs. 585 */ 586 function get_blogs_of_user( $id, $all = false ) { 587 global $wpdb; 588 589 if ( !is_multisite() ) { 590 global $blog_id; 591 $blogs = array(); 592 $blogs[ $blog_id ]->userblog_id = $blog_id; 593 $blogs[ $blog_id ]->blogname = get_option('blogname'); 594 $blogs[ $blog_id ]->domain = ''; 595 $blogs[ $blog_id ]->path = ''; 596 $blogs[ $blog_id ]->site_id = 1; 597 $blogs[ $blog_id ]->siteurl = get_option('siteurl'); 598 return $blogs; 599 } 600 601 $cache_suffix = $all ? '_all' : '_short'; 602 $return = wp_cache_get( 'blogs_of_user_' . $id . $cache_suffix, 'users' ); 603 if ( $return ) 604 return apply_filters( 'get_blogs_of_user', $return, $id, $all ); 605 606 $user = get_userdata( (int) $id ); 607 if ( !$user ) 608 return false; 609 610 $blogs = $match = array(); 611 $prefix_length = strlen($wpdb->base_prefix); 612 foreach ( (array) $user as $key => $value ) { 613 if ( $prefix_length && substr($key, 0, $prefix_length) != $wpdb->base_prefix ) 614 continue; 615 if ( substr($key, -12, 12) != 'capabilities' ) 616 continue; 617 if ( preg_match( '/^' . $wpdb->base_prefix . '((\d+)_)?capabilities$/', $key, $match ) ) { 618 if ( count( $match ) > 2 ) 619 $blog_id = $match[ 2 ]; 620 else 621 $blog_id = 1; 622 $blog = get_blog_details( $blog_id ); 623 if ( $blog && isset( $blog->domain ) && ( $all == true || $all == false && ( $blog->archived == 0 && $blog->spam == 0 && $blog->deleted == 0 ) ) ) { 624 $blogs[ $blog_id ]->userblog_id = $blog_id; 625 $blogs[ $blog_id ]->blogname = $blog->blogname; 626 $blogs[ $blog_id ]->domain = $blog->domain; 627 $blogs[ $blog_id ]->path = $blog->path; 628 $blogs[ $blog_id ]->site_id = $blog->site_id; 629 $blogs[ $blog_id ]->siteurl = $blog->siteurl; 630 } 631 } 632 } 633 634 wp_cache_add( 'blogs_of_user_' . $id . $cache_suffix, $blogs, 'users', 5 ); 635 return apply_filters( 'get_blogs_of_user', $blogs, $id, $all ); 636 } 637 638 function get_ordered_blogs_of_user( $user_id, $visibility = true ) { 639 $newblogs = $ordered = array(); 640 $blogs = get_blogs_of_user( $user_id ); 641 $order_meta = get_user_meta( $user_id, 'blog_order' ); 642 $visible_meta = get_user_meta( $user_id, 'blog_visibility' ); 643 644 $order = $order_meta; 645 if ( !is_array( $order ) ) 646 $order = array(); 647 648 $visible = $visible_meta; 649 if ( !is_array( $visible ) ) 650 $visible = array(); 651 652 // Index the blogs by userblog_id and set the visibility flag 653 // Visibility is on by default, unless a linked site then off 654 foreach ( $blogs AS $blog ) { 655 $blog->visible = true; 656 657 if ( isset( $visible[$blog->userblog_id] ) ) 658 $blog->visible = $visible[$blog->userblog_id]; 659 660 $newblogs[$blog->userblog_id] = $blog; 661 } 662 663 // Add the blogs to our list by order 664 foreach ( (array)$order AS $id ) { 665 // A previous change was saving the entire blog details into ordered, not just the blog ID - this detects it 666 if ( is_object( $id ) && isset( $id->userblog_id ) ) 667 $id = $id->userblog_id; 668 669 if ( is_numeric( $id ) && isset( $newblogs[intval( $id )] ) ) { 670 $ordered[$id] = $newblogs[$id]; 671 unset( $newblogs[$id] ); 672 } 673 } 674 675 // Add any blog not yet ordered to the end 676 foreach ( $newblogs AS $blog ) { 677 $ordered[$blog->userblog_id] = $blog; 678 } 679 680 // If we're only interested in visible blogs then remove the rest 681 if ( $visibility ) { 682 foreach ( (array)$ordered AS $pos => $blog ) { 683 if ( $blog->visible == false ) 684 unset( $ordered[$pos] ); 685 } 686 } 687 688 /* 689 // Set the order and visible options if the user doesn't have any, 690 // but rate limit it so that the global DB doesn't get hammered 691 if ( !is_array( $order_meta ) && ( 1 == mt_rand( 1, 10 ) ) ) 692 update_usermeta( $user_id, 'blog_order', array() ); 693 694 if ( !is_array( $visible_meta ) && ( 1 == mt_rand( 1, 10 ) ) ) 695 update_usermeta( $user_id, 'blog_visibility', array() ); 696 */ 697 698 return apply_filters( 'ordered_blogs', $ordered ); 699 } 700 701 function set_blog_visibility( $blog_id, $visible ) { 702 global $current_user; 703 704 if ( is_blog_user( $blog_id ) ) { 705 $visibility = get_user_meta( $current_user->ID, 'blog_visibility' ); 706 if ( !is_array( $visibility ) ) 707 $visibility = array(); 708 709 $visibility[$blog_id] = $visible; 710 711 update_user_meta( $current_user->ID, 'blog_visibility', $visibility ); 712 } 713 } 714 715 /** 716 * Checks if the current user belong to a given blog. 717 * 718 * @since 3.0.0 719 * 720 * @param int $blog_id Blog ID 721 * @return bool True if the current users belong to $blog_id, false if not. 722 */ 723 function is_blog_user( $blog_id = 0 ) { 724 global $wpdb; 725 726 $current_user = wp_get_current_user(); 727 if ( !$blog_id ) 728 $blog_id = $wpdb->blogid; 729 730 $cap_key = $wpdb->base_prefix . $blog_id . '_capabilities'; 731 732 if ( is_array($current_user->$cap_key) && in_array(1, $current_user->$cap_key) ) 733 return true; 734 735 return false; 736 } 737 738 /** 578 739 * Add meta data field to a user. 579 740 *
Note: See TracChangeset
for help on using the changeset viewer.