<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[BuddyPress][3817] trunk/bp-core: Move BuddyBar functions out of bp-core-adminbar and into bp-core-buddybar.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg > ul, #logmsg > ol { margin-left: 0; margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd>3817</dd>
<dt>Author</dt> <dd>johnjamesjacoby</dd>
<dt>Date</dt> <dd>2011-01-22 13:51:41 +0000 (Sat, 22 Jan 2011)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move BuddyBar functions out of bp-core-adminbar and into bp-core-buddybar. Reserve the adminbar file for the WordPress admin bar.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkbpcorebpcoreadminbarphp">trunk/bp-core/bp-core-adminbar.php</a></li>
<li><a href="#trunkbpcorebpcorebuddybarphp">trunk/bp-core/bp-core-buddybar.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkbpcorebpcoreadminbarphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-core/bp-core-adminbar.php (3816 => 3817)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-core/bp-core-adminbar.php        2011-01-22 13:43:20 UTC (rev 3816)
+++ trunk/bp-core/bp-core-adminbar.php        2011-01-22 13:51:41 UTC (rev 3817)
</span><span class="lines">@@ -1,312 +1,7 @@
</span><span class="cx"> &lt;?php
</span><span class="cx"> 
</span><del>-function bp_core_admin_bar() {
-        global $bp, $wpdb, $current_blog;
</del><ins>+/**
+ * Reserved for WordPress admin bar functions
+ */
</ins><span class="cx"> 
</span><del>-        if ( defined( 'BP_DISABLE_ADMIN_BAR' ) )
-                return false;
-
-        if ( (int)get_site_option( 'hide-loggedout-adminbar' ) &amp;&amp; !is_user_logged_in() )
-                return false;
-
-        $bp-&gt;doing_admin_bar = true;
-
-        echo '&lt;div id=&quot;wp-admin-bar&quot;&gt;&lt;div class=&quot;padder&quot;&gt;';
-
-        // **** Do bp-adminbar-logo Actions ********
-        do_action( 'bp_adminbar_logo' );
-
-        echo '&lt;ul class=&quot;main-nav&quot;&gt;';
-
-        // **** Do bp-adminbar-menus Actions ********
-        do_action( 'bp_adminbar_menus' );
-
-        echo '&lt;/ul&gt;';
-        echo &quot;&lt;/div&gt;&lt;/div&gt;&lt;!-- #wp-admin-bar --&gt;\n\n&quot;;
-
-        $bp-&gt;doing_admin_bar = false;
-}
-
-// **** Default BuddyPress admin bar logo ********
-function bp_adminbar_logo() {
-        global $bp;
-
-        echo '&lt;a href=&quot;' . $bp-&gt;root_domain . '&quot; id=&quot;admin-bar-logo&quot;&gt;' . get_blog_option( BP_ROOT_BLOG, 'blogname') . '&lt;/a&gt;';
-}
-
-// **** &quot;Log In&quot; and &quot;Sign Up&quot; links (Visible when not logged in) ********
-function bp_adminbar_login_menu() {
-        global $bp;
-
-        if ( is_user_logged_in() )
-                return false;
-
-        echo '&lt;li class=&quot;bp-login no-arrow&quot;&gt;&lt;a href=&quot;' . $bp-&gt;root_domain . '/wp-login.php?redirect_to=' . urlencode( $bp-&gt;root_domain ) . '&quot;&gt;' . __( 'Log In', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
-
-        // Show &quot;Sign Up&quot; link if user registrations are allowed
-        if ( bp_get_signup_allowed() )
-                echo '&lt;li class=&quot;bp-signup no-arrow&quot;&gt;&lt;a href=&quot;' . bp_get_signup_page(false) . '&quot;&gt;' . __( 'Sign Up', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
-}
-
-
-// **** &quot;My Account&quot; Menu ******
-function bp_adminbar_account_menu() {
-        global $bp;
-
-        if ( !$bp-&gt;bp_nav || !is_user_logged_in() )
-                return false;
-
-        echo '&lt;li id=&quot;bp-adminbar-account-menu&quot;&gt;&lt;a href=&quot;' . bp_loggedin_user_domain() . '&quot;&gt;';
-
-        echo __( 'My Account', 'buddypress' ) . '&lt;/a&gt;';
-        echo '&lt;ul&gt;';
-
-        /* Loop through each navigation item */
-        $counter = 0;
-        foreach( (array)$bp-&gt;bp_nav as $nav_item ) {
-                $alt = ( 0 == $counter % 2 ) ? ' class=&quot;alt&quot;' : '';
-
-                echo '&lt;li' . $alt . '&gt;';
-                echo '&lt;a id=&quot;bp-admin-' . $nav_item['css_id'] . '&quot; href=&quot;' . $nav_item['link'] . '&quot;&gt;' . $nav_item['name'] . '&lt;/a&gt;';
-
-                if ( isset( $bp-&gt;bp_options_nav[$nav_item['slug']] ) &amp;&amp; is_array( $bp-&gt;bp_options_nav[$nav_item['slug']] ) ) {
-                        echo '&lt;ul&gt;';
-                        $sub_counter = 0;
-
-                        foreach( (array)$bp-&gt;bp_options_nav[$nav_item['slug']] as $subnav_item ) {
-                                $link = $subnav_item['link'];
-                                $name = $subnav_item['name'];
-
-                                if ( isset( $bp-&gt;displayed_user-&gt;domain ) )
-                                        $link = str_replace( $bp-&gt;displayed_user-&gt;domain, $bp-&gt;loggedin_user-&gt;domain, $subnav_item['link'] );
-
-                                if ( isset( $bp-&gt;displayed_user-&gt;userdata-&gt;user_login ) )
-                                        $name = str_replace( $bp-&gt;displayed_user-&gt;userdata-&gt;user_login, $bp-&gt;loggedin_user-&gt;userdata-&gt;user_login, $subnav_item['name'] );
-
-                                $alt = ( 0 == $sub_counter % 2 ) ? ' class=&quot;alt&quot;' : '';
-                                echo '&lt;li' . $alt . '&gt;&lt;a id=&quot;bp-admin-' . $subnav_item['css_id'] . '&quot; href=&quot;' . $link . '&quot;&gt;' . $name . '&lt;/a&gt;&lt;/li&gt;';
-                                $sub_counter++;
-                        }
-                        echo '&lt;/ul&gt;';
-                }
-
-                echo '&lt;/li&gt;';
-
-                $counter++;
-        }
-
-        $alt = ( 0 == $counter % 2 ) ? ' class=&quot;alt&quot;' : '';
-
-        echo '&lt;li' . $alt . '&gt;&lt;a id=&quot;bp-admin-logout&quot; class=&quot;logout&quot; href=&quot;' . wp_logout_url( site_url() ) . '&quot;&gt;' . __( 'Log Out', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
-        echo '&lt;/ul&gt;';
-        echo '&lt;/li&gt;';
-}
-
-// *** &quot;My Blogs&quot; Menu ********
-function bp_adminbar_blogs_menu() {
-        global $bp;
-
-        if ( !is_user_logged_in() || !bp_is_active( 'blogs' ) )
-                return false;
-
-        if ( !is_multisite() )
-                return false;
-
-        if ( !$blogs = wp_cache_get( 'bp_blogs_of_user_' . $bp-&gt;loggedin_user-&gt;id . '_inc_hidden', 'bp' ) ) {
-                $blogs = bp_blogs_get_blogs_for_user( $bp-&gt;loggedin_user-&gt;id, true );
-                wp_cache_set( 'bp_blogs_of_user_' . $bp-&gt;loggedin_user-&gt;id . '_inc_hidden', $blogs, 'bp' );
-        }
-
-        echo '&lt;li id=&quot;bp-adminbar-blogs-menu&quot;&gt;&lt;a href=&quot;' . $bp-&gt;loggedin_user-&gt;domain . $bp-&gt;blogs-&gt;slug . '/&quot;&gt;';
-
-        _e( 'My Blogs', 'buddypress' );
-
-        echo '&lt;/a&gt;';
-        echo '&lt;ul&gt;';
-
-        $counter = 0;
-        if ( is_array( $blogs['blogs'] ) &amp;&amp; (int)$blogs['count'] ) {
-                foreach ( (array)$blogs['blogs'] as $blog ) {
-                        $alt = ( 0 == $counter % 2 ) ? ' class=&quot;alt&quot;' : '';
-                        $site_url = esc_attr( $blog-&gt;siteurl );
-
-                        echo '&lt;li' . $alt . '&gt;';
-                        echo '&lt;a href=&quot;' . $site_url . '&quot;&gt;' . esc_html( $blog-&gt;name ) . '&lt;/a&gt;';
-                        echo '&lt;ul&gt;';
-                        echo '&lt;li class=&quot;alt&quot;&gt;&lt;a href=&quot;' . $site_url . 'wp-admin/&quot;&gt;' . __( 'Dashboard', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
-                        echo '&lt;li&gt;&lt;a href=&quot;' . $site_url . 'wp-admin/post-new.php&quot;&gt;' . __( 'New Post', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
-                        echo '&lt;li class=&quot;alt&quot;&gt;&lt;a href=&quot;' . $site_url . 'wp-admin/edit.php&quot;&gt;' . __( 'Manage Posts', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
-                        echo '&lt;li&gt;&lt;a href=&quot;' . $site_url . 'wp-admin/edit-comments.php&quot;&gt;' . __( 'Manage Comments', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
-                        echo '&lt;/ul&gt;';
-
-                        do_action( 'bp_adminbar_blog_items', $blog );
-
-                        echo '&lt;/li&gt;';
-                        $counter++;
-                }
-        }
-
-        $alt = ( 0 == $counter % 2 ) ? ' class=&quot;alt&quot;' : '';
-
-        if ( bp_blog_signup_enabled() ) {
-                echo '&lt;li' . $alt . '&gt;';
-                echo '&lt;a href=&quot;' . $bp-&gt;root_domain . '/' . $bp-&gt;blogs-&gt;slug . '/create/&quot;&gt;' . __( 'Create a Blog!', 'buddypress' ) . '&lt;/a&gt;';
-                echo '&lt;/li&gt;';
-        }
-
-        echo '&lt;/ul&gt;';
-        echo '&lt;/li&gt;';
-}
-
-function bp_adminbar_thisblog_menu() {
-        if ( current_user_can( 'edit_posts' ) ) {
-                echo '&lt;li id=&quot;bp-adminbar-thisblog-menu&quot;&gt;&lt;a href=&quot;' . admin_url() . '&quot;&gt;';
-
-                _e( 'Dashboard', 'buddypress' );
-
-                echo '&lt;/a&gt;';
-                echo '&lt;ul&gt;';
-
-                echo '&lt;li class=&quot;alt&quot;&gt;&lt;a href=&quot;' . admin_url() . 'post-new.php&quot;&gt;' . __( 'New Post', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
-                echo '&lt;li&gt;&lt;a href=&quot;' . admin_url() . 'edit.php&quot;&gt;' . __( 'Manage Posts', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
-                echo '&lt;li class=&quot;alt&quot;&gt;&lt;a href=&quot;' . admin_url() . 'edit-comments.php&quot;&gt;' . __( 'Manage Comments', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
-
-                do_action( 'bp_adminbar_thisblog_items' );
-
-                echo '&lt;/ul&gt;';
-                echo '&lt;/li&gt;';
-        }
-}
-
-// **** &quot;Notifications&quot; Menu *********
-function bp_adminbar_notifications_menu() {
-        global $bp;
-
-        if ( !is_user_logged_in() )
-                return false;
-
-        echo '&lt;li id=&quot;bp-adminbar-notifications-menu&quot;&gt;&lt;a href=&quot;' . $bp-&gt;loggedin_user-&gt;domain . '&quot;&gt;';
-        _e( 'Notifications', 'buddypress' );
-
-        if ( $notifications = bp_users_get_notifications_for_user( $bp-&gt;loggedin_user-&gt;id ) ) { ?&gt;
-                &lt;span&gt;&lt;?php echo count( $notifications ) ?&gt;&lt;/span&gt;
-        &lt;?php
-        }
-
-        echo '&lt;/a&gt;';
-        echo '&lt;ul&gt;';
-
-        if ( $notifications ) {
-                $counter = 0;
-                for ( $i = 0; $i &lt; count($notifications); $i++ ) {
-                        $alt = ( 0 == $counter % 2 ) ? ' class=&quot;alt&quot;' : ''; ?&gt;
-
-                        &lt;li&lt;?php echo $alt ?&gt;&gt;&lt;?php echo $notifications[$i] ?&gt;&lt;/li&gt;
-
-                        &lt;?php $counter++;
-                }
-        } else { ?&gt;
-
-                &lt;li&gt;&lt;a href=&quot;&lt;?php echo $bp-&gt;loggedin_user-&gt;domain ?&gt;&quot;&gt;&lt;?php _e( 'No new notifications.', 'buddypress' ); ?&gt;&lt;/a&gt;&lt;/li&gt;
-
-        &lt;?php
-        }
-
-        echo '&lt;/ul&gt;';
-        echo '&lt;/li&gt;';
-}
-
-// **** &quot;Blog Authors&quot; Menu (visible when not logged in) ********
-function bp_adminbar_authors_menu() {
-        global $bp, $current_blog, $wpdb;
-
-        // Only for multisite
-        if ( !is_multisite() )
-                return false;
-
-        // Hide on root blog
-        if ( $current_blog-&gt;blog_id == BP_ROOT_BLOG || !bp_is_active( 'blogs' ) )
-                return false;
-                
-        $blog_prefix = $wpdb-&gt;get_blog_prefix( $current_blog-&gt;blog_id );
-        $authors     = $wpdb-&gt;get_results( &quot;SELECT user_id, user_login, user_nicename, display_name, user_email, meta_value as caps FROM $wpdb-&gt;users u, $wpdb-&gt;usermeta um WHERE u.ID = um.user_id AND meta_key = '{$blog_prefix}capabilities' ORDER BY um.user_id&quot; );
-
-        if ( !empty( $authors ) ) {
-                // This is a blog, render a menu with links to all authors
-                echo '&lt;li id=&quot;bp-adminbar-authors-menu&quot;&gt;&lt;a href=&quot;/&quot;&gt;';
-                _e('Blog Authors', 'buddypress');
-                echo '&lt;/a&gt;';
-
-                echo '&lt;ul class=&quot;author-list&quot;&gt;';
-                foreach( (array)$authors as $author ) {
-                        $caps = maybe_unserialize( $author-&gt;caps );
-                        if ( isset( $caps['subscriber'] ) || isset( $caps['contributor'] ) ) continue;
-
-                        echo '&lt;li&gt;';
-                        echo '&lt;a href=&quot;' . bp_core_get_user_domain( $author-&gt;user_id, $author-&gt;user_nicename, $author-&gt;user_login ) . '&quot;&gt;';
-                        echo bp_core_fetch_avatar( array( 'item_id' =&gt; $author-&gt;user_id, 'email' =&gt; $author-&gt;user_email, 'width' =&gt; 15, 'height' =&gt; 15 ) ) ;
-                         echo ' ' . $author-&gt;display_name . '&lt;/a&gt;';
-                        echo '&lt;div class=&quot;admin-bar-clear&quot;&gt;&lt;/div&gt;';
-                        echo '&lt;/li&gt;';
-                }
-                echo '&lt;/ul&gt;';
-                echo '&lt;/li&gt;';
-        }
-}
-
-// **** &quot;Random&quot; Menu (visible when not logged in) ********
-function bp_adminbar_random_menu() {
-        global $bp; ?&gt;
-
-        &lt;li class=&quot;align-right&quot; id=&quot;bp-adminbar-visitrandom-menu&quot;&gt;
-                &lt;a href=&quot;#&quot;&gt;&lt;?php _e( 'Visit', 'buddypress' ) ?&gt;&lt;/a&gt;
-                &lt;ul class=&quot;random-list&quot;&gt;
-                        &lt;li&gt;&lt;a href=&quot;&lt;?php echo $bp-&gt;root_domain . '/' . BP_MEMBERS_SLUG . '/?random-member' ?&gt;&quot;&gt;&lt;?php _e( 'Random Member', 'buddypress' ) ?&gt;&lt;/a&gt;&lt;/li&gt;
-
-                        &lt;?php if ( bp_is_active( 'groups' ) ) : ?&gt;
-
-                                &lt;li class=&quot;alt&quot;&gt;&lt;a href=&quot;&lt;?php echo $bp-&gt;root_domain . '/' . $bp-&gt;groups-&gt;slug . '/?random-group' ?&gt;&quot;&gt;&lt;?php _e( 'Random Group', 'buddypress' ) ?&gt;&lt;/a&gt;&lt;/li&gt;
-
-                        &lt;?php endif; ?&gt;
-
-                        &lt;?php if ( bp_is_active( 'blogs' ) &amp;&amp; is_multisite() ) : ?&gt;
-
-                                &lt;li&gt;&lt;a href=&quot;&lt;?php echo $bp-&gt;root_domain . '/' . $bp-&gt;blogs-&gt;slug . '/?random-blog' ?&gt;&quot;&gt;&lt;?php _e( 'Random Blog', 'buddypress' ) ?&gt;&lt;/a&gt;&lt;/li&gt;
-
-                        &lt;?php endif; ?&gt;
-
-                        &lt;?php do_action( 'bp_adminbar_random_menu' ) ?&gt;
-
-                &lt;/ul&gt;
-        &lt;/li&gt;
-
-        &lt;?php
-}
-
-function bp_core_load_admin_bar() {
-        global $wp_version;
-        
-        if ( defined( 'BP_USE_WP_ADMIN_BAR' ) &amp;&amp; BP_USE_WP_ADMIN_BAR &amp;&amp; $wp_version &gt;= 3.1 ) {
-                // TODO: Add BP support to WP admin bar
-                return;
-        } elseif ( !defined( 'BP_DISABLE_ADMIN_BAR' ) || !BP_DISABLE_ADMIN_BAR ) {
-                // Keep the WP admin bar from loading
-                show_admin_bar( false );
-                
-                // Actions used to build the BP admin bar
-                add_action( 'bp_adminbar_logo',  'bp_adminbar_logo' );
-                add_action( 'bp_adminbar_menus', 'bp_adminbar_login_menu',         2   );
-                add_action( 'bp_adminbar_menus', 'bp_adminbar_account_menu',       4   );
-                add_action( 'bp_adminbar_menus', 'bp_adminbar_blogs_menu',         6   );
-                add_action( 'bp_adminbar_menus', 'bp_adminbar_thisblog_menu',      6   );
-                add_action( 'bp_adminbar_menus', 'bp_adminbar_notifications_menu', 8   );
-                add_action( 'bp_adminbar_menus', 'bp_adminbar_authors_menu',       12  );
-                add_action( 'bp_adminbar_menus', 'bp_adminbar_random_menu',        100 );
-                
-                // Actions used to append BP admin bar to footer
-                add_action( 'wp_footer',    'bp_core_admin_bar', 8 );
-                add_action( 'admin_footer', 'bp_core_admin_bar'    );        
-        }
-}
-
</del><span class="cx"> ?&gt;
</span><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkbpcorebpcorebuddybarphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-core/bp-core-buddybar.php (3816 => 3817)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-core/bp-core-buddybar.php        2011-01-22 13:43:20 UTC (rev 3816)
+++ trunk/bp-core/bp-core-buddybar.php        2011-01-22 13:51:41 UTC (rev 3817)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx">         extract( $r, EXTR_SKIP );
</span><span class="cx"> 
</span><span class="cx">         // If we don't have the required info we need, don't create this subnav item
</span><del>-        if ( empty($name) || empty($slug) )
</del><ins>+        if ( empty( $name ) || empty( $slug ) )
</ins><span class="cx">                 return false;
</span><span class="cx"> 
</span><span class="cx">         // If this is for site admins only and the user is not one, don't create the subnav item
</span><span class="lines">@@ -57,16 +57,16 @@
</span><span class="cx">           * If we are not viewing a user, and this is a root component, don't attach the
</span><span class="cx">           * default subnav function so we can display a directory or something else.
</span><span class="cx">           */
</span><del>-        if ( bp_is_root_component( $slug ) &amp;&amp; !$bp-&gt;displayed_user-&gt;id )
</del><ins>+        if ( bp_is_root_component( $slug ) &amp;&amp; !bp_displayed_user_id() )
</ins><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-        if ( $bp-&gt;current_component == $slug &amp;&amp; !$bp-&gt;current_action ) {
</del><ins>+        if ( bp_is_current_component( $slug ) &amp;&amp; !bp_current_action() ) {
</ins><span class="cx">                 if ( !is_object( $screen_function[0] ) )
</span><span class="cx">                         add_action( 'wp', $screen_function, 3 );
</span><span class="cx">                 else
</span><span class="cx">                         add_action( 'wp', array( &amp;$screen_function[0], $screen_function[1] ), 3 );
</span><span class="cx"> 
</span><del>-                if ( $default_subnav_slug )
</del><ins>+                if ( !empty( $default_subnav_slug ) )
</ins><span class="cx">                         $bp-&gt;current_action = $default_subnav_slug;
</span><span class="cx">         }
</span><span class="cx"> }
</span><span class="lines">@@ -289,4 +289,318 @@
</span><span class="cx">         unset( $bp-&gt;bp_options_nav[$parent_slug] );
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+/** Template functions ********************************************************/
+
+function bp_core_admin_bar() {
+        global $bp, $wpdb, $current_blog;
+
+        if ( defined( 'BP_DISABLE_ADMIN_BAR' ) )
+                return false;
+
+        if ( (int)get_site_option( 'hide-loggedout-adminbar' ) &amp;&amp; !is_user_logged_in() )
+                return false;
+
+        $bp-&gt;doing_admin_bar = true;
+
+        echo '&lt;div id=&quot;wp-admin-bar&quot;&gt;&lt;div class=&quot;padder&quot;&gt;';
+
+        // **** Do bp-adminbar-logo Actions ********
+        do_action( 'bp_adminbar_logo' );
+
+        echo '&lt;ul class=&quot;main-nav&quot;&gt;';
+
+        // **** Do bp-adminbar-menus Actions ********
+        do_action( 'bp_adminbar_menus' );
+
+        echo '&lt;/ul&gt;';
+        echo &quot;&lt;/div&gt;&lt;/div&gt;&lt;!-- #wp-admin-bar --&gt;\n\n&quot;;
+
+        $bp-&gt;doing_admin_bar = false;
+}
+
+// **** Default BuddyPress admin bar logo ********
+function bp_adminbar_logo() {
+        global $bp;
+
+        echo '&lt;a href=&quot;' . $bp-&gt;root_domain . '&quot; id=&quot;admin-bar-logo&quot;&gt;' . get_blog_option( BP_ROOT_BLOG, 'blogname') . '&lt;/a&gt;';
+}
+
+// **** &quot;Log In&quot; and &quot;Sign Up&quot; links (Visible when not logged in) ********
+function bp_adminbar_login_menu() {
+        global $bp;
+
+        if ( is_user_logged_in() )
+                return false;
+
+        echo '&lt;li class=&quot;bp-login no-arrow&quot;&gt;&lt;a href=&quot;' . $bp-&gt;root_domain . '/wp-login.php?redirect_to=' . urlencode( $bp-&gt;root_domain ) . '&quot;&gt;' . __( 'Log In', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
+
+        // Show &quot;Sign Up&quot; link if user registrations are allowed
+        if ( bp_get_signup_allowed() )
+                echo '&lt;li class=&quot;bp-signup no-arrow&quot;&gt;&lt;a href=&quot;' . bp_get_signup_page(false) . '&quot;&gt;' . __( 'Sign Up', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
+}
+
+
+// **** &quot;My Account&quot; Menu ******
+function bp_adminbar_account_menu() {
+        global $bp;
+
+        if ( !$bp-&gt;bp_nav || !is_user_logged_in() )
+                return false;
+
+        echo '&lt;li id=&quot;bp-adminbar-account-menu&quot;&gt;&lt;a href=&quot;' . bp_loggedin_user_domain() . '&quot;&gt;';
+
+        echo __( 'My Account', 'buddypress' ) . '&lt;/a&gt;';
+        echo '&lt;ul&gt;';
+
+        // Loop through each navigation item
+        $counter = 0;
+        foreach( (array)$bp-&gt;bp_nav as $nav_item ) {
+                $alt = ( 0 == $counter % 2 ) ? ' class=&quot;alt&quot;' : '';
+
+                if ( -1 == $nav_item['position'] )
+                        continue;
+
+                echo '&lt;li' . $alt . '&gt;';
+                echo '&lt;a id=&quot;bp-admin-' . $nav_item['css_id'] . '&quot; href=&quot;' . $nav_item['link'] . '&quot;&gt;' . $nav_item['name'] . '&lt;/a&gt;';
+
+                if ( isset( $bp-&gt;bp_options_nav[$nav_item['slug']] ) &amp;&amp; is_array( $bp-&gt;bp_options_nav[$nav_item['slug']] ) ) {
+                        echo '&lt;ul&gt;';
+                        $sub_counter = 0;
+
+                        foreach( (array)$bp-&gt;bp_options_nav[$nav_item['slug']] as $subnav_item ) {
+                                $link = $subnav_item['link'];
+                                $name = $subnav_item['name'];
+
+                                if ( isset( $bp-&gt;displayed_user-&gt;domain ) )
+                                        $link = str_replace( $bp-&gt;displayed_user-&gt;domain, $bp-&gt;loggedin_user-&gt;domain, $subnav_item['link'] );
+
+                                if ( isset( $bp-&gt;displayed_user-&gt;userdata-&gt;user_login ) )
+                                        $name = str_replace( $bp-&gt;displayed_user-&gt;userdata-&gt;user_login, $bp-&gt;loggedin_user-&gt;userdata-&gt;user_login, $subnav_item['name'] );
+
+                                $alt = ( 0 == $sub_counter % 2 ) ? ' class=&quot;alt&quot;' : '';
+                                echo '&lt;li' . $alt . '&gt;&lt;a id=&quot;bp-admin-' . $subnav_item['css_id'] . '&quot; href=&quot;' . $link . '&quot;&gt;' . $name . '&lt;/a&gt;&lt;/li&gt;';
+                                $sub_counter++;
+                        }
+                        echo '&lt;/ul&gt;';
+                }
+
+                echo '&lt;/li&gt;';
+
+                $counter++;
+        }
+
+        $alt = ( 0 == $counter % 2 ) ? ' class=&quot;alt&quot;' : '';
+
+        echo '&lt;li' . $alt . '&gt;&lt;a id=&quot;bp-admin-logout&quot; class=&quot;logout&quot; href=&quot;' . wp_logout_url( site_url() ) . '&quot;&gt;' . __( 'Log Out', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
+        echo '&lt;/ul&gt;';
+        echo '&lt;/li&gt;';
+}
+
+// *** &quot;My Blogs&quot; Menu ********
+function bp_adminbar_blogs_menu() {
+        global $bp;
+
+        if ( !is_user_logged_in() || !bp_is_active( 'blogs' ) )
+                return false;
+
+        if ( !is_multisite() )
+                return false;
+
+        if ( !$blogs = wp_cache_get( 'bp_blogs_of_user_' . $bp-&gt;loggedin_user-&gt;id . '_inc_hidden', 'bp' ) ) {
+                $blogs = bp_blogs_get_blogs_for_user( $bp-&gt;loggedin_user-&gt;id, true );
+                wp_cache_set( 'bp_blogs_of_user_' . $bp-&gt;loggedin_user-&gt;id . '_inc_hidden', $blogs, 'bp' );
+        }
+
+        echo '&lt;li id=&quot;bp-adminbar-blogs-menu&quot;&gt;&lt;a href=&quot;' . $bp-&gt;loggedin_user-&gt;domain . $bp-&gt;blogs-&gt;slug . '/&quot;&gt;';
+
+        _e( 'My Blogs', 'buddypress' );
+
+        echo '&lt;/a&gt;';
+        echo '&lt;ul&gt;';
+
+        $counter = 0;
+        if ( is_array( $blogs['blogs'] ) &amp;&amp; (int)$blogs['count'] ) {
+                foreach ( (array)$blogs['blogs'] as $blog ) {
+                        $alt = ( 0 == $counter % 2 ) ? ' class=&quot;alt&quot;' : '';
+                        $site_url = esc_attr( $blog-&gt;siteurl );
+
+                        echo '&lt;li' . $alt . '&gt;';
+                        echo '&lt;a href=&quot;' . $site_url . '&quot;&gt;' . esc_html( $blog-&gt;name ) . '&lt;/a&gt;';
+                        echo '&lt;ul&gt;';
+                        echo '&lt;li class=&quot;alt&quot;&gt;&lt;a href=&quot;' . $site_url . 'wp-admin/&quot;&gt;' . __( 'Dashboard', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
+                        echo '&lt;li&gt;&lt;a href=&quot;' . $site_url . 'wp-admin/post-new.php&quot;&gt;' . __( 'New Post', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
+                        echo '&lt;li class=&quot;alt&quot;&gt;&lt;a href=&quot;' . $site_url . 'wp-admin/edit.php&quot;&gt;' . __( 'Manage Posts', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
+                        echo '&lt;li&gt;&lt;a href=&quot;' . $site_url . 'wp-admin/edit-comments.php&quot;&gt;' . __( 'Manage Comments', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
+                        echo '&lt;/ul&gt;';
+
+                        do_action( 'bp_adminbar_blog_items', $blog );
+
+                        echo '&lt;/li&gt;';
+                        $counter++;
+                }
+        }
+
+        $alt = ( 0 == $counter % 2 ) ? ' class=&quot;alt&quot;' : '';
+
+        if ( bp_blog_signup_enabled() ) {
+                echo '&lt;li' . $alt . '&gt;';
+                echo '&lt;a href=&quot;' . $bp-&gt;root_domain . '/' . $bp-&gt;blogs-&gt;slug . '/create/&quot;&gt;' . __( 'Create a Blog!', 'buddypress' ) . '&lt;/a&gt;';
+                echo '&lt;/li&gt;';
+        }
+
+        echo '&lt;/ul&gt;';
+        echo '&lt;/li&gt;';
+}
+
+function bp_adminbar_thisblog_menu() {
+        if ( current_user_can( 'edit_posts' ) ) {
+                echo '&lt;li id=&quot;bp-adminbar-thisblog-menu&quot;&gt;&lt;a href=&quot;' . admin_url() . '&quot;&gt;';
+
+                _e( 'Dashboard', 'buddypress' );
+
+                echo '&lt;/a&gt;';
+                echo '&lt;ul&gt;';
+
+                echo '&lt;li class=&quot;alt&quot;&gt;&lt;a href=&quot;' . admin_url() . 'post-new.php&quot;&gt;' . __( 'New Post', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
+                echo '&lt;li&gt;&lt;a href=&quot;' . admin_url() . 'edit.php&quot;&gt;' . __( 'Manage Posts', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
+                echo '&lt;li class=&quot;alt&quot;&gt;&lt;a href=&quot;' . admin_url() . 'edit-comments.php&quot;&gt;' . __( 'Manage Comments', 'buddypress' ) . '&lt;/a&gt;&lt;/li&gt;';
+
+                do_action( 'bp_adminbar_thisblog_items' );
+
+                echo '&lt;/ul&gt;';
+                echo '&lt;/li&gt;';
+        }
+}
+
+// **** &quot;Notifications&quot; Menu *********
+function bp_adminbar_notifications_menu() {
+        global $bp;
+
+        if ( !is_user_logged_in() )
+                return false;
+
+        echo '&lt;li id=&quot;bp-adminbar-notifications-menu&quot;&gt;&lt;a href=&quot;' . $bp-&gt;loggedin_user-&gt;domain . '&quot;&gt;';
+        _e( 'Notifications', 'buddypress' );
+
+        if ( $notifications = bp_users_get_notifications_for_user( $bp-&gt;loggedin_user-&gt;id ) ) { ?&gt;
+                &lt;span&gt;&lt;?php echo count( $notifications ) ?&gt;&lt;/span&gt;
+        &lt;?php
+        }
+
+        echo '&lt;/a&gt;';
+        echo '&lt;ul&gt;';
+
+        if ( $notifications ) {
+                $counter = 0;
+                for ( $i = 0; $i &lt; count($notifications); $i++ ) {
+                        $alt = ( 0 == $counter % 2 ) ? ' class=&quot;alt&quot;' : ''; ?&gt;
+
+                        &lt;li&lt;?php echo $alt ?&gt;&gt;&lt;?php echo $notifications[$i] ?&gt;&lt;/li&gt;
+
+                        &lt;?php $counter++;
+                }
+        } else { ?&gt;
+
+                &lt;li&gt;&lt;a href=&quot;&lt;?php echo $bp-&gt;loggedin_user-&gt;domain ?&gt;&quot;&gt;&lt;?php _e( 'No new notifications.', 'buddypress' ); ?&gt;&lt;/a&gt;&lt;/li&gt;
+
+        &lt;?php
+        }
+
+        echo '&lt;/ul&gt;';
+        echo '&lt;/li&gt;';
+}
+
+// **** &quot;Blog Authors&quot; Menu (visible when not logged in) ********
+function bp_adminbar_authors_menu() {
+        global $bp, $current_blog, $wpdb;
+
+        // Only for multisite
+        if ( !is_multisite() )
+                return false;
+
+        // Hide on root blog
+        if ( $current_blog-&gt;blog_id == BP_ROOT_BLOG || !bp_is_active( 'blogs' ) )
+                return false;
+
+        $blog_prefix = $wpdb-&gt;get_blog_prefix( $current_blog-&gt;blog_id );
+        $authors     = $wpdb-&gt;get_results( &quot;SELECT user_id, user_login, user_nicename, display_name, user_email, meta_value as caps FROM $wpdb-&gt;users u, $wpdb-&gt;usermeta um WHERE u.ID = um.user_id AND meta_key = '{$blog_prefix}capabilities' ORDER BY um.user_id&quot; );
+
+        if ( !empty( $authors ) ) {
+                // This is a blog, render a menu with links to all authors
+                echo '&lt;li id=&quot;bp-adminbar-authors-menu&quot;&gt;&lt;a href=&quot;/&quot;&gt;';
+                _e('Blog Authors', 'buddypress');
+                echo '&lt;/a&gt;';
+
+                echo '&lt;ul class=&quot;author-list&quot;&gt;';
+                foreach( (array)$authors as $author ) {
+                        $caps = maybe_unserialize( $author-&gt;caps );
+                        if ( isset( $caps['subscriber'] ) || isset( $caps['contributor'] ) ) continue;
+
+                        echo '&lt;li&gt;';
+                        echo '&lt;a href=&quot;' . bp_core_get_user_domain( $author-&gt;user_id, $author-&gt;user_nicename, $author-&gt;user_login ) . '&quot;&gt;';
+                        echo bp_core_fetch_avatar( array( 'item_id' =&gt; $author-&gt;user_id, 'email' =&gt; $author-&gt;user_email, 'width' =&gt; 15, 'height' =&gt; 15 ) ) ;
+                         echo ' ' . $author-&gt;display_name . '&lt;/a&gt;';
+                        echo '&lt;div class=&quot;admin-bar-clear&quot;&gt;&lt;/div&gt;';
+                        echo '&lt;/li&gt;';
+                }
+                echo '&lt;/ul&gt;';
+                echo '&lt;/li&gt;';
+        }
+}
+
+// **** &quot;Random&quot; Menu (visible when not logged in) ********
+function bp_adminbar_random_menu() {
+        global $bp; ?&gt;
+
+        &lt;li class=&quot;align-right&quot; id=&quot;bp-adminbar-visitrandom-menu&quot;&gt;
+                &lt;a href=&quot;#&quot;&gt;&lt;?php _e( 'Visit', 'buddypress' ) ?&gt;&lt;/a&gt;
+                &lt;ul class=&quot;random-list&quot;&gt;
+                        &lt;li&gt;&lt;a href=&quot;&lt;?php echo $bp-&gt;root_domain . '/' . BP_MEMBERS_SLUG . '/?random-member' ?&gt;&quot;&gt;&lt;?php _e( 'Random Member', 'buddypress' ) ?&gt;&lt;/a&gt;&lt;/li&gt;
+
+                        &lt;?php if ( bp_is_active( 'groups' ) ) : ?&gt;
+
+                                &lt;li class=&quot;alt&quot;&gt;&lt;a href=&quot;&lt;?php echo $bp-&gt;root_domain . '/' . $bp-&gt;groups-&gt;slug . '/?random-group' ?&gt;&quot;&gt;&lt;?php _e( 'Random Group', 'buddypress' ) ?&gt;&lt;/a&gt;&lt;/li&gt;
+
+                        &lt;?php endif; ?&gt;
+
+                        &lt;?php if ( bp_is_active( 'blogs' ) &amp;&amp; is_multisite() ) : ?&gt;
+
+                                &lt;li&gt;&lt;a href=&quot;&lt;?php echo $bp-&gt;root_domain . '/' . $bp-&gt;blogs-&gt;slug . '/?random-blog' ?&gt;&quot;&gt;&lt;?php _e( 'Random Blog', 'buddypress' ) ?&gt;&lt;/a&gt;&lt;/li&gt;
+
+                        &lt;?php endif; ?&gt;
+
+                        &lt;?php do_action( 'bp_adminbar_random_menu' ) ?&gt;
+
+                &lt;/ul&gt;
+        &lt;/li&gt;
+
+        &lt;?php
+}
+
+function bp_core_load_admin_bar() {
+        global $wp_version;
+
+        if ( defined( 'BP_USE_WP_ADMIN_BAR' ) &amp;&amp; BP_USE_WP_ADMIN_BAR &amp;&amp; $wp_version &gt;= 3.1 ) {
+                // TODO: Add BP support to WP admin bar
+                return;
+        } elseif ( !defined( 'BP_DISABLE_ADMIN_BAR' ) || !BP_DISABLE_ADMIN_BAR ) {
+                // Keep the WP admin bar from loading
+                show_admin_bar( false );
+
+                // Actions used to build the BP admin bar
+                add_action( 'bp_adminbar_logo',  'bp_adminbar_logo' );
+                add_action( 'bp_adminbar_menus', 'bp_adminbar_login_menu',         2   );
+                add_action( 'bp_adminbar_menus', 'bp_adminbar_account_menu',       4   );
+                add_action( 'bp_adminbar_menus', 'bp_adminbar_blogs_menu',         6   );
+                add_action( 'bp_adminbar_menus', 'bp_adminbar_thisblog_menu',      6   );
+                add_action( 'bp_adminbar_menus', 'bp_adminbar_notifications_menu', 8   );
+                add_action( 'bp_adminbar_menus', 'bp_adminbar_authors_menu',       12  );
+                add_action( 'bp_adminbar_menus', 'bp_adminbar_random_menu',        100 );
+
+                // Actions used to append BP admin bar to footer
+                add_action( 'wp_footer',    'bp_core_admin_bar', 8 );
+                add_action( 'admin_footer', 'bp_core_admin_bar'    );
+        }
+}
+
</ins><span class="cx"> ?&gt;
</span></span></pre>
</div>
</div>

</body>
</html>