Make WordPress Core

Changeset 15671 for trunk/wp-includes


Ignore:
Timestamp:
09/27/2010 08:26:36 PM (16 years ago)
Author:
ryan
Message:

Admin bar, first pass. see #14772

Location:
trunk/wp-includes
Files:
9 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/ms-functions.php

    r15621 r15671  
    2929
    3030        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                         else
    56                                 $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 );
    7131}
    7232
     
    367327}
    368328
    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 
    384329function is_email_address_unsafe( $user_email ) {
    385330        $banned_names = get_site_option( 'banned_email_domains' );
  • trunk/wp-includes/user.php

    r15590 r15671  
    576576
    577577/**
     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 */
     586function 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
     638function 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
     701function 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 */
     723function 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/**
    578739 * Add meta data field to a user.
    579740 *
Note: See TracChangeset for help on using the changeset viewer.