Skip to:
Content

BuddyPress.org

Changeset 1250


Ignore:
Timestamp:
03/25/2009 04:01:43 PM (16 years ago)
Author:
apeatling
Message:

Removed blogs, groups and members directory from the home theme into the BuddyPress member theme. The directories now have their own templates and theme based CSS and provide much easier editing.

Moved the $bp global setup to a higher priority action - from the 'wp' action to the 'plugins_loaded' action. This stops occurrences where the $bp global was not defined yet.

Location:
trunk
Files:
4 added
6 deleted
26 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-activity.php

    r1227 r1250  
    170170    }
    171171}
    172 add_action( 'wp', 'bp_activity_setup_globals', 1 );
     172add_action( 'plugins_loaded', 'bp_activity_setup_globals', 5 );
    173173add_action( 'admin_menu', 'bp_activity_setup_globals', 1 );
    174174
     
    177177    bp_core_add_root_component( BP_ACTIVITY_SLUG );
    178178}
    179 add_action( 'plugins_loaded', 'bp_activity_setup_root_component' );
     179add_action( 'plugins_loaded', 'bp_activity_setup_root_component', 1 );
    180180
    181181
  • trunk/bp-activity/bp-activity-widgets.php

    r1244 r1250  
    88    wp_register_sidebar_widget( 'buddypress-activity', __('Site Wide Activity', 'buddypress'), 'bp_activity_widget_sitewide_activity');
    99    wp_register_widget_control( 'buddypress-activity', __('Site Wide Activity', 'buddypress'), 'bp_activity_widget_sitewide_activity_control' );
     10
     11    if ( is_active_widget( 'bp_activity_widget_sitewide_activity' ) ) {
     12        wp_enqueue_style( 'bp-activity-widget-activity-css', WPMU_PLUGIN_URL . '/bp-activity/css/widget-activity.css' );       
     13    }
    1014}
    1115add_action( 'plugins_loaded', 'bp_activity_register_widgets' );
  • trunk/bp-blogs.php

    r1247 r1250  
    2626require ( 'bp-blogs/bp-blogs-widgets.php' );
    2727require ( 'bp-blogs/bp-blogs-ajax.php' );
    28 require ( 'bp-blogs/directories/bp-blogs-directory-blogs.php' );
    2928
    3029
     
    148147    $bp->version_numbers->blogs = BP_BLOGS_VERSION;
    149148}
    150 add_action( 'wp', 'bp_blogs_setup_globals', 1 );   
     149add_action( 'plugins_loaded', 'bp_blogs_setup_globals', 5 );   
    151150add_action( 'admin_menu', 'bp_blogs_setup_globals', 1 );
    152151
     
    155154    bp_core_add_root_component( BP_BLOGS_SLUG );
    156155}
    157 add_action( 'plugins_loaded', 'bp_blogs_setup_root_component' );
     156add_action( 'plugins_loaded', 'bp_blogs_setup_root_component', 1 );
    158157
    159158/**
     
    198197add_action( 'wp', 'bp_blogs_setup_nav', 2 );
    199198add_action( 'admin_menu', 'bp_blogs_setup_nav', 2 );
     199
     200function bp_blogs_directory_blogs_setup() {
     201    global $bp;
     202   
     203    if ( $bp->current_component == $bp->blogs->slug && empty( $bp->current_action ) ) {
     204        $bp->is_directory = true;
     205
     206        wp_enqueue_script( 'bp-blogs-directory-blogs', WPMU_PLUGIN_URL . '/bp-blogs/js/directory-blogs.js', array( 'jquery', 'jquery-livequery-pack' ) );
     207        bp_core_load_template( 'directories/blogs/index' );
     208    }
     209}
     210add_action( 'wp', 'bp_blogs_directory_blogs_setup', 5 );
    200211
    201212function bp_blogs_screen_my_blogs() {
     
    826837}
    827838
     839function bp_blogs_force_buddypress_theme( $template ) {
     840    global $bp;
     841   
     842    if ( $bp->current_component == $bp->blogs->slug && empty( $bp->current_action ) ) {
     843        $member_theme = get_site_option( 'active-member-theme' );
     844
     845        if ( empty( $member_theme ) )
     846            $member_theme = 'buddypress-member';
     847
     848        add_filter( 'theme_root', 'bp_core_set_member_theme_root' );
     849        add_filter( 'theme_root_uri', 'bp_core_set_member_theme_root_uri' );
     850
     851        return $member_theme;
     852    } else {
     853        return $template;
     854    }
     855}
     856add_filter( 'template', 'bp_blogs_force_buddypress_theme', 1, 1 );
     857
     858function bp_blogs_force_buddypress_stylesheet( $stylesheet ) {
     859    global $bp;
     860
     861    if ( $bp->current_component == $bp->blogs->slug && empty( $bp->current_action ) ) {
     862        $member_theme = get_site_option( 'active-member-theme' );
     863   
     864        if ( empty( $member_theme ) )
     865            $member_theme = 'buddypress-member';
     866
     867        add_filter( 'theme_root', 'bp_core_set_member_theme_root' );
     868        add_filter( 'theme_root_uri', 'bp_core_set_member_theme_root_uri' );
     869
     870        return $member_theme;
     871    } else {
     872        return $stylesheet;
     873    }
     874}
     875add_filter( 'stylesheet', 'bp_blogs_force_buddypress_stylesheet', 1, 1 );
     876
     877
     878
    828879function bp_blogs_remove_data( $user_id ) {
    829880    /* If this is regular blog, delete all data for that blog. */
     
    839890
    840891function bp_blogs_clear_blog_object_cache( $blog_id, $user_id ) {
    841     wp_cache_delete( 'bp_user_blogs_' . $user_id, 'bp' );
     892    wp_cache_delete( 'bp_blogs_of_user_' . $user_id, 'bp' );
     893    wp_cache_delete( 'bp_blogs_for_user_' . $user_id, 'bp' );
    842894}
    843895
  • trunk/bp-blogs/bp-blogs-ajax.php

    r1138 r1250  
    55    check_ajax_referer('directory_blogs');
    66   
    7     $pag_page = isset( $_POST['page'] ) ? intval( $_POST['page'] ) : 1;
    8     $pag_num = isset( $_POST['num'] ) ? intval( $_POST['num'] ) : 10;
    9    
    10     if ( isset( $_POST['letter'] ) && $_POST['letter'] != '' ) {
    11         $blogs = BP_Blogs_Blog::get_by_letter( $_POST['letter'], $pag_num, $pag_page );
    12     } else if ( isset ( $_POST['blogs_search'] ) && $_POST['blogs_search'] != '' ) {
    13         $blogs = BP_Blogs_Blog::search_blogs( $_POST['blogs_search'], $pag_num, $pag_page );
    14     } else {
    15         $blogs = BP_Blogs_Blog::get_all( $pag_num, $pag_page );
    16     }
    17    
    18     $pag_links = paginate_links( array(
    19         'base' => add_query_arg( 'page', '%#%' ),
    20         'format' => '',
    21         'total' => ceil( $blogs['total'] / $pag_num ),
    22         'current' => $pag_page,
    23         'prev_text' => '«',
    24         'next_text' => '»',
    25         'mid_size' => 1
    26     ));
    27    
    28     $from_num = intval( ( $pag_page - 1 ) * $pag_num ) + 1;
    29     $to_num = ( $from_num + 9 > $blogs['total'] ) ? $blogs['total'] : $from_num + 9;
    30 
    31     if ( $blogs['blogs'] ) {
    32         echo '0[[SPLIT]]'; // return valid result.
    33        
    34         ?>
    35         <div id="blog-dir-count" class="pag-count">
    36             <?php echo sprintf( __( 'Viewing blog %d to %d (%d total active blogs)', 'buddypress' ), $from_num, $to_num, $blogs['total'] ); ?> &nbsp;
    37             <img id="ajax-loader-blogs" src="<?php echo $bp->core->image_base ?>/ajax-loader.gif" height="7" alt="<?php _e( "Loading", "buddypress" ) ?>" style="display: none;" />
    38         </div>
    39    
    40         <div class="pagination-links" id="blog-dir-pag">
    41             <?php echo $pag_links ?>
    42         </div>
    43 
    44         <ul id="blogs-list" class="item-list">
    45         <?php foreach ( $blogs['blogs'] as $blog ) : ?>
    46             <li>
    47                 <div class="item-avatar">
    48                     <img src="<?php echo 'http://www.gravatar.com/avatar/' . md5( $blog->blog_id . '.blogs@' . $bp->root_domain ) . '?d=identicon&amp;s=50'; ?>" class="avatar" alt="<?php _e( 'Blog Identicon', 'buddypress' ) ?>" />
    49                 </div>
    50 
    51                 <div class="item">
    52                     <div class="item-title"><a href="<?php echo get_blog_option( $blog->blog_id, 'siteurl' ) ?>" title="<?php echo get_blog_option( $blog->blog_id, 'blogname' ) ?>"><?php echo get_blog_option( $blog->blog_id, 'blogname' ) ?></a></div>
    53                     <div class="item-meta"><span class="activity"><?php echo bp_core_get_last_activity( bp_blogs_get_blogmeta( $blog->blog_id, 'last_activity' ), __( 'active %s ago', 'buddypress' ) ) ?></span></div>
    54                 </div>
    55                
    56                 <div class="action">
    57                     <div class="blog-button visit">
    58                         <a href="<?php echo get_blog_option( $blog->blog_id, 'siteurl' ) ?>" class="visit" title="<?php printf( __( 'Visit %s', 'buddypress' ), get_blog_option( $blog->blog_id, 'blogname' ) ) ?>"><?php _e( 'Visit Blog', 'buddypress' ) ?></a>
    59                     </div>
    60                     <div class="meta">
    61                         <?php
    62                             if ( $post = bp_blogs_get_latest_posts( $blog->blog_id, 1 ) ) {
    63                                 printf( __( 'Latest Post: %s', 'buddypress' ), '<a href="' . bp_post_get_permalink( $post[0], $blog->blog_id ) . '">' . apply_filters( 'the_title', $post[0]->post_title ) . '</a>' );
    64                             }
    65                         ?>
    66                     </div>
    67                 </div>
    68                
    69                 <div class="clear"></div>
    70             </li>
    71         <?php endforeach; ?>
    72         </ul>   
    73     <?php
    74     } else {
    75         echo "-1[[SPLIT]]<div id='message' class='error'><p>" . __("No blogs matched the current filter.", 'buddypress') . '</p></div>';
    76     }
    77    
    78     if ( isset( $_POST['letter'] ) ) {
    79         echo '<input type="hidden" id="selected_letter" value="' . $_POST['letter'] . '" name="selected_letter" />';
    80     }
    81    
    82     if ( isset( $_POST['blogs_search'] ) ) {
    83         echo '<input type="hidden" id="search_terms" value="' . $_POST['blogs_search'] . '" name="search_terms" />';
    84     }
    85 
     7    load_template( TEMPLATEPATH . '/directories/blogs/blogs-loop.php' );
    868}
    879add_action( 'wp_ajax_directory_blogs', 'bp_blogs_ajax_directory_blogs' );
  • trunk/bp-blogs/bp-blogs-classes.php

    r1238 r1250  
    220220    }
    221221   
     222    function get_active( $limit = null, $page = null ) {
     223        global $bp, $wpdb;
     224       
     225        if ( !$bp->blogs )
     226            bp_blogs_setup_globals();
     227       
     228        if ( $limit && $page ) {
     229            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     230            $total_blogs = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE wb.public = 1 AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 AND bm.meta_key = 'last_activity' ORDER BY CONVERT(bm.meta_value, SIGNED) DESC" ) );
     231        }
     232           
     233        $paged_blogs = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE wb.public = 1 AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 AND bm.meta_key = 'last_activity' ORDER BY CONVERT(bm.meta_value, SIGNED) DESC {$pag_sql}" ) );
     234
     235        return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
     236    }
     237   
     238    function get_newest( $limit = null, $page = null ) {
     239        global $bp, $wpdb;
     240       
     241        if ( !$bp->blogs )
     242            bp_blogs_setup_globals();
     243       
     244        if ( $limit && $page ) {
     245            $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     246            $total_blogs = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT count(wb.blog_id) FROM {$wpdb->base_prefix}blogs wb WHERE wb.public = 1 AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 ORDER BY wb.registered DESC" ) );
     247        }
     248           
     249        $paged_blogs = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT wb.blog_id FROM {$wpdb->base_prefix}blogs wb WHERE wb.public = 1 AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 ORDER BY wb.registered DESC {$pag_sql}" ) );
     250
     251        return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
     252    }
     253   
    222254    function is_hidden( $blog_id ) {
    223255        global $wpdb;
  • trunk/bp-blogs/bp-blogs-templatetags.php

    r1238 r1250  
    11<?php
    22
    3 /** Blog listing template class **/
    4 class BP_Blogs_Blog_Template {
     3/* Blog registration template tags */
     4
     5function bp_blog_signup_enabled() {
     6    $active_signup = get_site_option( 'registration' );
     7   
     8    if ( !$active_signup )
     9        $active_signup = 'all';
     10       
     11    $active_signup = apply_filters( 'wpmu_active_signup', $active_signup ); // return "all", "none", "blog" or "user"
     12   
     13    if ( 'none' == $active_signup || 'user' == $active_signup )
     14        return false;
     15   
     16    return true;
     17}
     18
     19function bp_show_blog_signup_form($blogname = '', $blog_title = '', $errors = '') {
     20    global $current_user, $current_site;
     21    global $bp;
     22       
     23    require_once( ABSPATH . WPINC . '/registration.php' );
     24
     25    if ( isset($_POST['submit']) ) {
     26        bp_blogs_validate_blog_signup();
     27    } else {
     28        if ( ! is_wp_error($errors) ) {
     29            $errors = new WP_Error();
     30        }
     31
     32        // allow definition of default variables
     33        $filtered_results = apply_filters('signup_another_blog_init', array('blogname' => $blogname, 'blog_title' => $blog_title, 'errors' => $errors ));
     34        $blogname = $filtered_results['blogname'];
     35        $blog_title = $filtered_results['blog_title'];
     36        $errors = $filtered_results['errors'];
     37
     38        if ( $errors->get_error_code() ) {
     39            echo "<p>" . __('There was a problem, please correct the form below and try again.', 'buddypress') . "</p>";
     40        }
     41        ?>
     42        <p><?php printf(__("By filling out the form below, you can <strong>add a blog to your account</strong>. There is no limit to the number of blogs you can have, so create to your heart's content, but blog responsibly.", 'buddypress'), $current_user->display_name) ?></p>
     43
     44        <p><?php _e("If you&#8217;re not going to use a great blog domain, leave it for a new user. Now have at it!", 'buddypress') ?></p>
     45
     46        <form id="setupform" method="post" action="<?php echo $bp->loggedin_user->domain . $bp->blogs->slug . '/create-a-blog' ?>">
     47
     48            <input type="hidden" name="stage" value="gimmeanotherblog" />
     49            <?php do_action( "signup_hidden_fields" ); ?>
     50            <?php bp_blogs_signup_blog($blogname, $blog_title, $errors); ?>
     51            <p>
     52                <input id="submit" type="submit" name="submit" class="submit" value="<?php _e('Create Blog &raquo;', 'buddypress') ?>" />
     53            </p>
     54           
     55            <?php wp_nonce_field( 'bp_blog_signup_form' ) ?>
     56        </form>
     57        <?php
     58    }
     59}
     60
     61function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' ) {
     62    global $current_site;
     63   
     64    // Blog name
     65    if( 'no' == constant( "VHOST" ) )
     66        echo '<label for="blogname">' . __('Blog Name:', 'buddypress') . '</label>';
     67    else
     68        echo '<label for="blogname">' . __('Blog Domain:', 'buddypress') . '</label>';
     69
     70    if ( $errmsg = $errors->get_error_message('blogname') ) { ?>
     71        <p class="error"><?php echo $errmsg ?></p>
     72    <?php }
     73
     74    if( 'no' == constant( "VHOST" ) ) {
     75        echo '<span class="prefix_address">' . $current_site->domain . $current_site->path . '</span><input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="50" /><br />';
     76    } else {
     77        echo '<input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="50" /><span class="suffix_address">.' . $current_site->domain . $current_site->path . '</span><br />';
     78    }
     79    if ( !is_user_logged_in() ) {
     80        print '(<strong>' . __( 'Your address will be ' , 'buddypress');
     81        if( 'no' == constant( "VHOST" ) ) {
     82            print $current_site->domain . $current_site->path . __( 'blogname' , 'buddypress');
     83        } else {
     84            print __( 'domain.' , 'buddypress') . $current_site->domain . $current_site->path;
     85        }
     86        echo '.</strong> ' . __( 'Must be at least 4 characters, letters and numbers only. It cannot be changed so choose carefully!)' , 'buddypress') . '</p>';
     87    }
     88
     89    // Blog Title
     90    ?>
     91    <label for="blog_title"><?php _e('Blog Title:', 'buddypress') ?></label>   
     92    <?php if ( $errmsg = $errors->get_error_message('blog_title') ) { ?>
     93        <p class="error"><?php echo $errmsg ?></p>
     94    <?php }
     95    echo '<input name="blog_title" type="text" id="blog_title" value="'.wp_specialchars($blog_title, 1).'" /></p>';
     96    ?>
     97
     98    <p>
     99        <label for="blog_public_on"><?php _e('Privacy:', 'buddypress') ?></label>
     100        <?php _e('I would like my blog to appear in search engines like Google and Technorati, and in public listings around this site.', 'buddypress'); ?>
     101        <div style="clear:both;"></div>
     102        <label class="checkbox" for="blog_public_on">
     103            <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if( !isset( $_POST['blog_public'] ) || '1' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
     104            <strong><?php _e( 'Yes' , 'buddypress'); ?></strong>
     105        </label>
     106        <label class="checkbox" for="blog_public_off">
     107            <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php if( isset( $_POST['blog_public'] ) && '0' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
     108            <strong><?php _e( 'No' , 'buddypress'); ?></strong>
     109        </label>
     110    </p>
     111
     112    <?php
     113    do_action('signup_blogform', $errors);
     114}
     115
     116function bp_blogs_validate_blog_signup() {
     117    global $wpdb, $current_user, $blogname, $blog_title, $errors, $domain, $path;
     118
     119    if ( !check_admin_referer( 'bp_blog_signup_form' ) )
     120        return false;
     121
     122    $current_user = wp_get_current_user();
     123   
     124    if( !is_user_logged_in() )
     125        die();
     126
     127    $result = bp_blogs_validate_blog_form();
     128    extract($result);
     129
     130    if ( $errors->get_error_code() ) {
     131        unset($_POST['submit']);
     132        bp_show_blog_signup_form( $blogname, $blog_title, $errors );
     133        return false;
     134    }
     135
     136    $public = (int) $_POST['blog_public'];
     137   
     138    $meta = apply_filters( 'signup_create_blog_meta', array( 'lang_id' => 1, 'public' => $public ) ); // depreciated
     139    $meta = apply_filters( 'add_signup_meta', $meta );
     140   
     141    /* If this is a VHOST install, remove the username from the domain as we are setting this blog
     142       up inside a user domain, not the root domain. */
     143   
     144    wpmu_create_blog( $domain, $path, $blog_title, $current_user->id, $meta, $wpdb->siteid );
     145    bp_blogs_confirm_blog_signup($domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta);
     146    return true;
     147}
     148
     149function bp_blogs_validate_blog_form() {
     150    $user = '';
     151    if ( is_user_logged_in() )
     152        $user = wp_get_current_user();
     153
     154    return wpmu_validate_blog_signup($_POST['blogname'], $_POST['blog_title'], $user);
     155}
     156
     157function bp_blogs_confirm_blog_signup( $domain, $path, $blog_title, $user_name, $user_email = '', $meta = '' ) {
     158    ?>
     159    <p><?php _e('Congratulations! You have successfully registered a new blog.', 'buddypress') ?></p>
     160    <p>
     161        <?php printf(__('<a href="http://%1$s">http://%2$s</a> is your new blog.  <a href="%3$s">Login</a> as "%4$s" using your existing password.', 'buddypress'), $domain.$path, $domain.$path, "http://" . $domain.$path . "wp-login.php", $user_name) ?>
     162    </p>
     163    <?php
     164    do_action('signup_finished');
     165}
     166
     167function bp_create_blog_link() {
     168    global $bp;
     169   
     170    if ( bp_is_home() ) {
     171        echo apply_filters( 'bp_create_blog_link', '<a href="' . $bp->loggedin_user->domain . $bp->blogs->slug . '/create-a-blog">' . __('Create a Blog', 'buddypress') . '</a>' );
     172    }
     173}
     174
     175function bp_blogs_blog_tabs() {
     176    global $bp, $groups_template;
     177   
     178    // Don't show these tabs on a user's own profile
     179    if ( bp_is_home() )
     180        return false;
     181   
     182    $current_tab = $bp->current_action
     183?>
     184    <ul class="content-header-nav">
     185        <li<?php if ( 'my-blogs' == $current_tab || empty( $current_tab ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->blogs->slug ?>/my-blogs"><?php printf( __( "%s's Blogs", 'buddypress' ), $bp->displayed_user->fullname )  ?></a></li>
     186        <li<?php if ( 'recent-posts' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->blogs->slug ?>/recent-posts"><?php printf( __( "%s's Recent Posts", 'buddypress' ), $bp->displayed_user->fullname )  ?></a></li>
     187        <li<?php if ( 'recent-comments' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->blogs->slug ?>/recent-comments"><?php printf( __( "%s's Recent Comments", 'buddypress' ), $bp->displayed_user->fullname )  ?></a></li>
     188    </ul>
     189<?php
     190    do_action( 'bp_blogs_blog_tabs', $current_tab );
     191}
     192
     193/**********************************************************************
     194 * User Blog listing template class
     195 */
     196
     197class BP_Blogs_User_Blogs_Template {
    5198    var $current_blog = -1;
    6199    var $blog_count;
     
    15208    var $total_blog_count;
    16209   
    17     function bp_blogs_blog_template( $user_id = null ) {
     210    function bp_blogs_user_blogs_template( $user_id = null ) {
    18211        global $bp;
    19212       
     
    22215
    23216        $this->pag_page = isset( $_GET['fpage'] ) ? intval( $_GET['fpage'] ) : 1;
    24         $this->pag_num = isset( $_GET['num'] ) ? intval( $_GET['num'] ) : 5;
    25 
    26         $this->blogs = bp_blogs_get_blogs_for_user( $user_id );
    27        
    28         if ( !$this->blogs = wp_cache_get( 'bp_user_blogs_' . $user_id, 'bp' ) ) {
     217        $this->pag_num = isset( $_GET['num'] ) ? intval( $_GET['num'] ) : 10;
     218
     219        if ( !$this->blogs = wp_cache_get( 'bp_blogs_for_user_' . $user_id, 'bp' ) ) {
    29220            $this->blogs = bp_blogs_get_blogs_for_user( $user_id );
    30             wp_cache_set( 'bp_user_blogs_' . $user_id, $this->blogs, 'bp' );
     221            wp_cache_set( 'bp_blogs_for_user_' . $user_id, $this->blogs, 'bp' );
    31222        }
    32223       
     
    94285    global $blogs_template;
    95286
    96     $blogs_template = new BP_Blogs_Blog_Template;
     287    $blogs_template = new BP_Blogs_User_Blogs_Template;
    97288    return $blogs_template->has_blogs();
    98289}
     
    124315
    125316
    126 /** User Blog posts listing template class **/
     317/**********************************************************************
     318 * User Blog Posts listing template class
     319 */
    127320
    128321class BP_Blogs_Blog_Post_Template {
     
    146339
    147340        $this->pag_page = isset( $_GET['fpage'] ) ? intval( $_GET['fpage'] ) : 1;
    148         $this->pag_num = isset( $_GET['num'] ) ? intval( $_GET['num'] ) : 5;
     341        $this->pag_num = isset( $_GET['num'] ) ? intval( $_GET['num'] ) : 10;
    149342       
    150343        if ( !$this->posts = wp_cache_get( 'bp_user_posts_' . $user_id, 'bp' ) ) {
     
    476669
    477670
    478 /** User Blog comments listing template class **/
     671/**********************************************************************
     672 * User Blog Comments listing template class
     673 */
    479674
    480675class BP_Blogs_Post_Comment_Template {
     
    498693
    499694        $this->pag_page = isset( $_GET['fpage'] ) ? intval( $_GET['fpage'] ) : 1;
    500         $this->pag_num = isset( $_GET['num'] ) ? intval( $_GET['num'] ) : 5;
     695        $this->pag_num = isset( $_GET['num'] ) ? intval( $_GET['num'] ) : 10;
    501696       
    502697        if ( !$this->comments = wp_cache_get( 'bp_user_comments_' . $user_id, 'bp' ) ) {
     
    654849}
    655850
    656 
    657 /* Blog registration template tags */
    658 
    659 function bp_blog_signup_enabled() {
    660     $active_signup = get_site_option( 'registration' );
    661    
    662     if ( !$active_signup )
    663         $active_signup = 'all';
    664        
    665     $active_signup = apply_filters( 'wpmu_active_signup', $active_signup ); // return "all", "none", "blog" or "user"
    666    
    667     if ( 'none' == $active_signup || 'user' == $active_signup )
    668         return false;
    669    
    670     return true;
    671 }
    672 
    673 function bp_show_blog_signup_form($blogname = '', $blog_title = '', $errors = '') {
    674     global $current_user, $current_site;
    675     global $bp;
    676        
    677     require_once( ABSPATH . WPINC . '/registration.php' );
    678 
    679     if ( isset($_POST['submit']) ) {
    680         bp_blogs_validate_blog_signup();
    681     } else {
    682         if ( ! is_wp_error($errors) ) {
    683             $errors = new WP_Error();
    684         }
    685 
    686         // allow definition of default variables
    687         $filtered_results = apply_filters('signup_another_blog_init', array('blogname' => $blogname, 'blog_title' => $blog_title, 'errors' => $errors ));
    688         $blogname = $filtered_results['blogname'];
    689         $blog_title = $filtered_results['blog_title'];
    690         $errors = $filtered_results['errors'];
    691 
    692         if ( $errors->get_error_code() ) {
    693             echo "<p>" . __('There was a problem, please correct the form below and try again.', 'buddypress') . "</p>";
    694         }
    695         ?>
    696         <p><?php printf(__("By filling out the form below, you can <strong>add a blog to your account</strong>. There is no limit to the number of blogs you can have, so create to your heart's content, but blog responsibly.", 'buddypress'), $current_user->display_name) ?></p>
    697 
    698         <p><?php _e("If you&#8217;re not going to use a great blog domain, leave it for a new user. Now have at it!", 'buddypress') ?></p>
    699 
    700         <form id="setupform" method="post" action="<?php echo $bp->loggedin_user->domain . $bp->blogs->slug . '/create-a-blog' ?>">
    701 
    702             <input type="hidden" name="stage" value="gimmeanotherblog" />
    703             <?php do_action( "signup_hidden_fields" ); ?>
    704             <?php bp_blogs_signup_blog($blogname, $blog_title, $errors); ?>
    705             <p>
    706                 <input id="submit" type="submit" name="submit" class="submit" value="<?php _e('Create Blog &raquo;', 'buddypress') ?>" />
    707             </p>
    708            
    709             <?php wp_nonce_field( 'bp_blog_signup_form' ) ?>
    710         </form>
    711         <?php
    712     }
    713 }
    714 
    715 function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' ) {
    716     global $current_site;
    717    
    718     // Blog name
    719     if( 'no' == constant( "VHOST" ) )
    720         echo '<label for="blogname">' . __('Blog Name:', 'buddypress') . '</label>';
    721     else
    722         echo '<label for="blogname">' . __('Blog Domain:', 'buddypress') . '</label>';
    723 
    724     if ( $errmsg = $errors->get_error_message('blogname') ) { ?>
    725         <p class="error"><?php echo $errmsg ?></p>
    726     <?php }
    727 
    728     if( 'no' == constant( "VHOST" ) ) {
    729         echo '<span class="prefix_address">' . $current_site->domain . $current_site->path . '</span><input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="50" /><br />';
    730     } else {
    731         echo '<input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="50" /><span class="suffix_address">.' . $current_site->domain . $current_site->path . '</span><br />';
    732     }
    733     if ( !is_user_logged_in() ) {
    734         print '(<strong>' . __( 'Your address will be ' , 'buddypress');
    735         if( 'no' == constant( "VHOST" ) ) {
    736             print $current_site->domain . $current_site->path . __( 'blogname' , 'buddypress');
     851/**********************************************************************
     852 * Site Wide Blog listing template class
     853 */
     854
     855class BP_Blogs_Site_Blogs_Template {
     856    var $current_blog = -1;
     857    var $blog_count;
     858    var $blogs;
     859    var $blog;
     860   
     861    var $in_the_loop;
     862   
     863    var $pag_page;
     864    var $pag_num;
     865    var $pag_links;
     866    var $total_blog_count;
     867   
     868    function bp_blogs_site_blogs_template( $type, $per_page, $max ) {
     869        global $bp;
     870
     871        $this->pag_page = isset( $_REQUEST['page'] ) ? intval( $_REQUEST['page'] ) : 1;
     872        $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
     873               
     874        if ( isset( $_REQUEST['s'] ) && '' != $_REQUEST['s'] && $type != 'random' ) {
     875            $this->blogs = BP_Blogs_Blog::search_blogs( $_REQUEST['s'], $this->pag_num, $this->pag_page );
     876        } else if ( isset( $_REQUEST['letter'] ) && '' != $_REQUEST['letter'] ) {
     877            $this->blogs = BP_Blogs_Blog::get_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page );
    737878        } else {
    738             print __( 'domain.' , 'buddypress') . $current_site->domain . $current_site->path;
    739         }
    740         echo '.</strong> ' . __( 'Must be at least 4 characters, letters and numbers only. It cannot be changed so choose carefully!)' , 'buddypress') . '</p>';
    741     }
    742 
    743     // Blog Title
    744     ?>
    745     <label for="blog_title"><?php _e('Blog Title:', 'buddypress') ?></label>   
    746     <?php if ( $errmsg = $errors->get_error_message('blog_title') ) { ?>
    747         <p class="error"><?php echo $errmsg ?></p>
    748     <?php }
    749     echo '<input name="blog_title" type="text" id="blog_title" value="'.wp_specialchars($blog_title, 1).'" /></p>';
    750     ?>
    751 
    752     <p>
    753         <label for="blog_public_on"><?php _e('Privacy:', 'buddypress') ?></label>
    754         <?php _e('I would like my blog to appear in search engines like Google and Technorati, and in public listings around this site.', 'buddypress'); ?>
    755         <div style="clear:both;"></div>
    756         <label class="checkbox" for="blog_public_on">
    757             <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if( !isset( $_POST['blog_public'] ) || '1' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
    758             <strong><?php _e( 'Yes' , 'buddypress'); ?></strong>
    759         </label>
    760         <label class="checkbox" for="blog_public_off">
    761             <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php if( isset( $_POST['blog_public'] ) && '0' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
    762             <strong><?php _e( 'No' , 'buddypress'); ?></strong>
    763         </label>
    764     </p>
    765 
    766     <?php
    767     do_action('signup_blogform', $errors);
    768 }
    769 
    770 function bp_blogs_validate_blog_signup() {
    771     global $wpdb, $current_user, $blogname, $blog_title, $errors, $domain, $path;
    772 
    773     if ( !check_admin_referer( 'bp_blog_signup_form' ) )
    774         return false;
    775 
    776     $current_user = wp_get_current_user();
    777    
    778     if( !is_user_logged_in() )
    779         die();
    780 
    781     $result = bp_blogs_validate_blog_form();
    782     extract($result);
    783 
    784     if ( $errors->get_error_code() ) {
    785         unset($_POST['submit']);
    786         bp_show_blog_signup_form( $blogname, $blog_title, $errors );
    787         return false;
    788     }
    789 
    790     $public = (int) $_POST['blog_public'];
    791    
    792     $meta = apply_filters( 'signup_create_blog_meta', array( 'lang_id' => 1, 'public' => $public ) ); // depreciated
    793     $meta = apply_filters( 'add_signup_meta', $meta );
    794    
    795     /* If this is a VHOST install, remove the username from the domain as we are setting this blog
    796        up inside a user domain, not the root domain. */
    797    
    798     wpmu_create_blog( $domain, $path, $blog_title, $current_user->id, $meta, $wpdb->siteid );
    799     bp_blogs_confirm_blog_signup($domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta);
    800     return true;
    801 }
    802 
    803 function bp_blogs_validate_blog_form() {
    804     $user = '';
    805     if ( is_user_logged_in() )
    806         $user = wp_get_current_user();
    807 
    808     return wpmu_validate_blog_signup($_POST['blogname'], $_POST['blog_title'], $user);
    809 }
    810 
    811 function bp_blogs_confirm_blog_signup( $domain, $path, $blog_title, $user_name, $user_email = '', $meta = '' ) {
    812     ?>
    813     <p><?php _e('Congratulations! You have successfully registered a new blog.', 'buddypress') ?></p>
    814     <p>
    815         <?php printf(__('<a href="http://%1$s">http://%2$s</a> is your new blog.  <a href="%3$s">Login</a> as "%4$s" using your existing password.', 'buddypress'), $domain.$path, $domain.$path, "http://" . $domain.$path . "wp-login.php", $user_name) ?>
    816     </p>
    817     <?php
    818     do_action('signup_finished');
    819 }
    820 
    821 function bp_create_blog_link() {
    822     global $bp;
    823    
    824     if ( bp_is_home() ) {
    825         echo apply_filters( 'bp_create_blog_link', '<a href="' . $bp->loggedin_user->domain . $bp->blogs->slug . '/create-a-blog">' . __('Create a Blog', 'buddypress') . '</a>' );
    826     }
    827 }
    828 
    829 function bp_blogs_blog_tabs() {
    830     global $bp, $groups_template;
    831    
    832     // Don't show these tabs on a user's own profile
    833     if ( bp_is_home() )
    834         return false;
    835    
    836     $current_tab = $bp->current_action
     879            switch ( $type ) {
     880                case 'random':
     881                    $this->blogs = BP_Blogs_Blog::get_random( $this->pag_num, $this->pag_page );
     882                    break;
     883               
     884                case 'newest':
     885                    $this->blogs = BP_Blogs_Blog::get_newest( $this->pag_num, $this->pag_page );
     886                    break; 
     887               
     888                case 'active': default:
     889                    $this->blogs = BP_Blogs_Blog::get_active( $this->pag_num, $this->pag_page );
     890                    break;                 
     891            }
     892        }
     893       
     894        if ( !$max )
     895            $this->total_blog_count = (int)$this->blogs['total'];
     896        else
     897            $this->total_blog_count = (int)$max;
     898
     899        $this->blogs = $this->blogs['blogs'];
     900        $this->blog_count = count($this->blogs);
     901
     902        $this->pag_links = paginate_links( array(
     903            'base' => add_query_arg( 'page', '%#%' ),
     904            'format' => '',
     905            'total' => ceil( (int) $this->total_blog_count / (int) $this->pag_num ),
     906            'current' => (int) $this->pag_page,
     907            'prev_text' => '&laquo;',
     908            'next_text' => '&raquo;',
     909            'mid_size' => 1
     910        ));     
     911    }
     912   
     913    function has_blogs() {
     914        if ( $this->blog_count )
     915            return true;
     916       
     917        return false;
     918    }
     919   
     920    function next_blog() {
     921        $this->current_blog++;
     922        $this->blog = $this->blogs[$this->current_blog];
     923       
     924        return $this->blog;
     925    }
     926   
     927    function rewind_blogs() {
     928        $this->current_blog = -1;
     929        if ( $this->blog_count > 0 ) {
     930            $this->blog = $this->blogs[0];
     931        }
     932    }
     933   
     934    function blogs() {
     935        if ( $this->current_blog + 1 < $this->blog_count ) {
     936            return true;
     937        } elseif ( $this->current_blog + 1 == $this->blog_count ) {
     938            do_action('loop_end');
     939            // Do some cleaning up after the loop
     940            $this->rewind_blogs();
     941        }
     942
     943        $this->in_the_loop = false;
     944        return false;
     945    }
     946   
     947    function the_blog() {
     948        global $blog;
     949
     950        $this->in_the_loop = true;
     951        $this->blog = $this->next_blog();
     952       
     953        if ( 0 == $this->current_blog ) // loop has just started
     954            do_action('loop_start');
     955    }
     956}
     957
     958function bp_rewind_site_blogs() {
     959    global $site_blogs_template;
     960   
     961    $site_blogs_template->rewind_blogs();   
     962}
     963
     964function bp_has_site_blogs( $args = '' ) {
     965    global $site_blogs_template;
     966
     967    $defaults = array(
     968        'type' => 'active',
     969        'per_page' => 10,
     970        'max' => false
     971    );
     972
     973    $r = wp_parse_args( $args, $defaults );
     974    extract( $r, EXTR_SKIP );
     975   
     976    // type: active ( default ) | random | newest | popular
     977   
     978    if ( $max ) {
     979        if ( $per_page > $max )
     980            $per_page = $max;
     981    }
     982       
     983    $site_blogs_template = new BP_Blogs_Site_Blogs_Template( $type, $per_page, $max );
     984
     985    return $site_blogs_template->has_blogs();
     986}
     987
     988function bp_site_blogs() {
     989    global $site_blogs_template;
     990   
     991    return $site_blogs_template->blogs();
     992}
     993
     994function bp_the_site_blog() {
     995    global $site_blogs_template;
     996   
     997    return $site_blogs_template->the_blog();
     998}
     999
     1000function bp_site_blogs_pagination_count() {
     1001    global $bp, $site_blogs_template;
     1002   
     1003    $from_num = intval( ( $site_blogs_template->pag_page - 1 ) * $site_blogs_template->pag_num ) + 1;
     1004    $to_num = ( $from_num + ( $site_blogs_template->pag_num - 1 ) > $site_blogs_template->total_blog_count ) ? $site_blogs_template->total_blog_count : $from_num + ( $site_blogs_template->pag_num - 1 ) ;
     1005
     1006    echo sprintf( __( 'Viewing blog %d to %d (of %d blogs)', 'buddypress' ), $from_num, $to_num, $site_blogs_template->total_blog_count ); ?> &nbsp;
     1007    <img id="ajax-loader-blogs" src="<?php echo $bp->core->image_base ?>/ajax-loader.gif" height="7" alt="<?php _e( "Loading", "buddypress" ) ?>" style="display: none;" /><?php
     1008}
     1009
     1010function bp_site_blogs_pagination_links() {
     1011    global $site_blogs_template;
     1012    echo $site_blogs_template->pag_links;
     1013}
     1014
     1015function bp_the_site_blog_avatar() {
     1016    global $site_blogs_template, $bp;
     1017
     1018    /***
     1019     * In future BuddyPress versions you will be able to set the avatar for a blog.
     1020     * Right now you can use a filter with the ID of the blog to change it if you wish.
     1021     */
     1022   
     1023    echo apply_filters( 'bp_blogs_blog_avatar_' . $site_blogs_template->blog->blog_id, '<img src="http://www.gravatar.com/avatar/' . md5( $site_blogs_template->blog->blog_id . '.blogs@' . $bp->root_domain ) . '?d=identicon&amp;s=150" class="avatar blog-avatar" alt="' . __( 'Blog Avatar', 'buddypress' ) . '" />' );
     1024}
     1025
     1026function bp_the_site_blog_avatar_thumb() {
     1027    global $site_blogs_template, $bp;
     1028
     1029    echo apply_filters( 'bp_blogs_blog_avatar_thumb_' . $site_blogs_template->blog->blog_id, '<img src="http://www.gravatar.com/avatar/' . md5( $site_blogs_template->blog->blog_id . '.blogs@' . $bp->root_domain ) . '?d=identicon&amp;s=50" class="avatar blog-avatar thumb" alt="' . __( 'Blog Avatar', 'buddypress' ) . '" />' );
     1030}
     1031
     1032function bp_the_site_blog_avatar_mini() {
     1033    global $site_blogs_template, $bp;
     1034   
     1035    echo apply_filters( 'bp_blogs_blog_avatar_mini_' . $site_blogs_template->blog->blog_id, '<img src="http://www.gravatar.com/avatar/' . md5( $site_blogs_template->blog->blog_id . '.blogs@' . $bp->root_domain ) . '?d=identicon&amp;s=25" class="avatar blog-avatar mini" alt="' . __( 'Blog Avatar', 'buddypress' ) . '" />' );
     1036}
     1037
     1038function bp_the_site_blog_link() {
     1039    global $site_blogs_template;
     1040   
     1041    echo get_blog_option( $site_blogs_template->blog->blog_id, 'siteurl' );
     1042}
     1043
     1044function bp_the_site_blog_name() {
     1045    global $site_blogs_template;
     1046   
     1047    echo get_blog_option( $site_blogs_template->blog->blog_id, 'blogname' );
     1048}
     1049
     1050function bp_the_site_blog_description() {
     1051    global $site_blogs_template;
     1052   
     1053    echo get_blog_option( $site_blogs_template->blog->blog_id, 'blogdescription' );
     1054}
     1055
     1056function bp_the_site_blog_last_active() {
     1057    global $site_blogs_template;
     1058
     1059    echo bp_core_get_last_activity( bp_blogs_get_blogmeta( $site_blogs_template->blog->blog_id, 'last_activity' ), __( 'active %s ago', 'buddypress' ) );
     1060}
     1061
     1062function bp_the_site_blog_latest_post() {
     1063    global $site_blogs_template;
     1064   
     1065    if ( $post = bp_blogs_get_latest_posts( $site_blogs_template->blog->blog_id, 1 ) ) {
     1066        printf( __( 'Latest Post: %s', 'buddypress' ), '<a href="' . bp_post_get_permalink( $post[0], $site_blogs_template->blog->blog_id ) . '">' . apply_filters( 'the_title', $post[0]->post_title ) . '</a>' );
     1067    }
     1068}
     1069
     1070
     1071function bp_the_site_blog_hidden_fields() {
     1072    if ( isset( $_REQUEST['s'] ) ) {
     1073        echo '<input type="hidden" id="search_terms" value="' . attribute_escape( $_REQUEST['s'] ). '" name="search_terms" />';
     1074    }
     1075   
     1076    if ( isset( $_REQUEST['letter'] ) ) {
     1077        echo '<input type="hidden" id="selected_letter" value="' . attribute_escape( $_REQUEST['letter'] ) . '" name="selected_letter" />';
     1078    }
     1079   
     1080    if ( isset( $_REQUEST['blogs_search'] ) ) {
     1081        echo '<input type="hidden" id="search_terms" value="' . attribute_escape( $_REQUEST['blogs_search'] ) . '" name="search_terms" />';
     1082    }
     1083}
     1084
     1085function bp_directory_blogs_search_form() {
     1086    global $bp; ?>
     1087    <form action="<?php echo $bp->root_domain . '/' . blogs_SLUG  . '/search/' ?>" method="post" id="search-blogs-form">
     1088        <label><input type="text" name="blogs_search" id="blogs_search" value="<?php if ( isset( $_GET['s'] ) ) { echo $_GET['s']; } else { _e( 'Search anything...', 'buddypress' ); } ?>"  onfocus="if (this.value == '<?php _e( 'Search anything...', 'buddypress' ) ?>') {this.value = '';}" onblur="if (this.value == '') {this.value = '<?php _e( 'Search anything...', 'buddypress' ) ?>';}" /></label>
     1089        <input type="submit" id="blogs_search_submit" name="blogs_search_submit" value="<?php _e( 'Search', 'buddypress' ) ?>" />
     1090    </form>
     1091<?php
     1092}
     1093
     1094
    8371095?>
    838     <ul class="content-header-nav">
    839         <li<?php if ( 'my-blogs' == $current_tab || empty( $current_tab ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->blogs->slug ?>/my-blogs"><?php printf( __( "%s's Blogs", 'buddypress' ), $bp->displayed_user->fullname )  ?></a></li>
    840         <li<?php if ( 'recent-posts' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->blogs->slug ?>/recent-posts"><?php printf( __( "%s's Recent Posts", 'buddypress' ), $bp->displayed_user->fullname )  ?></a></li>
    841         <li<?php if ( 'recent-comments' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->blogs->slug ?>/recent-comments"><?php printf( __( "%s's Recent Comments", 'buddypress' ), $bp->displayed_user->fullname )  ?></a></li>
    842     </ul>
    843 <?php
    844     do_action( 'bp_blogs_blog_tabs', $current_tab );
    845 }
    846 
    847 ?>
  • trunk/bp-blogs/bp-blogs-widgets.php

    r1244 r1250  
    88    wp_register_sidebar_widget( 'buddypress-blogs', __('Recent Blog Posts', 'buddypress'), 'bp_blogs_widget_recent_posts');
    99    wp_register_widget_control( 'buddypress-blogs', __('Recent Blog Posts', 'buddypress'), 'bp_blogs_widget_recent_posts_control' );
     10
     11    if ( is_active_widget( 'bp_blogs_widget_recent_posts' ) ) {
     12        wp_enqueue_style( 'bp-blogs-widget-posts-css', WPMU_PLUGIN_URL . '/bp-blogs/css/widget-blogs.css' );       
     13    }
    1014}
    1115add_action( 'plugins_loaded', 'bp_blogs_register_widgets' );
  • trunk/bp-blogs/js/directory-blogs.js

    r1052 r1250  
    1616                '_wpnonce': jQuery("input#_wpnonce-blog-filter").val(),
    1717                'letter': letter[1],
    18                 'page': 1,
    19                 'num': 10
     18                'page': 1
    2019            },
    2120            function(response)
    2221            {   
    2322                response = response.substr(0, response.length-1);
    24                 response = response.split('[[SPLIT]]');
    25 
    26                 if ( response[0] != "-1" ) {
    27                     jQuery("#blog-dir-list").fadeOut(200,
    28                         function() {
    29                             jQuery('#ajax-loader-blogs').toggle();
    30                             jQuery("#blog-dir-list").html(response[1]);
    31                             jQuery("#blog-dir-list").fadeIn(200);
    32                         }
    33                     );
    34 
    35                 } else {                   
    36                     jQuery("ul#blogs-list").fadeOut(200,
    37                         function() {
    38                             jQuery('#ajax-loader-blogs').toggle();
    39                             var message = response[1];
    40                             jQuery("#blog-dir-list").html(message);
    41                             jQuery("#blog-dir-list").fadeIn(200);
    42                         }
    43                     );
    44                 }
     23                jQuery("#blog-dir-list").fadeOut(200,
     24                    function() {
     25                        jQuery('#ajax-loader-blogs').toggle();
     26                        jQuery("#blog-dir-list").html(response);
     27                        jQuery("#blog-dir-list").fadeIn(200);
     28                    }
     29                );
    4530            });
    4631       
     
    5641                'cookie': encodeURIComponent(document.cookie),
    5742                '_wpnonce': jQuery("input#_wpnonce-blog-filter").val(),
    58                 'blogs_search': jQuery("input#blogs_search").val(),
    59                 'page': 1,
    60                 'num': 10
     43                's': jQuery("input#blogs_search").val(),
     44                'page': 1
    6145            },
    6246            function(response)
    6347            {   
    6448                response = response.substr(0, response.length-1);
    65                 response = response.split('[[SPLIT]]');
    66 
    67                 if ( response[0] != "-1" ) {
    68                    
    69                     jQuery("#blog-dir-list").fadeOut(200,
    70                         function() {
    71                             jQuery('#ajax-loader-blogs').toggle();
    72                             jQuery("#blog-dir-list").html(response[1]);
    73                             jQuery("#blog-dir-list").fadeIn(200);
    74                         }
    75                     );
    76 
    77                 } else {
    78                                        
    79                     jQuery("#blog-dir-list").fadeOut(200,
    80                         function() {
    81                             jQuery('#ajax-loader-blogs').toggle();
    82                             var message = response[1];
    83                             jQuery("#blog-dir-list").html(message);
    84                             jQuery("#blog-dir-list").fadeIn(200);
    85                         }
    86                     );
    87                    
    88                 }
     49                jQuery("#blog-dir-list").fadeOut(200,
     50                    function() {
     51                        jQuery('#ajax-loader-blogs').toggle();
     52                        jQuery("#blog-dir-list").html(response);
     53                        jQuery("#blog-dir-list").fadeIn(200);
     54                    }
     55                );
    8956            });
    9057       
     
    11582                '_wpnonce': jQuery("input#_wpnonce").val(),
    11683                'page': page[1],
    117                 'num': 10,
    11884                '_wpnonce': jQuery("input#_wpnonce-blog-filter").val(),
    11985               
    12086                'letter': letter,
    121                 'blogs_search': search_terms
     87                's': search_terms
    12288            },
    12389            function(response)
    12490            {   
    12591                response = response.substr(0, response.length-1);
    126                 response = response.split('[[SPLIT]]');
    127 
    128                 if ( response[0] != "-1" ) {
    129                    
    130                     jQuery("#blog-dir-list").fadeOut(200,
    131                         function() {
    132                             jQuery('#ajax-loader-blogs').toggle();
    133                             jQuery("#blog-dir-list").html(response[1]);
    134                             jQuery("#blog-dir-list").fadeIn(200);
    135                         }
    136                     );
    137 
    138                 } else {
    139                                        
    140                     jQuery("#blog-dir-list").fadeOut(200,
    141                         function() {
    142                             jQuery('#ajax-loader-blogs').toggle();
    143                             var message = response[1];
    144                             jQuery("#blog-dir-list").html(message);
    145                             jQuery("#blog-dir-list").fadeIn(200);
    146                         }
    147                     );
    148                    
    149                 }           
     92                jQuery("#blog-dir-list").fadeOut(200,
     93                    function() {
     94                        jQuery('#ajax-loader-blogs').toggle();
     95                        jQuery("#blog-dir-list").html(response);
     96                        jQuery("#blog-dir-list").fadeIn(200);
     97                    }
     98                );
    15099            });
    151100           
  • trunk/bp-core.php

    r1245 r1250  
    3535require ( 'bp-core/bp-core-signup.php' );
    3636require ( 'bp-core/bp-core-activation.php' );
    37 require ( 'bp-core/directories/bp-core-directory-members.php' );
    3837
    3938/* Define the slug for member pages and the members directory (e.g. domain.com/[members] ) */
     
    7574    global $displayed_user_id;
    7675    global $action_variables;
     76   
     77    $current_user = wp_get_current_user();
    7778
    7879    /* The domain for the root of the site where the main blog resides */   
     
    147148        $bp->current_component = $bp->default_component;
    148149}
    149 add_action( 'wp', 'bp_core_setup_globals', 1 );
     150add_action( 'plugins_loaded', 'bp_core_setup_globals', 3 );
    150151add_action( '_admin_menu', 'bp_core_setup_globals', 1 ); // must be _admin_menu hook.
    151152
     
    158159    bp_core_add_root_component( HOME_BLOG_SLUG );
    159160}
    160 add_action( 'plugins_loaded', 'bp_core_setup_root_components' );
     161add_action( 'plugins_loaded', 'bp_core_setup_root_components', 1 );
    161162
    162163function bp_core_setup_session() {
     
    305306add_action( 'wp', 'bp_core_setup_nav', 2 );
    306307add_action( 'admin_menu', 'bp_core_setup_nav', 2 );
     308
     309function bp_core_directory_members() {
     310    global $bp;
     311   
     312    if ( !is_home() && is_null( $bp->displayed_user->id ) && $bp->current_component == $bp->default_component ) {
     313        $bp->is_directory = true;
     314        $bp->current_component = false;
     315
     316        wp_enqueue_script( 'bp-core-directory-members', WPMU_PLUGIN_URL . '/bp-core/js/directory-members.js', array( 'jquery', 'jquery-livequery-pack' ) );
     317        bp_core_load_template( 'directories/members/index' );
     318    }
     319}
     320add_action( 'wp', 'bp_core_directory_members', 5 );
    307321
    308322/**
     
    11671181 */
    11681182function bp_core_referrer() {
    1169     $referer = explode( '/', $_SERVER['HTTP_REFERER'] );
     1183    $referer = explode( '/', wp_get_referer() );
    11701184    unset( $referer[0], $referer[1], $referer[2] );
    11711185    return implode( '/', $referer );
     
    13421356    global $wpdb;
    13431357    ?>
    1344 <!-- Generated in <?php timer_stop(1); ?> seconds. -->
     1358<!-- Generated in <?php timer_stop(1); ?> seconds. <?php echo $wpdb->num_queries; ?> queries. -->
    13451359    <?php
    13461360}
  • trunk/bp-core/bp-core-adminbar.php

    r1238 r1250  
    127127        if ( function_exists('bp_blogs_install') ) {
    128128           
    129             if ( !$blogs = wp_cache_get( 'bp_user_blogs_' . $bp->loggedin_user->id, 'bp' ) ) {
     129            if ( !$blogs = wp_cache_get( 'bp_blogs_of_user_' . $bp->loggedin_user->id, 'bp' ) ) {
    130130                $blogs = get_blogs_of_user( $bp->loggedin_user->id );
    131                 wp_cache_set( 'bp_user_blogs_' . $bp->loggedin_user->id, $blogs, 'bp' );
     131                wp_cache_set( 'bp_blogs_of_user_' . $bp->loggedin_user->id, $blogs, 'bp' );
    132132            }
    133133
  • trunk/bp-core/bp-core-ajax-handler.php

    r1052 r1250  
    33require_once( preg_replace('%(.*)[/\\\\]wp-content[/\\\\].*%', '\1', $_SERVER['SCRIPT_FILENAME'] ) . '/wp-load.php' );
    44
    5 add_filter( 'bp_uri', 'bp_core_referrer' );
    65wp();
    76
  • trunk/bp-core/bp-core-ajax.php

    r1238 r1250  
    6767
    6868function bp_core_ajax_directory_members() {
    69     global $bp;
    70 
    7169    check_ajax_referer('directory_members');
    7270   
    73     $pag_page = isset( $_POST['page'] ) ? intval( $_POST['page'] ) : 1;
    74     $pag_num = isset( $_POST['num'] ) ? intval( $_POST['num'] ) : 10;
    75    
    76     if ( isset( $_POST['letter'] ) && $_POST['letter'] != '' ) {
    77         $users = BP_Core_User::get_users_by_letter( $_POST['letter'], $pag_num, $pag_page );
    78     } else if ( isset ( $_POST['members_search'] ) && $_POST['members_search'] != '' ) {
    79         $users = BP_Core_User::search_users( $_POST['members_search'], $pag_num, $pag_page );
    80     } else {
    81         $users = BP_Core_User::get_active_users( $pag_num, $pag_page );
    82     }
    83 
    84     $pag_links = paginate_links( array(
    85         'base' => add_query_arg( 'page', '%#%' ),
    86         'format' => '',
    87         'total' => ceil( $users['total'] / $pag_num ),
    88         'current' => $pag_page,
    89         'prev_text' => '&laquo;',
    90         'next_text' => '&raquo;',
    91         'mid_size' => 1
    92     ));
    93    
    94     $from_num = intval( ( $pag_page - 1 ) * $pag_num ) + 1;
    95     $to_num = ( $from_num + ( $pag_num - 1 ) > $users['total'] ) ? $users['total'] : $from_num + ( $pag_num - 1 );
    96    
    97     if ( $users['users'] ) {
    98         echo '0[[SPLIT]]'; // return valid result.
    99        
    100         ?>
    101         <div class="container">
    102             <div id="member-dir-count" class="pag-count">
    103                 <?php echo sprintf( __( 'Viewing member %d to %d (%d total active members)', 'buddypress' ), $from_num, $to_num, $users['total'] ); ?> &nbsp;
    104                 <img id="ajax-loader-members" src="<?php echo $bp->core->image_base ?>/ajax-loader.gif" height="7" alt="<?php _e( "Loading", "buddypress" ) ?>" style="display: none;" />
    105             </div>
    106        
    107             <?php if ( $pag_links ) : ?>
    108                 <div class="pagination-links" id="member-dir-pag">
    109                     <?php echo $pag_links ?>
    110                 </div>
    111             <?php endif; ?>
    112 
    113             <?php   
    114             echo '<ul id="members-list" class="item-list">';
    115             foreach ( (array) $users['users'] as $user ) {
    116             ?>
    117                 <li>
    118                     <div class="item-avatar">
    119                         <?php echo bp_core_get_avatar( $user->user_id, 1 ) ?>
    120                     </div>
    121 
    122                     <div class="item">
    123                         <div class="item-title"><?php echo bp_core_get_userlink( $user->user_id ) ?></div>
    124                         <div class="item-meta"><span class="activity"><?php echo bp_core_get_last_activity( get_usermeta( $user->user_id, 'last_activity' ), __( 'active %s ago', 'buddypress' ) ) ?></span></div>
    125                     </div>
    126                
    127                     <div class="action">
    128                         <?php if ( function_exists('bp_add_friend_button') ) : ?>
    129                             <?php bp_add_friend_button( $user->user_id ) ?>
    130                         <?php endif; ?>
    131                         <div class="meta">
    132                             <?php if ( $user_obj->total_friends ) echo $user_obj->total_friends ?><?php if ( $user_obj->total_blogs ) echo ', ' . $user_obj->total_blogs ?><?php if ( $user_obj->total_groups ) echo ', ' . $user_obj->total_groups ?>
    133                         </div>
    134                     </div>
    135                
    136                     <div class="clear"></div>
    137                 </li>
    138             <?php   
    139             }
    140             echo '</ul>'; ?>
    141         </div>
    142 <?php
    143     } else {
    144         echo "-1[[SPLIT]]<div id='message' class='error'><p>" . __("No members matched the current filter.", 'buddypress') . '</p></div>';
    145     }
    146    
    147     if ( isset( $_POST['letter'] ) ) {
    148         echo '<input type="hidden" id="selected_letter" value="' . $_POST['letter'] . '" name="selected_letter" />';
    149     }
    150    
    151     if ( isset( $_POST['members_search'] ) ) {
    152         echo '<input type="hidden" id="search_terms" value="' . $_POST['members_search'] . '" name="search_terms" />';
    153     }
    154 
     71    load_template( TEMPLATEPATH . '/directories/members/members-loop.php' );
    15572}
    15673add_action( 'wp_ajax_directory_members', 'bp_core_ajax_directory_members' );
  • trunk/bp-core/bp-core-catchuri.php

    r1226 r1250  
    3333    global $bp;
    3434   
    35     $path = apply_filters( 'bp_uri', $_SERVER['REQUEST_URI'] );
    36    
     35    if ( strpos( $_SERVER['REQUEST_URI'], 'bp-core-ajax-handler.php' ) )
     36        $path = bp_core_referrer();
     37    else
     38        $path = clean_url( $_SERVER['REQUEST_URI'] );
     39
     40    $path = apply_filters( 'bp_uri', $path );
     41
    3742    // Firstly, take GET variables off the URL to avoid problems,
    3843    // they are still registered in the global $_GET variable */
     
    7984        }
    8085    }
    81    
     86
    8287    /* Reset the keys by merging with an empty array */
    8388    $bp_uri = array_merge( array(), $bp_uri );
    8489    $bp_unfiltered_uri = $bp_uri;
    85 
     90   
    8691    /* Catch a member page and set the current member ID */
    87     if ( $bp_uri[0] == MEMBERS_SLUG && !empty( $bp_uri[1] ) ) {
     92    if ( $bp_uri[0] == MEMBERS_SLUG || in_array( 'bp-core-ajax-handler.php', $bp_uri ) ) {
    8893        $is_member_page = true;
    8994        $is_root_component = true;
     
    106111    }
    107112
    108     /* This is used to determine where the component and action indexes should start */
    109     $root_components = $bp->root_components;
    110    
    111113    if ( !isset($is_root_component) )
    112         $is_root_component = in_array( $bp_uri[0], $root_components );
     114        $is_root_component = in_array( $bp_uri[0], $bp->root_components );
    113115
    114116    if ( 'no' == VHOST && !$is_root_component ) {
     
    139141    //var_dump($current_component, $current_action, $action_variables);
    140142}
    141 add_action( 'wp', 'bp_core_set_uri_globals', 1 );
     143add_action( 'plugins_loaded', 'bp_core_set_uri_globals', 3 );
    142144
    143145/**
     
    254256
    255257function bp_core_force_buddypress_theme( $template ) {
    256     global $current_component, $current_action;
    257     global $is_member_page;
    258    
    259     // The theme filter does not recognize any globals, where as the stylesheet filter does.
    260     // We have to set up the globals to use manually.
    261     bp_core_set_uri_globals();
    262    
    263     $member_theme = get_site_option('active-member-theme');
     258    global $is_member_page, $bp;
     259
     260    $member_theme = get_site_option( 'active-member-theme' );
    264261   
    265262    if ( empty( $member_theme ) )
    266263        $member_theme = 'buddypress-member';
    267264   
     265    if ( $is_member_page ) {
     266
     267        add_filter( 'theme_root', 'bp_core_set_member_theme_root' );
     268        add_filter( 'theme_root_uri', 'bp_core_set_member_theme_root_uri' );
     269
     270        return $member_theme;
     271    } else {
     272        return $template;
     273    }
     274}
     275add_filter( 'template', 'bp_core_force_buddypress_theme', 1, 1 );
     276
     277function bp_core_force_buddypress_stylesheet( $stylesheet ) {
     278    global $is_member_page;
     279
     280    $member_theme = get_site_option( 'active-member-theme' );
     281   
     282    if ( empty( $member_theme ) )
     283        $member_theme = 'buddypress-member';
     284
    268285    if ( $is_member_page ) {
    269286        add_filter( 'theme_root', 'bp_core_set_member_theme_root' );
     
    272289        return $member_theme;
    273290    } else {
    274         return $template;
    275     }
    276 }
    277 add_filter( 'template', 'bp_core_force_buddypress_theme', 1, 1 );
    278 
    279 function bp_core_force_buddypress_stylesheet( $stylesheet ) {
    280     global $bp, $is_member_page;
    281 
    282     $member_theme = get_site_option('active-member-theme');
    283    
    284     if ( empty( $member_theme ) )
    285         $member_theme = 'buddypress-member';
    286 
    287     if ( $is_member_page ) {
    288         add_filter( 'theme_root', 'bp_core_set_member_theme_root' );
    289         add_filter( 'theme_root_uri', 'bp_core_set_member_theme_root_uri' );
    290 
    291         return $member_theme;
    292     } else {
    293291        return $stylesheet;
    294292    }
  • trunk/bp-core/bp-core-templatetags.php

    r1243 r1250  
    454454
    455455function bp_page_title() {
    456     global $bp;
    457    
    458     if ( !empty( $bp->displayed_user->fullname ) ) {
    459         echo apply_filters( 'bp_page_title', strip_tags( $bp->displayed_user->fullname . ' &raquo; ' . ucwords( $bp->current_component ) . ' &raquo; ' . $bp->bp_options_nav[$bp->current_component][$bp->current_action]['name'] ) );
     456    global $bp, $post, $wp_query;
     457   
     458    //var_dump($wp_query);
     459
     460    if ( is_home() && bp_is_page( 'home' ) ) {
     461        $title = __( 'Home', 'buddypress' );
     462    } else if ( bp_is_blog_page() ) {
     463        if ( is_single() ) {
     464            $title = __( 'Blog &#8212; ' . $post->post_title, 'buddypress' );
     465        } else if ( is_category() ) {
     466            $title = __( 'Blog &#8212; Categories &#8212; ' . ucwords( $wp_query->query_vars['category_name'] ), 'buddypress' );               
     467        } else if ( is_tag() ) {
     468            $title = __( 'Blog &#8212; Tags &#8212; ' . ucwords( $wp_query->query_vars['tag'] ), 'buddypress' );               
     469        } else {
     470            $title = __( 'Blog', 'buddypress' );
     471        }
     472    } else if ( !empty( $bp->displayed_user->fullname ) ) {
     473        $title = strip_tags( $bp->displayed_user->fullname . ' &#8212; ' . ucwords( $bp->current_component ) . ' &#8212; ' . $bp->bp_options_nav[$bp->current_component][$bp->current_action]['name'] );
     474    } else if ( $bp->is_single_item ) {
     475        $title = ucwords( $bp->current_component ) . ' &#8212; ' . $bp->bp_options_title;
    460476    } else {
    461         echo apply_filters( 'bp_page_title', strip_tags( ucwords( $bp->current_component ) . ' &raquo; ' . ucwords( $bp->bp_options_title ) . ' &raquo; ' . ucwords( $bp->current_action ) ) );
    462     }
     477        if ( $bp->is_directory ) {
     478            if ( !$bp->current_component )
     479                $title = __( 'Members Directory', 'buddypress' );
     480            else
     481                $title = sprintf( __( '%s Directory', 'buddypress' ), ucwords( $bp->current_component ) );
     482        }       
     483    }
     484   
     485    echo apply_filters( 'bp_page_title', get_blog_option( 1, 'blogname' ) . ' &#8212; ' . $title, $title );
     486   
    463487}
    464488
     
    473497    if ( $bp->displayed_user->id || $bp->is_single_item )
    474498        return false;
    475 
    476     if ( $page == $bp->current_component || $page == 'home' && $bp->current_component == $bp->default_component )
     499   
     500    if ( $page == $bp->current_component || ( is_home() && $page == 'home' && $bp->current_component == $bp->default_component ) || ( $page == MEMBERS_SLUG && !$bp->current_component ) )
    477501        return true;
    478502   
     
    647671}
    648672
     673function bp_get_optionsbar( $hide_on_directory = true ) {
     674    global $bp;
     675   
     676    if ( $hide_on_directory && $bp->is_directory )
     677        return false;
     678   
     679    include_once( TEMPLATEPATH . '/userbar.php' );
     680}
     681
     682function bp_get_userbar( $hide_on_directory = true ) {
     683    global $bp;
     684   
     685    if ( $hide_on_directory && $bp->is_directory )
     686        return false;
     687   
     688    include_once( TEMPLATEPATH . '/optionsbar.php' );
     689}
     690
     691function bp_is_directory() {
     692    global $bp;
     693   
     694    return $bp->is_directory;
     695}
     696
     697
     698/*** CUSTOM LOOP TEMPLATE CLASSES *******************/
     699
     700class BP_Core_Members_Template {
     701    var $current_member = -1;
     702    var $member_count;
     703    var $members;
     704    var $member;
     705
     706    var $in_the_loop;
     707
     708    var $pag_page;
     709    var $pag_num;
     710    var $pag_links;
     711    var $total_member_count;
     712   
     713    function bp_core_members_template( $type, $per_page, $max ) {
     714        global $bp, $bp_the_member_query;
     715
     716        $this->pag_page = isset( $_REQUEST['page'] ) ? intval( $_REQUEST['page'] ) : 1;
     717        $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
     718               
     719        if ( isset( $_REQUEST['s'] ) && '' != $_REQUEST['s'] && $type != 'random' ) {
     720            $this->members = BP_Core_User::search_users( $_REQUEST['s'], $this->pag_num, $this->pag_page );
     721        } else if ( isset( $_REQUEST['letter'] ) && '' != $_REQUEST['letter'] ) {
     722            $this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page );
     723        } else {
     724            switch ( $type ) {
     725                case 'random':
     726                    $this->members = BP_Core_User::get_random_users( $this->pag_num, $this->pag_page );
     727                    break;
     728               
     729                case 'newest':
     730                    $this->members = BP_Core_User::get_newest_users( $this->pag_num, $this->pag_page );
     731                    break;
     732
     733                case 'popular':
     734                    $this->members = BP_Core_User::get_popular_users( $this->pag_num, $this->pag_page );
     735                    break; 
     736
     737                case 'online':
     738                    $this->members = BP_Core_User::get_online_users( $this->pag_num, $this->pag_page );
     739                    break; 
     740               
     741                case 'active': default:
     742                    $this->members = BP_Core_User::get_active_users( $this->pag_num, $this->pag_page );
     743                    break;                 
     744            }
     745        }
     746       
     747        if ( !$max )
     748            $this->total_member_count = (int)$this->members['total'];
     749        else
     750            $this->total_member_count = (int)$max;
     751
     752        $this->members = $this->members['users'];
     753        $this->member_count = count($this->members);
     754
     755        $this->pag_links = paginate_links( array(
     756            'base' => add_query_arg( 'page', '%#%' ),
     757            'format' => '',
     758            'total' => ceil( (int) $this->total_member_count / (int) $this->pag_num ),
     759            'current' => (int) $this->pag_page,
     760            'prev_text' => '&laquo;',
     761            'next_text' => '&raquo;',
     762            'mid_size' => 1
     763        ));     
     764    }
     765   
     766    function has_members() {
     767        if ( $this->member_count )
     768            return true;
     769       
     770        return false;
     771    }
     772   
     773    function next_member() {
     774        $this->current_member++;
     775        $this->member = $this->members[$this->current_member];
     776       
     777        return $this->member;
     778    }
     779   
     780    function rewind_members() {
     781        $this->current_member = -1;
     782        if ( $this->member_count > 0 ) {
     783            $this->member = $this->members[0];
     784        }
     785    }
     786   
     787    function site_members() {
     788        if ( $this->current_member + 1 < $this->member_count ) {
     789            return true;
     790        } elseif ( $this->current_member + 1 == $this->member_count ) {
     791            do_action('loop_end');
     792            // Do some cleaning up after the loop
     793            $this->rewind_members();
     794        }
     795
     796        $this->in_the_loop = false;
     797        return false;
     798    }
     799   
     800    function the_member() {
     801        global $member, $bp;
     802
     803        $this->in_the_loop = true;
     804        $this->member = $this->next_member();
     805        $user_id = $this->member->user_id;
     806
     807        if ( !$this->member = wp_cache_get( 'bp_user_' . $user_id, 'bp' ) ) {
     808            $this->member = new BP_Core_User( $user_id );
     809            wp_cache_set( 'bp_user_' . $user_id, $this->member, 'bp' );
     810        }
     811       
     812        if ( 0 == $this->current_member ) // loop has just started
     813            do_action('loop_start');
     814    }
     815}
     816
     817function bp_rewind_site_members() {
     818    global $site_members_template;
     819   
     820    return $site_members_template->rewind_members();
     821}
     822
     823function bp_has_site_members( $args = '' ) {
     824    global $bp, $site_members_template;
     825
     826    $defaults = array(
     827        'type' => 'active',
     828        'per_page' => 10,
     829        'max' => false
     830    );
     831
     832    $r = wp_parse_args( $args, $defaults );
     833    extract( $r, EXTR_SKIP );
     834
     835    // type: active ( default ) | random | newest | popular | online
     836   
     837    if ( $max ) {
     838        if ( $per_page > $max )
     839            $per_page = $max;
     840    }
     841   
     842    $site_members_template = new BP_Core_Members_Template( $type, $per_page, $max );
     843   
     844    return $site_members_template->has_members();
     845}
     846
     847function bp_the_site_member() {
     848    global $site_members_template;
     849    return $site_members_template->the_member();
     850}
     851
     852function bp_site_members() {
     853    global $site_members_template;
     854    return $site_members_template->site_members();
     855}
     856
     857function bp_site_members_pagination_count() {
     858    global $bp, $site_members_template;
     859   
     860    $from_num = intval( ( $site_members_template->pag_page - 1 ) * $site_members_template->pag_num ) + 1;
     861    $to_num = ( $from_num + ( $site_members_template->pag_num - 1 ) > $site_members_template->total_member_count ) ? $site_members_template->total_member_count : $from_num + ( $site_members_template->pag_num - 1) ;
     862
     863    echo sprintf( __( 'Viewing member %d to %d (of %d members)', 'buddypress' ), $from_num, $to_num, $site_members_template->total_member_count ); ?> &nbsp;
     864    <img id="ajax-loader-members" src="<?php echo $bp->core->image_base ?>/ajax-loader.gif" height="7" alt="<?php _e( "Loading", "buddypress" ) ?>" style="display: none;" /><?php
     865}
     866
     867function bp_site_members_pagination_links() {
     868    global $site_members_template;
     869    echo $site_members_template->pag_links;
     870}
     871
     872function bp_the_site_member_avatar() {
     873    global $site_members_template;
     874   
     875    echo $site_members_template->member->avatar_thumb;
     876}
     877
     878function bp_the_site_member_link() {
     879    global $site_members_template;
     880   
     881    echo $site_members_template->member->user_url;
     882}
     883
     884function bp_the_site_member_name() {
     885    global $site_members_template;
     886   
     887    echo $site_members_template->member->fullname;
     888}
     889
     890function bp_the_site_member_last_active() {
     891    global $site_members_template;
     892
     893    echo $site_members_template->member->last_active;
     894}
     895
     896function bp_the_site_member_add_friend_button() {
     897    global $site_members_template;
     898   
     899    if ( function_exists( 'bp_add_friend_button' ) ) {
     900        echo bp_add_friend_button( $site_members_template->member->id );
     901    }
     902}
     903
     904function bp_the_site_member_total_friend_count() {
     905    global $site_members_template;
     906   
     907    if ( !(int) $site_members_template->member->total_friends )
     908        return false;
     909   
     910    if ( 1 == (int) $site_members_template->member->total_friends )
     911        printf( __( '%d friend', 'buddypress' ), (int) $site_members_template->member->total_friends );
     912    else
     913        printf( __( '%d friends', 'buddypress' ), (int) $site_members_template->member->total_friends );       
     914}
     915
     916function bp_the_site_member_random_profile_data() {
     917    global $site_members_template;
     918
     919    if ( function_exists( 'xprofile_get_random_profile_data' ) ) { ?>
     920        <?php $random_data = xprofile_get_random_profile_data( $site_members_template->member->id, true ); ?>
     921            <strong><?php echo $random_data[0]->name ?></strong>
     922            <?php echo $random_data[0]->value ?>
     923    <?php }
     924}
     925
     926function bp_the_site_member_hidden_fields() {
     927    if ( isset( $_GET['s'] ) ) {
     928        echo '<input type="hidden" id="search_terms" value="' . attribute_escape( $_REQUEST['s'] ) . '" name="search_terms" />';
     929    }
     930
     931    if ( isset( $_POST['letter'] ) ) {
     932        echo '<input type="hidden" id="selected_letter" value="' . attribute_escape( $_REQUEST['letter'] ) . '" name="selected_letter" />';
     933    }
     934
     935    if ( isset( $_POST['members_search'] ) ) {
     936        echo '<input type="hidden" id="search_terms" value="' . attribute_escape( $_REQUEST['members_search'] ) . '" name="search_terms" />';
     937    }
     938}
     939
     940function bp_directory_members_search_form() {
     941    global $bp; ?>
     942    <form action="<?php echo $bp->root_domain . '/' . MEMBERS_SLUG  . '/search/' ?>" method="post" id="search-members-form">
     943        <label><input type="text" name="members_search" id="members_search" value="<?php if ( isset( $_GET['s'] ) ) { echo attribute_escape( $_GET['s'] ); } else { _e( 'Search anything...', 'buddypress' ); } ?>"  onfocus="if (this.value == '<?php _e( 'Search anything...', 'buddypress' ) ?>') {this.value = '';}" onblur="if (this.value == '') {this.value = '<?php _e( 'Search anything...', 'buddypress' ) ?>';}" /></label>
     944        <input type="submit" id="members_search_submit" name="members_search_submit" value="<?php _e( 'Search', 'buddypress' ) ?>" />
     945    </form>
     946<?php
     947}
     948
     949
    649950/* Template functions for fetching globals, without querying the DB again
    650951   also means we dont have to use the $bp variable in the template (looks messy) */
     
    654955    return apply_filters( 'bp_current_user_id', $bp->displayed_user->id );
    655956}
     957    function bp_displayed_user_id() {
     958        return bp_current_user_id();
     959    }
     960
     961function bp_loggedin_user_id() {
     962    global $bp;
     963    return apply_filters( 'bp_loggedin_user_id', $bp->loggedin_user->id );
     964}
     965
     966function bp_displayed_user_domain() {
     967    global $bp;
     968    return apply_filters( 'bp_displayed_user_domain', $bp->displayed_user->domain );
     969}
     970
     971function bp_loggedin_user_domain() {
     972    global $bp;
     973    return apply_filters( 'bp_loggedin_user_domain', $bp->loggedin_user->domain );
     974}
    656975
    657976function bp_user_fullname() {
     
    659978    echo apply_filters( 'bp_user_fullname', $bp->displayed_user->fullname );
    660979}
    661 
    662 
     980    function bp_displayed_user_fullname() {
     981        return bp_user_fullname();
     982    }
     983
     984function bp_loggedin_user_fullname() {
     985    global $bp;
     986    echo apply_filters( 'bp_loggedin_user_fullname', $bp->loggedin_user->fullname );   
     987}
    663988
    664989?>
  • trunk/bp-core/bp-core-widgets.php

    r1244 r1250  
    1414   
    1515    /* Include the javascript needed for activated widgets only */
    16     if ( is_active_widget( 'bp_core_widget_members' ) )
     16    if ( is_active_widget( 'bp_core_widget_members' ) ) {
    1717        wp_enqueue_script( 'bp_core_widget_members-js', WPMU_PLUGIN_URL . '/bp-core/js/widget-members.js', array('jquery', 'jquery-livequery-pack') );     
     18        wp_enqueue_style( 'bp_core_widget_members-css', WPMU_PLUGIN_URL . '/bp-core/css/widget-members.css' );
     19    }
    1820   
    1921    wp_register_sidebar_widget( 'buddypress-whosonline', __( "Who's Online", 'buddypress' ), 'bp_core_widget_whos_online' );
  • trunk/bp-core/js/directory-members.js

    r1161 r1250  
    1111            letter = letter.split('-');
    1212           
    13             var num = ( jQuery('input#members-per-page').val() ) ? jQuery('input#members-per-page').val() : 10;
    1413            var page = ( jQuery('input#members-page-num').val() ) ? jQuery('input#members-page-num').val() : 1;
    1514
     
    1918                '_wpnonce': jQuery("input#_wpnonce-member-filter").val(),
    2019                'letter': letter[1],
    21                 'page': page,
    22                 'num': num
     20                'page': page
    2321            },
    2422            function(response)
    25             {   
     23            {
    2624                response = response.substr(0, response.length-1);
    27                 response = response.split('[[SPLIT]]');
    28 
    29                 if ( response[0] != "-1" ) {
    30                     jQuery("#member-dir-list").fadeOut(200,
    31                         function() {
    32                             jQuery('#ajax-loader-members').toggle();
    33                             jQuery("#member-dir-list").html(response[1]);
    34                             jQuery("#member-dir-list").fadeIn(200);
    35                         }
    36                     );
    37 
    38                 } else {                   
    39                     jQuery("ul#members-list").fadeOut(200,
    40                         function() {
    41                             jQuery('#ajax-loader-members').toggle();
    42                             var message = response[1];
    43                             jQuery("#member-dir-list").html(message);
    44                             jQuery("#member-dir-list").fadeIn(200);
    45                         }
    46                     );
    47                 }
     25               
     26                jQuery("#member-dir-list").fadeOut(200,
     27                    function() {
     28                        jQuery('#ajax-loader-members').toggle();
     29                        jQuery("#member-dir-list").html(response);
     30                        jQuery("#member-dir-list").fadeIn(200);
     31                    }
     32                );
    4833            });
    4934       
     
    5540            jQuery('#ajax-loader-members').toggle();
    5641
    57             var num = ( jQuery('input#members-per-page').val() ) ? jQuery('input#members-per-page').val() : 10;
    5842            var page = ( jQuery('input#members-page-num').val() ) ? jQuery('input#members-page-num').val() : 1;
    5943
     
    6246                'cookie': encodeURIComponent(document.cookie),
    6347                '_wpnonce': jQuery("input#_wpnonce-member-filter").val(),
    64                 'members_search': jQuery("input#members_search").val(),
    65                 'page': page,
    66                 'num': num
     48                's': jQuery("input#members_search").val(),
     49                'page': page
    6750            },
    6851            function(response)
    6952            {   
    7053                response = response.substr(0, response.length-1);
    71                 response = response.split('[[SPLIT]]');
    72 
    73                 if ( response[0] != "-1" ) {
    74                    
    75                     jQuery("#member-dir-list").fadeOut(200,
    76                         function() {
    77                             jQuery('#ajax-loader-members').toggle();
    78                             jQuery("#member-dir-list").html(response[1]);
    79                             jQuery("#member-dir-list").fadeIn(200);
    80                         }
    81                     );
    82 
    83                 } else {
    84                                        
    85                     jQuery("#member-dir-list").fadeOut(200,
    86                         function() {
    87                             jQuery('#ajax-loader-members').toggle();
    88                             var message = response[1];
    89                             jQuery("#member-dir-list").html(message);
    90                             jQuery("#member-dir-list").fadeIn(200);
    91                         }
    92                     );
    93                    
    94                 }
     54               
     55                jQuery("#member-dir-list").fadeOut(200,
     56                    function() {
     57                        jQuery('#ajax-loader-members').toggle();
     58                        jQuery("#member-dir-list").html(response);
     59                        jQuery("#member-dir-list").fadeIn(200);
     60                    }
     61                );
    9562            });
    9663       
     
    10572            var page = jQuery(this).attr('href');
    10673            page = page.split('page=');
    107 
     74           
    10875            if ( !jQuery("input#selected_letter").val() )
    10976                var letter = '';
     
    11582            else
    11683                var search_terms = jQuery("input#search_terms").val();
    117 
    118             var num = ( jQuery('input#members-per-page').val() ) ? jQuery('input#members-per-page').val() : 10;
    119                
     84           
    12085            jQuery.post( ajaxurl, {
    12186                action: 'directory_members',
     
    12388                '_wpnonce': jQuery("input#_wpnonce").val(),
    12489                'page': page[1],
    125                 'num': num,
    12690                '_wpnonce': jQuery("input#_wpnonce-member-filter").val(),
    12791               
     
    13296            {   
    13397                response = response.substr(0, response.length-1);
    134                 response = response.split('[[SPLIT]]');
    135 
    136                 if ( response[0] != "-1" ) {
    137                    
    138                     jQuery("#member-dir-list").fadeOut(200,
    139                         function() {
    140                             jQuery('#ajax-loader-members').toggle();
    141                             jQuery("#member-dir-list").html(response[1]);
    142                             jQuery("#member-dir-list").fadeIn(200);
    143                         }
    144                     );
    145 
    146                 } else {
    147                                        
    148                     jQuery("#member-dir-list").fadeOut(200,
    149                         function() {
    150                             jQuery('#ajax-loader-members').toggle();
    151                             var message = response[1];
    152                             jQuery("#member-dir-list").html(message);
    153                             jQuery("#member-dir-list").fadeIn(200);
    154                         }
    155                     );
    156                    
    157                 }           
     98               
     99                jQuery("#member-dir-list").fadeOut(200,
     100                    function() {
     101                        jQuery('#ajax-loader-members').toggle();
     102                        jQuery("#member-dir-list").html(response);
     103                        jQuery("#member-dir-list").fadeIn(200);
     104                    }
     105                );
    158106            });
    159107           
  • trunk/bp-forums.php

    r1225 r1250  
    3434    $bp->version_numbers->forums = BP_FORUMS_VERSION;
    3535}
    36 add_action( 'wp', 'bp_forums_setup', 3 );
     36add_action( 'plugins_loaded', 'bp_forums_setup', 5 );
    3737add_action( 'admin_head', 'bp_forums_setup', 3 );
    3838
  • trunk/bp-friends.php

    r1245 r1250  
    7474    $bp->version_numbers->friends = BP_FRIENDS_VERSION;
    7575}
    76 add_action( 'wp', 'friends_setup_globals', 1 );
     76add_action( 'plugins_loaded', 'friends_setup_globals', 5 );
    7777add_action( 'admin_menu', 'friends_setup_globals', 1 );
    7878
  • trunk/bp-groups.php

    r1238 r1250  
    2626require ( 'bp-groups/bp-groups-filters.php' );
    2727require ( 'bp-groups/bp-groups-admin.php' );
    28 require ( 'bp-groups/directories/bp-groups-directory-groups.php' );
    2928
    3029/**************************************************************************
     
    142141        $bp->groups->table_name_wire = $wpdb->base_prefix . 'bp_groups_wire';
    143142   
    144     $bp->groups->forbidden_names = array( 'my-groups', 'group-finder', 'create', 'invites', 'delete', 'add', 'admin', 'request-membership' );
     143    $bp->groups->forbidden_names = apply_filters( 'groups_forbidden_names', array( 'my-groups', 'group-finder', 'create', 'invites', 'delete', 'add', 'admin', 'request-membership' ) );
    145144    $bp->version_numbers->groups = BP_GROUPS_VERSION;
    146145   
    147146    return $bp;
    148147}
    149 add_action( 'wp', 'groups_setup_globals', 1, false );   
    150 add_action( 'admin_menu', 'groups_setup_globals', 1, false );
     148add_action( 'plugins_loaded', 'groups_setup_globals', 5 ); 
     149add_action( 'admin_menu', 'groups_setup_globals', 1 );
    151150
    152151function groups_setup_root_component() {
     
    154153    bp_core_add_root_component( BP_GROUPS_SLUG );
    155154}
    156 add_action( 'plugins_loaded', 'groups_setup_root_component' );
     155add_action( 'plugins_loaded', 'groups_setup_root_component', 1 );
    157156
    158157function groups_check_installed() {
     
    169168}
    170169add_action( 'admin_menu', 'groups_check_installed' );
    171 
    172170
    173171function groups_add_admin_menu() {
     
    248246            array_shift($bp->action_variables);
    249247                                   
    250             $bp->bp_options_title = bp_create_excerpt( $group_obj->name, 1 );
     248            $bp->bp_options_title = $group_obj->name;
    251249            $bp->bp_options_avatar = '<img src="' . $group_obj->avatar_thumb . '" alt="Group Avatar Thumbnail" />';
    252250           
     
    301299add_action( 'admin_menu', 'groups_setup_nav', 2 );
    302300
     301function groups_directory_groups_setup() {
     302    global $bp;
     303   
     304    if ( $bp->current_component == $bp->groups->slug && empty( $bp->current_action ) ) {
     305        $bp->is_directory = true;
     306
     307        wp_enqueue_script( 'bp-groups-directory-groups', WPMU_PLUGIN_URL . '/bp-groups/js/directory-groups.js', array( 'jquery', 'jquery-livequery-pack' ) );
     308        bp_core_load_template( 'directories/groups/index' );
     309    }
     310}
     311add_action( 'wp', 'groups_directory_groups_setup', 5 );
    303312
    304313/***** Screens **********/
     
    22492258
    22502259function groups_force_buddypress_theme( $template ) {
    2251     global $current_component, $current_action;
    2252     global $is_member_page, $bp;
    2253 
    2254     $groups_bp = groups_setup_globals(true);
    2255    
    2256     if ( $current_component != $groups_bp->groups->slug )
     2260    global $bp;
     2261   
     2262    if ( $bp->current_component != $bp->groups->slug )
    22572263        return $template;
    22582264   
     
    22612267    if ( empty($member_theme) )
    22622268        $member_theme = 'buddypress-member';
    2263    
    2264     // The theme filter does not recognize any globals, where as the stylesheet filter does.
    2265     // We have to set up the globals to use manually.
    2266     bp_core_set_uri_globals();
    2267 
    2268     if ( $current_component == $groups_bp->groups->slug )
    2269         $bp->is_single_item = BP_Groups_Group::group_exists( $current_action, $groups_bp->groups->table_name );
    2270    
    2271     if ( $bp->is_single_item ) {
    2272         add_filter( 'theme_root', 'bp_core_set_member_theme_root' );
    2273         add_filter( 'theme_root_uri', 'bp_core_set_member_theme_root_uri' );
    2274 
    2275         return $member_theme;
    2276     } else {
    2277         return $template;
    2278     }
    2279    
    2280     return $theme;
    2281 }
    2282 add_filter( 'template', 'groups_force_buddypress_theme', 1, 1 );
     2269
     2270    add_filter( 'theme_root', 'bp_core_set_member_theme_root' );
     2271    add_filter( 'theme_root_uri', 'bp_core_set_member_theme_root_uri' );
     2272
     2273    return $member_theme;
     2274}
     2275add_filter( 'template', 'groups_force_buddypress_theme' );
    22832276
    22842277function groups_force_buddypress_stylesheet( $stylesheet ) {
    2285     global $bp, $is_member_page, $current_component;
    2286 
    2287     if ( $current_component != $bp->groups->slug )
     2278    global $bp;
     2279
     2280    if ( $bp->current_component != $bp->groups->slug )
    22882281        return $stylesheet;
    22892282
     
    22932286        $member_theme = 'buddypress-member';
    22942287   
    2295     if ( $bp->is_single_item ) {
    2296         add_filter( 'theme_root', 'bp_core_set_member_theme_root' );
    2297         add_filter( 'theme_root_uri', 'bp_core_set_member_theme_root_uri' );
    2298        
    2299         return $member_theme;
    2300     } else {
    2301         return $stylesheet;
    2302     }
     2288    add_filter( 'theme_root', 'bp_core_set_member_theme_root' );
     2289    add_filter( 'theme_root_uri', 'bp_core_set_member_theme_root_uri' );
     2290   
     2291    return $member_theme;
    23032292}
    23042293add_filter( 'stylesheet', 'groups_force_buddypress_stylesheet', 1, 1 );
  • trunk/bp-groups/bp-groups-ajax.php

    r1238 r1250  
    212212
    213213    check_ajax_referer('directory_groups');
    214    
    215     $pag_page = isset( $_POST['page'] ) ? intval( $_POST['page'] ) : 1;
    216     $pag_num = isset( $_POST['num'] ) ? intval( $_POST['num'] ) : 10;
    217    
    218     if ( isset( $_POST['letter'] ) && $_POST['letter'] != '' ) {
    219         $groups = BP_Groups_Group::get_by_letter( $_POST['letter'], $pag_num, $pag_page );
    220     } else if ( isset ( $_POST['groups_search'] ) && $_POST['groups_search'] != '' ) {
    221         $groups = BP_Groups_Group::search_groups( $_POST['groups_search'], $pag_num, $pag_page );
    222     } else {
    223         $groups = BP_Groups_Group::get_active( $pag_num, $pag_page );
    224     }
    225    
    226     $pag_links = paginate_links( array(
    227         'base' => add_query_arg( 'page', '%#%' ),
    228         'format' => '',
    229         'total' => ceil( $groups['total'] / $pag_num ),
    230         'current' => $pag_page,
    231         'prev_text' => '&laquo;',
    232         'next_text' => '&raquo;',
    233         'mid_size' => 1
    234     ));
    235    
    236     $from_num = intval( ( $pag_page - 1 ) * $pag_num ) + 1;
    237     $to_num = ( $from_num + 9 > $groups['total'] ) ? $groups['total'] : $from_num + 9;
    238 
    239     if ( $groups['groups'] ) {
    240         echo '0[[SPLIT]]'; // return valid result.
    241        
    242         ?>
    243         <div id="group-dir-count" class="pag-count">
    244             <?php echo sprintf( __( 'Viewing group %d to %d (%d total active groups)', 'buddypress' ), $from_num, $to_num, $groups['total'] ); ?> &nbsp;
    245             <img id="ajax-loader-groups" src="<?php echo $bp->core->image_base ?>/ajax-loader.gif" height="7" alt="<?php _e( "Loading", "buddypress" ) ?>" style="display: none;" />
    246         </div>
    247    
    248         <div class="pagination-links" id="group-dir-pag">
    249             <?php echo $pag_links ?>
    250         </div>
    251        
    252         <?php $counter = 0; ?>
    253         <ul id="groups-list" class="item-list">
    254         <?php foreach ( $groups['groups'] as $group_id ) : ?>
    255            
    256             <?php $alt = ( $counter % 2 == 1 ) ? ' class="alt"' : ''; ?>
    257             <?php
    258                 if ( !$group = wp_cache_get( 'groups_group_nouserdata_' . $group_id->group_id, 'bp' ) ) {
    259                     $group = new BP_Groups_Group( $group_id->group_id, false, false );
    260                     wp_cache_set( 'groups_group_nouserdata_' . $group_id->group_id, $group, 'bp' );
    261                 }   
    262             ?>
    263            
    264             <li<?php echo $alt ?>>
    265                 <div class="item-avatar">
    266                     <img src="<?php echo $group->avatar_thumb ?>" class="avatar" alt="<?php echo $group->name ?> <?php _e( 'Avatar', 'buddypress' ) ?>" />
    267                 </div>
    268 
    269                 <div class="item">
    270                     <div class="item-title"><a href="<?php echo bp_group_permalink( $group ) ?>" title="<?php echo $group->name ?>"><?php echo $group->name ?></a></div>
    271                     <div class="item-meta"><span class="activity"><?php echo bp_core_get_last_activity( groups_get_groupmeta( $group->id, 'last_activity' ), __( 'active %s ago', 'buddypress' ) ) ?></span></div>
    272                     <div class="item-meta desc"><?php echo bp_create_excerpt( $group->description ) ?></div>
    273                 </div>
    274            
    275                 <div class="action">
    276                     <?php bp_group_join_button( $group ) ?>
    277                     <div class="meta">
    278                         <?php $member_count = groups_get_groupmeta( $group->id, 'total_member_count' ) ?>
    279                         <?php echo ucwords($group->status) ?> <?php _e( 'Group', 'buddypress' ) ?> /
    280                         <?php if ( 1 == $member_count ) : ?>
    281                             <?php printf( __( '%d member', 'buddypress' ), $member_count ) ?>
    282                         <?php else : ?>
    283                             <?php printf( __( '%d members', 'buddypress' ), $member_count ) ?>
    284                         <?php endif; ?>
    285                     </div>
    286                 </div>
    287            
    288                 <div class="clear"></div>
    289             </li>
    290            
    291             <?php $counter++ ?>
    292         <?php endforeach; ?>
    293         </ul>   
    294     <?php
    295     } else {
    296         echo "-1[[SPLIT]]<div id='message' class='error'><p>" . __("No groups matched the current filter.", 'buddypress') . '</p></div>';
    297     }
    298    
    299     if ( isset( $_POST['letter'] ) ) {
    300         echo '<input type="hidden" id="selected_letter" value="' . $_POST['letter'] . '" name="selected_letter" />';
    301     }
    302    
    303     if ( isset( $_POST['groups_search'] ) ) {
    304         echo '<input type="hidden" id="search_terms" value="' . $_POST['groups_search'] . '" name="search_terms" />';
    305     }
    306 
     214
     215    load_template( TEMPLATEPATH . '/directories/groups/groups-loop.php' );
    307216}
    308217add_action( 'wp_ajax_directory_groups', 'bp_core_ajax_directory_groups' );
  • trunk/bp-groups/bp-groups-templatetags.php

    r1238 r1250  
    11<?php
    22
    3 class BP_Groups_Template {
    4     var $current_group = -1;
    5     var $group_count;
    6     var $groups;
    7     var $group;
    8    
    9     var $in_the_loop;
    10    
    11     var $pag_page;
    12     var $pag_num;
    13     var $pag_links;
    14     var $total_group_count;
    15    
    16     var $single_group = false;
    17    
    18     var $sort_by;
    19     var $order;
    20    
    21     function bp_groups_template( $user_id = null, $group_slug = null, $groups_per_page = 10 ) {
    22         global $bp, $current_user;
    23        
    24         if ( !$user_id )
    25             $user_id = $current_user->id;
    26        
    27         $this->pag_page = isset( $_REQUEST['fpage'] ) ? intval( $_REQUEST['fpage'] ) : 1;
    28         $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $groups_per_page;
    29        
    30         if ( ( 'my-groups' == $bp->current_action && empty( $_REQUEST['group-filter-box'] ) ) || ( !$bp->current_action && !isset($_REQUEST['page']) && empty( $_REQUEST['group-filter-box'] ) ) ) {
    31 
    32             $order = $bp->action_variables[0];
    33            
    34             if ( 'recently-joined' == $order ) {
    35                 $this->groups = groups_get_recently_joined_for_user( $bp->displayed_user->id, $this->pag_num, $this->pag_page );
    36             } else if ( 'most-popular' == $order ) {
    37                 $this->groups = groups_get_most_popular_for_user( $bp->displayed_user->id, $this->pag_num, $this->pag_page );               
    38             } else if ( 'admin-of' == $order ) {
    39                 $this->groups = groups_get_user_is_admin_of( $bp->displayed_user->id, $this->pag_num, $this->pag_page );               
    40             } else if ( 'mod-of' == $order ) {
    41                 $this->groups = groups_get_user_is_mod_of( $bp->displayed_user->id, $this->pag_num, $this->pag_page );             
    42             } else if ( 'alphabetically' == $order ) {
    43                 $this->groups = groups_get_alphabetically_for_user( $bp->displayed_user->id, $this->pag_num, $this->pag_page );
    44             } else {
    45                 $this->groups = groups_get_recently_active_for_user( $bp->displayed_user->id, $this->pag_num, $this->pag_page );
    46             }
    47 
    48             $this->total_group_count = (int)$this->groups['total'];
    49             $this->groups = $this->groups['groups'];
    50             $this->group_count = count($this->groups);
    51        
    52         } else if ( ( 'my-groups' == $bp->current_action && $_REQUEST['group-filter-box'] != '' ) || ( !$bp->current_action && !isset($_REQUEST['page']) && $_REQUEST['group-filter-box'] != '' ) ) {
    53 
    54             $this->groups = groups_filter_user_groups( $_REQUEST['group-filter-box'], $this->pag_num, $this->pag_page );
    55             $this->total_group_count = (int)$this->groups['total'];
    56             $this->groups = $this->groups['groups'];
    57             $this->group_count = count($this->groups);
    58        
    59         } else if ( 'invites' == $bp->current_action ) {
    60        
    61             $this->groups = groups_get_invites_for_user();
    62             $this->total_group_count = count($this->groups);
    63             $this->group_count = count($this->groups);
    64        
    65         } else if ( isset( $_REQUEST['page'] ) && 'groups_admin_settings' == $_REQUEST['page'] ) {
    66            
    67             $this->sort_by = $_REQUEST['sortby'];
    68             $this->order = ( isset( $_REQUEST['order'] ) ) ? $_REQUEST['order'] : 'ASC';
    69            
    70             if ( isset( $_REQUEST['s'] ) && $_REQUEST['s'] != '' ) {
    71                 $this->groups = groups_search_groups( $_REQUEST['s'], $this->pag_num, $this->pag_page, $this->sort_by, $this->order );
    72                 $this->total_group_count = (int)$this->groups['total'];
    73                 $this->groups = $this->groups['groups'];
    74                 $this->group_count = count($this->groups);
    75             } else {
    76                 $this->groups = groups_get_all( $this->pag_num, $this->pag_page, false, $this->sort_by, $this->order );
    77                 $this->total_group_count = count( groups_get_all() ); // TODO: not ideal
    78                 $this->group_count = count($this->groups);
    79             }
    80            
    81         } else if ( $group_slug ) {
    82            
    83             $this->single_group = true;
    84            
    85             $group = new stdClass;
    86             $group->group_id = BP_Groups_Group::get_id_from_slug($group_slug);
    87            
    88             $this->groups = array( $group );
    89             $this->total_group_count = 1;
    90             $this->group_count = 1;
    91        
    92         } else {
    93            
    94             $this->groups = groups_get_user_groups( $bp->displayed_user->id, $this->pag_num, $this->pag_page );
    95             $this->total_group_count = (int)$this->groups['total'];
    96             $this->groups = $this->groups['groups'];
    97             $this->group_count = count($this->groups); 
    98                    
    99         }
    100        
    101         $this->pag_links = paginate_links( array(
    102             'base' => add_query_arg( array( 'fpage' => '%#%', 'num' => $this->pag_num, 's' => $_REQUEST['s'], 'sortby' => $this->sort_by, 'order' => $this->order ) ),
    103             'format' => '',
    104             'total' => ceil($this->total_group_count / $this->pag_num),
    105             'current' => $this->pag_page,
    106             'prev_text' => '&laquo;',
    107             'next_text' => '&raquo;',
    108             'mid_size' => 1
    109         ));
    110        
    111     }
    112    
    113     function has_groups() {
    114         if ( $this->group_count )
    115             return true;
    116        
    117         return false;
    118     }
    119    
    120     function next_group() {
    121         $this->current_group++;
    122         $this->group = $this->groups[$this->current_group];
    123            
    124         return $this->group;
    125     }
    126    
    127     function rewind_groups() {
    128         $this->current_group = -1;
    129         if ( $this->group_count > 0 ) {
    130             $this->group = $this->groups[0];
    131         }
    132     }
    133    
    134     function user_groups() {
    135         if ( $this->current_group + 1 < $this->group_count ) {
    136             return true;
    137         } elseif ( $this->current_group + 1 == $this->group_count ) {
    138             do_action('loop_end');
    139             // Do some cleaning up after the loop
    140             $this->rewind_groups();
    141         }
    142 
    143         $this->in_the_loop = false;
    144         return false;
    145     }
    146    
    147     function the_group() {
    148         global $group;
    149 
    150         $this->in_the_loop = true;
    151         $this->group = $this->next_group();
    152        
    153         // If this is a single group then instantiate group meta when creating the object.
    154         if ( $this->single_group ) {
    155             if ( !$group = wp_cache_get( 'groups_group_' . $this->group->group_id, 'bp' ) ) {
    156                 $group = new BP_Groups_Group( $this->group->group_id, true );
    157                 wp_cache_set( 'groups_group_' . $this->group->group_id, $group, 'bp' );
    158             }
    159         } else {
    160             if ( !$group = wp_cache_get( 'groups_group_nouserdata_' . $this->group->group_id, 'bp' ) ) {
    161                 $group = new BP_Groups_Group( $this->group->group_id, false, false );
    162                 wp_cache_set( 'groups_group_nouserdata_' . $this->group->group_id, $group, 'bp' );
    163             }
    164         }
    165        
    166         $this->group = $group;
    167        
    168         if ( 0 == $this->current_group ) // loop has just started
    169             do_action('loop_start');
    170     }
    171 }
    172 
    173 function bp_has_groups( $groups_per_page = 10 ) {
    174     global $groups_template, $bp;
    175     global $group_obj;
    176    
    177     if ( !$bp->is_single_item ) {
    178         $groups_template = new BP_Groups_Template( $bp->displayed_user->id, false, $groups_per_page );
    179     } else {
    180         $groups_template = new BP_Groups_Template( $bp->displayed_user->id, $group_obj->slug, $groups_per_page );       
    181     }
    182    
    183     return $groups_template->has_groups();
    184 }
    185 
    186 function bp_groups() {
    187     global $groups_template;
    188     return $groups_template->user_groups();
    189 }
    190 
    191 function bp_the_group() {
    192     global $groups_template;
    193     return $groups_template->the_group();
    194 }
    195 
    196 function bp_group_is_visible( $group = false ) {
    197     global $bp, $groups_template;
    198    
    199     if ( !$group )
    200         $group =& $groups_template->group;
    201        
    202     if ( 'public' == $group->status ) {
    203         return true;
    204     } else {
    205         if ( groups_is_user_member( $bp->loggedin_user->id, $group->id ) ) {
    206             return true;
    207         }
    208     }
    209    
    210     return false;
    211 }
    212 
    213 function bp_group_has_news( $group = false ) {
    214     global $groups_template;
    215    
    216     if ( !$group )
    217         $group =& $groups_template->group;
    218    
    219     if ( empty( $group->news ) )
    220         return false;
    221    
    222     return true;
    223 }
    224 
    225 function bp_group_id( $echo = true, $group = false ) {
    226     global $groups_template;
    227 
    228     if ( !$group )
    229         $group =& $groups_template->group;
    230    
    231     if ( $echo )
    232         echo apply_filters( 'bp_group_id', $group->id );
    233     else
    234         return apply_filters( 'bp_group_id', $group->id );
    235 }
    236 
    237 function bp_group_name( $echo = true, $group = false ) {
    238     global $groups_template;
    239 
    240     if ( !$group )
    241         $group =& $groups_template->group;
    242 
    243     if ( $echo )
    244         echo apply_filters( 'bp_group_name', $group->name );
    245     else
    246         return apply_filters( 'bp_group_name', $group->name );
    247 }
    248 
    249 function bp_group_type( $group = false ) {
    250     global $groups_template;
    251 
    252     if ( !$group )
    253         $group =& $groups_template->group;
    254    
    255     if ( 'public' == $group->status ) {
    256         $type = __( "Public Group", "buddypress" );
    257     } else if ( 'hidden' == $group->status ) { 
    258         $type = __( "Hidden Group", "buddypress" );
    259     } else if ( 'private' == $group->status ) {
    260         $type = __( "Private Group", "buddypress" );
    261     } else {
    262         $type = ucwords( $group->status ) . ' ' . __( 'Group', 'buddypress' );
    263     }
    264    
    265     echo apply_filters( 'bp_group_type',  $type ); 
    266 }
    267 
    268 function bp_group_avatar( $group = false ) {
    269     global $groups_template;
    270    
    271     if ( !$group )
    272         $group =& $groups_template->group;
    273    
    274     ?><img src="<?php echo $group->avatar_full ?>" class="avatar" alt="<?php echo $group->name ?> Avatar" /><?php
    275 }
    276 
    277 function bp_group_avatar_thumb( $group = false ) {
    278     global $groups_template;
    279 
    280     if ( !$group )
    281         $group =& $groups_template->group;
    282 
    283     ?><img src="<?php echo $group->avatar_thumb ?>" class="avatar" alt="<?php echo $group->name ?> Avatar" /><?php
    284 }
    285 
    286 function bp_group_avatar_mini( $group = false) {
    287     global $groups_template;
    288    
    289     if ( !$group )
    290         $group =& $groups_template->group;
    291    
    292     ?><img src="<?php echo $group->avatar_thumb ?>" width="30" height="30" class="avatar" alt="<?php echo $group->name ?> Avatar" /><?php
    293 }
    294 
    295 function bp_group_last_active( $echo = true, $group = false ) {
    296     global $groups_template;
    297 
    298     if ( !$group )
    299         $group =& $groups_template->group;
    300    
    301     $last_active = groups_get_groupmeta( $group->id, 'last_activity' );
    302    
    303     if ( empty( $last_active ) )
    304         _e( 'not yet active', 'buddypress' );
    305     else
    306         echo apply_filters( 'bp_group_last_active', bp_core_time_since( $last_active ) );
    307 }
    308 
    309 function bp_group_permalink( $group = false, $echo = true ) {
    310     global $groups_template, $bp, $current_blog;
    311 
    312     if ( !$group )
    313         $group =& $groups_template->group;
    314    
    315     if ( $echo )
    316         echo apply_filters( 'bp_group_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug );
    317     else
    318         return apply_filters( 'bp_group_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug );
    319 }
    320 
    321 function bp_group_admin_permalink( $echo = true, $group = false ) {
    322     global $groups_template, $bp, $current_blog;
    323 
    324     if ( !$group )
    325         $group =& $groups_template->group;
    326    
    327     if ( $echo )
    328         echo apply_filters( 'bp_group_admin_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug . '/admin' );
    329     else
    330         return apply_filters( 'bp_group_admin_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug . '/admin' );
    331 }
    332 
    333 function bp_group_slug( $group = false ) {
    334     global $groups_template;
    335 
    336     if ( !$group )
    337         $group =& $groups_template->group;
    338 
    339     echo apply_filters( 'bp_group_slug', $group->slug );
    340 }
    341 
    342 function bp_group_description( $group = false ) {
    343     global $groups_template;
    344 
    345     if ( !$group )
    346         $group =& $groups_template->group;
    347 
    348     echo apply_filters( 'bp_group_description', stripslashes($group->description) );
    349 }
    350 
    351 function bp_group_description_editable( $group = false ) {
    352     global $groups_template;
    353 
    354     if ( !$group )
    355         $group =& $groups_template->group;
    356    
    357     echo apply_filters( 'bp_group_description_editable', $group->description );
    358 }
    359 
    360 function bp_group_description_excerpt( $group = false ) {
    361     global $groups_template;
    362 
    363     if ( !$group )
    364         $group =& $groups_template->group;
    365    
    366     echo apply_filters( 'bp_group_description_excerpt', bp_create_excerpt( $group->description, 20 ) );
    367 }
    368 
    369 function bp_group_news( $group = false ) {
    370     global $groups_template;
    371 
    372     if ( !$group )
    373         $group =& $groups_template->group;
    374 
    375     echo apply_filters( 'bp_group_news', stripslashes($groups_template->group->news) );
    376 }
    377 
    378 function bp_group_news_editable( $group = false ) {
    379     global $groups_template;
    380 
    381     if ( !$group )
    382         $group =& $groups_template->group;
    383 
    384     echo apply_filters( 'bp_group_news_editable', $group->news );
    385 }
    386 
    387 function bp_group_public_status( $group = false ) {
    388     global $groups_template;
    389 
    390     if ( !$group )
    391         $group =& $groups_template->group;
    392 
    393     if ( $group->is_public ) {
    394         _e('Public', 'buddypress');
    395     } else {
    396         _e('Private', 'buddypress');
    397     }
    398 }
    399     function bp_group_is_public( $group = false ) {
    400         global $groups_template;
    401 
    402         if ( !$group )
    403             $group =& $groups_template->group;
    404 
    405         return apply_filters( 'bp_group_is_public', $group->is_public );
    406     }
    407 
    408 
    409 function bp_group_date_created( $group = false ) {
    410     global $groups_template;
    411 
    412     if ( !$group )
    413         $group =& $groups_template->group;
    414    
    415     echo apply_filters( 'bp_group_date_created', date( get_option( 'date_format' ), $group->date_created ) );
    416 }
    417 
    418 function bp_group_list_admins( $full_list = true, $group = false ) {
    419     global $groups_template;
    420    
    421     if ( !$group )
    422         $group =& $groups_template->group;
    423    
    424     if ( !$admins = &$group->admins )
    425         $admins = $group->get_administrators();
    426 
    427     if ( $admins ) {
    428         if ( $full_list ) { ?>
    429             <ul id="group-admins">
    430             <?php for ( $i = 0; $i < count($admins); $i++ ) { ?>
    431                 <li>
    432                     <a href="<?php echo $admins[$i]->user->user_url ?>" title="<?php echo $admins[$i]->user->fullname ?>"><?php echo $admins[$i]->user->avatar_thumb ?></a>
    433                     <h5><?php echo $admins[$i]->user->user_link ?></h5>
    434                     <span class="activity"><?php echo $admins[$i]->user_title ?></span>
    435                     <hr />
    436                 </li>
    437             <?php } ?>
    438             </ul>
    439         <?php } else { ?>
    440             <?php for ( $i = 0; $i < count($admins); $i++ ) { ?>
    441                 <?php echo $admins[$i]->user->user_link ?>
    442             <?php } ?>
    443         <?php } ?>
    444     <?php } else { ?>
    445         <span class="activity"><?php _e( 'No Admins', 'buddypress' ) ?></span>
    446     <?php } ?>
    447    
     3function bp_groups_header_tabs() {
     4    global $bp, $create_group_step, $completed_to_step;
     5?>
     6    <li<?php if ( !isset($bp->action_variables[0]) || 'recently-active' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/recently-active"><?php _e( 'Recently Active', 'buddypress' ) ?></a></li>
     7    <li<?php if ( 'recently-joined' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/recently-joined"><?php _e( 'Recently Joined', 'buddypress' ) ?></a></li>
     8    <li<?php if ( 'most-popular' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/most-popular""><?php _e( 'Most Popular', 'buddypress' ) ?></a></li>
     9    <li<?php if ( 'admin-of' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/admin-of""><?php _e( 'Administrator Of', 'buddypress' ) ?></a></li>
     10    <li<?php if ( 'mod-of' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/mod-of""><?php _e( 'Moderator Of', 'buddypress' ) ?></a></li>
     11    <li<?php if ( 'alphabetically' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/alphabetically""><?php _e( 'Alphabetically', 'buddypress' ) ?></a></li>
     12       
    44813<?php
    449 }
    450 
    451 function bp_group_list_mods( $full_list = true, $group = false ) {
    452     global $groups_template;
    453    
    454     if ( !$group )
    455         $group =& $groups_template->group;
    456    
    457     $group_mods = groups_get_group_mods( $group->id );
    458    
    459     if ( $group_mods ) {
    460         if ( $full_list ) { ?>
    461             <ul id="group-mods" class="mods-list">
    462             <?php for ( $i = 0; $i < count($group_mods); $i++ ) { ?>
    463                 <li>
    464                     <a href="<?php echo bp_core_get_userlink( $group_mods[$i]->user_id, false, true ) ?>" title="<?php echo bp_fetch_user_fullname( $group_mods[$i]->user->user_id ) ?>"><?php echo bp_core_get_avatar( $group_mods[$i]->user_id, 1, 50, 50 ) ?></a>
    465                     <h5><?php echo bp_core_get_userlink( $group_mods[$i]->user_id ) ?></h5>
    466                     <span class="activity"><?php _e( 'Group Mod', 'buddypress' ) ?></span>
    467                     <div class="clear"></div>
    468                 </li>
    469             <?php } ?>
    470             </ul>
    471         <?php } else { ?>
    472             <?php for ( $i = 0; $i < count($admins); $i++ ) { ?>
    473                 <?php echo bp_core_get_userlink( $group_mods[$i]->user_id ) . ' ' ?>
    474             <?php } ?>
    475         <?php } ?>
    476     <?php } else { ?>
    477         <span class="activity"><?php _e( 'No Mods', 'buddypress' ) ?></span>
    478     <?php } ?>
    479    
    480 <?php
    481 }
    482 
    483 function bp_group_all_members_permalink( $echo = true, $group = false ) {
    484     global $groups_template, $bp;
    485 
    486     if ( !$group )
    487         $group =& $groups_template->group;
    488    
    489     if ( $echo )
    490         echo apply_filters( 'bp_group_all_members_permalink', bp_group_permalink( $group, true ) . '/' . MEMBERS_SLUG );
    491     else
    492         return apply_filters( 'bp_group_all_members_permalink', bp_group_permalink( $group, false ) . '/' . MEMBERS_SLUG );
    493 }
    494 
    495 function bp_group_random_members( $group = false ) {
    496     global $groups_template;
    497 
    498     if ( !$group )
    499         $group =& $groups_template->group;
    500 
    501     $members = &$group->random_members;
    502 ?> 
    503     <ul class="horiz-gallery">
    504     <?php for ( $i = 0; $i < count( $members ); $i++ ) { ?>
    505         <li>
    506             <a href="<?php echo $members[$i]->user->user_url ?>"><?php echo $members[$i]->user->avatar_thumb ?></a>
    507             <h5><?php echo $members[$i]->user->user_link ?></h5>
    508         </li>
    509     <?php } ?>
    510     </ul>
    511     <div class="clear"></div>
    512 <?php
    513 }
    514 
    515 function bp_group_active_forum_topics( $total_topics = 3, $group = false ) {
    516     global $groups_template, $forum_template;
    517 
    518     if ( !$group )
    519         $group =& $groups_template->group;
    520 
    521     $forum_id = groups_get_groupmeta( $group->id, 'forum_id' );
    522 
    523     if ( $forum_id && $forum_id != '' ) {
    524         if ( function_exists( 'bp_forums_setup' ) ) {
    525             $latest_topics = bp_forums_get_topics( $forum_id, $total_topics, 1 );
    526        
    527             if ( $latest_topics ) { ?>
    528                 <ul class="item-list" id="recent-forum-topics"><?php
    529                
    530                 $counter = 0;
    531                
    532                 foreach( $latest_topics as $topic ) {
    533                     $alt = ( $counter % 2 == 1 ) ? ' class="alt"' : '';
    534                     $forum_template->topic = (object)$topic; ?>
    535                    
    536                     <li<?php echo $alt ?>>
    537                         <div class="avatar">
    538                             <?php bp_the_topic_poster_avatar() ?>
    539                         </div>
    540 
    541                         <a href="<?php bp_the_topic_permalink() ?>" title="<?php bp_the_topic_title() ?> - <?php _e( 'Permalink', 'buddypress' ) ?>"><?php bp_the_topic_title() ?></a>
    542                         <span class="small">- <?php bp_the_topic_total_post_count() ?> </span>
    543                         <p><span class="activity"><?php echo sprintf( __( 'updated %s ago', 'buddypress' ), bp_the_topic_time_since_last_post( false ) ) ?></span></p>
    544                
    545                         <div class="latest-post">
    546                             <?php _e( 'Latest by', 'buddypress' ) ?> <?php bp_the_topic_last_poster_name() ?>:
    547                             <?php bp_the_topic_latest_post_excerpt() ?>
    548                         </div>
    549                     </li>
    550                     <?php $counter++ ?>
    551                    
    552                 <?php } ?>
    553                 </ul>
    554                 <?php
    555             } else {
    556             ?>
    557                 <div id="message" class="info">
    558                     <p><?php _e( 'There are no active forum topics for this group', 'buddypress' ) ?></p>
    559                 </div>
    560             <?php
    561             }
    562         }
    563     }
    564 }
    565 
    566 function bp_group_search_form() {
    567     global $groups_template, $bp;
    568 
    569     $action = $bp->loggedin_user->domain . $bp->groups->slug . '/my-groups/search/';
    570     $label = __('Filter Groups', 'buddypress');
    571     $name = 'group-filter-box';
    572 ?>
    573     <form action="<?php echo $action ?>" id="group-search-form" method="post">
    574         <label for="<?php echo $name ?>" id="<?php echo $name ?>-label"><?php echo $label ?> <img id="ajax-loader" src="<?php echo $bp->groups->image_base ?>/ajax-loader.gif" height="7" alt="<?php _e( 'Loading', 'buddypress' ) ?>" style="display: none;" /></label>
    575         <input type="search" name="<?php echo $name ?>" id="<?php echo $name ?>" value="<?php echo $value ?>"<?php echo $disabled ?> />
    576    
    577         <?php wp_nonce_field( 'group-filter-box', '_wpnonce_group_filter' ) ?>
    578     </form>
    579 <?php
    580 }
    581 
    582 function bp_group_show_no_groups_message() {
    583     global $bp;
    584    
    585     if ( !groups_total_groups_for_user( $bp->displayed_user->id ) )
    586         return true;
    587        
    588     return false;
    589 }
    590 
    591 function bp_group_pagination() {
    592     global $groups_template;
    593     echo apply_filters( 'bp_group_pagination', $groups_template->pag_links );
    594 }
    595 
    596 function bp_total_group_count() {
    597     global $groups_template;
    598    
    599     echo apply_filters( 'bp_total_group_count', $groups_template->total_group_count );
    600 }
    601 
    602 function bp_group_total_members( $echo = true, $group = false ) {
    603     global $groups_template;
    604 
    605     if ( !$group )
    606         $group =& $groups_template->group;
    607 
    608     if ( $echo )
    609         echo apply_filters( 'groups_template', $group->total_member_count );
    610     else
    611         return apply_filters( 'groups_template', $group->total_member_count );
    612 }
    613 
    614 function bp_group_is_photos_enabled( $group = false ) {
    615     global $groups_template;
    616 
    617     if ( !$group )
    618         $group =& $groups_template->group;
    619 
    620     if ( $group->enable_photos )
    621         return true;
    622    
    623     return false;
    624 }
    625 
    626 function bp_group_show_wire_setting( $group = false ) {
    627     global $groups_template;
    628 
    629     if ( !$group )
    630         $group =& $groups_template->group;
    631 
    632     if ( $group->enable_wire )
    633         echo ' checked="checked"';
    634 }
    635 
    636 function bp_group_is_wire_enabled( $group = false ) {
    637     global $groups_template;
    638 
    639     if ( !$group )
    640         $group =& $groups_template->group;
    641    
    642     if ( $group->enable_wire )
    643         return true;
    644    
    645     return false;
    646 }
    647 
    648 function bp_group_forum_permalink( $group = false ) {
    649     global $groups_template;
    650 
    651     if ( !$group )
    652         $group =& $groups_template->group;
    653 
    654     echo bp_group_permalink( $group, false ) . '/forum';
    655 }
    656 
    657 function bp_group_is_forum_enabled( $group = false ) {
    658     global $groups_template;
    659 
    660     if ( !$group )
    661         $group =& $groups_template->group;
    662 
    663     if ( function_exists( 'bp_forums_is_installed_correctly' ) ) {
    664         if ( bp_forums_is_installed_correctly() ) {
    665             if ( $group->enable_forum )
    666                 return true;
    667            
    668             return false;
    669         } else {
    670             return false;
    671         }
    672     }
    673    
    674     return false;   
    675 }
    676 
    677 function bp_group_show_forum_setting( $group = false ) {
    678     global $groups_template;
    679 
    680     if ( !$group )
    681         $group =& $groups_template->group;
    682    
    683     if ( $group->enable_forum )
    684         echo ' checked="checked"';
    685 }
    686 
    687 function bp_group_show_photos_setting( $group = false ) {
    688     global $groups_template;
    689 
    690     if ( !$group )
    691         $group =& $groups_template->group;
    692    
    693     if ( $group->enable_photos )
    694         echo ' checked="checked"'; 
    695 }
    696 
    697 function bp_group_show_photos_upload_setting( $permission, $group = false ) {
    698     global $groups_template;
    699 
    700     if ( !$group )
    701         $group =& $groups_template->group;
    702    
    703     if ( 'admin' == $permission && $group->photos_admin_only )
    704         echo ' checked="checked"';
    705    
    706     if ( 'member' == $permission && !$group->photos_admin_only )
    707         echo ' checked="checked"';
    708 }
    709 
    710 function bp_group_show_status_setting( $setting, $group = false ) {
    711     global $groups_template;
    712 
    713     if ( !$group )
    714         $group =& $groups_template->group;
    715    
    716     if ( $setting == $group->status )
    717         echo ' checked="checked"';
    718 }
    719 
    720 function bp_group_admin_memberlist( $admin_list = false, $group = false ) {
    721     global $groups_template;
    722    
    723     if ( !$group )
    724         $group =& $groups_template->group;
    725    
    726     $admins = groups_get_group_admins( $group->id );
    727 ?>
    728     <?php if ( $admins ) { ?>
    729         <ul id="admins-list" class="item-list<?php if ( $admin_list ) { ?> single-line<?php } ?>">
    730         <?php foreach ( $admins as $admin ) { ?>
    731             <?php if ( $admin_list ) { ?>
    732             <li>
    733                 <?php echo bp_core_get_avatar( $admin->user_id, 1, 30, 30 ) ?>
    734                 <h5><?php echo bp_core_get_userlink( $admin->user_id ) ?></h5>
    735             </li>
    736             <?php } else { ?>
    737             <li>
    738                 <?php echo bp_core_get_avatar( $admin->user_id, 1 ) ?>
    739                 <h5><?php echo bp_core_get_userlink( $admin->user_id ) ?></h5>
    740                 <span class="activity"><?php echo bp_core_get_last_activity( strtotime( $admin->date_modified ), __( 'joined %s ago', 'buddypress') ); ?></span>
    741                
    742                 <?php if ( function_exists( 'friends_install' ) ) : ?>
    743                     <div class="action">
    744                         <?php bp_add_friend_button( $admin->user_id ) ?>
    745                     </div>
    746                 <?php endif; ?>
    747             </li>       
    748             <?php } ?>
    749         <?php } ?>
    750         </ul>
    751     <?php } else { ?>
    752         <div id="message" class="info">
    753             <p><?php _e( 'This group has no administrators', 'buddypress' ); ?></p>
    754         </div>
    755     <?php }
    756 }
    757 
    758 function bp_group_mod_memberlist( $admin_list = false, $group = false ) {
    759     global $groups_template, $group_mods;   
    760 
    761     if ( !$group )
    762         $group =& $groups_template->group;
    763    
    764     $group_mods = groups_get_group_mods( $group->id );
    765     ?>
    766         <?php if ( $group_mods ) { ?>
    767             <ul id="mods-list" class="item-list<?php if ( $admin_list ) { ?> single-line<?php } ?>">
    768             <?php foreach ( $group_mods as $mod ) { ?>
    769                 <?php if ( $admin_list ) { ?>
    770                 <li>
    771                     <?php echo bp_core_get_avatar( $mod->user_id, 1, 30, 30 ) ?>
    772                     <h5><?php echo bp_core_get_userlink( $mod->user_id ) ?>  <span class="small"> &mdash; <a href="<?php bp_group_member_ban_link() ?>"><?php _e( 'Kick &amp; Ban', 'buddypress' ) ?></a> | <a href="<?php bp_group_member_demote_link($mod->user_id) ?>"><?php _e( 'Demote to Member', 'buddypress' ) ?></a></span></h5>
    773                 </li>
    774                 <?php } else { ?>
    775                 <li>
    776                     <?php echo bp_core_get_avatar( $mod->user_id, 1 ) ?>
    777                     <h5><?php echo bp_core_get_userlink( $mod->user_id ) ?></h5>
    778                     <span class="activity"><?php echo bp_core_get_last_activity( strtotime( $mod->date_modified ), __( 'joined %s ago', 'buddypress') ); ?></span>
    779                    
    780                     <?php if ( function_exists( 'friends_install' ) ) : ?>
    781                         <div class="action">
    782                             <?php bp_add_friend_button( $mod->user_id ) ?>
    783                         </div>
    784                     <?php endif; ?>
    785                 </li>       
    786                 <?php } ?>         
    787             <?php } ?>
    788             </ul>
    789         <?php } else { ?>
    790             <div id="message" class="info">
    791                 <p><?php _e( 'This group has no moderators', 'buddypress' ); ?></p>
    792             </div>
    793         <?php }
    794 }
    795 
    796 function bp_group_has_moderators( $group = false ) {
    797     global $group_mods, $groups_template;
    798 
    799     if ( !$group )
    800         $group =& $groups_template->group;
    801 
    802     return apply_filters( 'bp_group_has_moderators', groups_get_group_mods( $group->id ) );
    803 }
    804 
    805 function bp_group_member_promote_link( $group = false ) {
    806     global $members_template, $groups_template, $bp;
    807 
    808     if ( !$group )
    809         $group =& $groups_template->group;
    810 
    811     echo apply_filters( 'bp_group_member_promote_link', wp_nonce_url( bp_group_permalink( $group, false ) . '/admin/manage-members/promote/' . $members_template->member->user_id, 'groups_promote_member' ) );
    812 }
    813 
    814 function bp_group_member_demote_link( $user_id = false, $group = false ) {
    815     global $members_template, $groups_template, $bp;
    816 
    817     if ( !$group )
    818         $group =& $groups_template->group;
    819    
    820     if ( !$user_id )
    821         $user_id = $members_template->member->user_id;
    822    
    823     echo apply_filters( 'bp_group_member_demote_link', wp_nonce_url( bp_group_permalink( $group, false ) . '/admin/manage-members/demote/' . $user_id, 'groups_demote_member' ) );
    824 }
    825 
    826 function bp_group_member_ban_link( $group = false ) {
    827     global $members_template, $groups_template, $bp;
    828 
    829     if ( !$group )
    830         $group =& $groups_template->group;
    831    
    832     echo apply_filters( 'bp_group_member_ban_link', wp_nonce_url( bp_group_permalink( $group, false ) . '/admin/manage-members/ban/' . $members_template->member->user_id, 'groups_ban_member' ) );
    833 }
    834 
    835 function bp_group_member_unban_link( $group = false ) {
    836     global $members_template, $groups_template, $bp;
    837 
    838     if ( !$group )
    839         $group =& $groups_template->group;
    840    
    841     echo apply_filters( 'bp_group_member_unban_link', wp_nonce_url( bp_group_permalink( $group, false ) . '/admin/manage-members/unban/' . $members_template->member->user_id, 'groups_unban_member' ) );   
    842 }
    843 
    844 function bp_group_admin_tabs( $group = false ) {
    845     global $bp, $groups_template;
    846 
    847     if ( !$group )
    848         $group =& $groups_template->group;
    849    
    850     $current_tab = $bp->action_variables[0];
    851 ?>
    852     <?php if ( $bp->is_item_admin || $bp->is_item_mod ) { ?>
    853         <li<?php if ( 'edit-details' == $current_tab || empty( $current_tab ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/edit-details"><?php _e('Edit Details', 'buddypress') ?></a></li>
    854     <?php } ?>
    855 
    856     <?php if ( $bp->is_item_admin ) { ?>   
    857         <li<?php if ( 'group-settings' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/group-settings"><?php _e('Group Settings', 'buddypress') ?></a></li>
    858     <?php } ?>
    859    
    860     <?php if ( $bp->is_item_admin ) { ?>   
    861         <li<?php if ( 'group-avatar' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/group-avatar"><?php _e('Group Avatar', 'buddypress') ?></a></li>
    862     <?php } ?>
    863 
    864     <?php if ( $bp->is_item_admin ) { ?>           
    865         <li<?php if ( 'manage-members' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/manage-members"><?php _e('Manage Members', 'buddypress') ?></a></li>
    866     <?php } ?>
    867    
    868     <?php if ( $bp->is_item_admin && $groups_template->group->status == 'private' ) : ?>
    869     <li<?php if ( 'membership-requests' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/membership-requests"><?php _e('Membership Requests', 'buddypress') ?></a></li>
    870     <?php endif; ?>
    871 
    872     <?php if ( $bp->is_item_admin ) { ?>       
    873         <li<?php if ( 'delete-group' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/delete-group"><?php _e('Delete Group', 'buddypress') ?></a></li>
    874     <?php } ?>
    875    
    876 <?php
    877     do_action( 'groups_admin_tabs' );
    878 }
    879 
    880 function bp_group_form_action( $page, $group = false ) {
    881     global $bp, $groups_template;
    882    
    883     if ( !$group )
    884         $group =& $groups_template->group;
    885    
    886     echo apply_filters( 'bp_group_form_action', bp_group_permalink( $group, false ) . '/' . $page );
    887 }
    888 
    889 function bp_group_admin_form_action( $page, $group = false ) {
    890     global $bp, $groups_template;
    891 
    892     if ( !$group )
    893         $group =& $groups_template->group;
    894    
    895     echo apply_filters( 'bp_group_admin_form_action', bp_group_permalink( $group, false ) . '/admin/' . $page );
    896 }
    897 
    898 function bp_group_has_requested_membership( $group = false ) {
    899     global $bp, $groups_template;
    900    
    901     if ( !$group )
    902         $group =& $groups_template->group;
    903    
    904     if ( groups_check_for_membership_request( $bp->loggedin_user->id, $group->id ) )
    905         return true;
    906    
    907     return false;
    908 }
    909 
    910 function bp_group_is_member( $group = false ) {
    911     global $bp, $groups_template;
    912 
    913     if ( !$group )
    914         $group =& $groups_template->group;
    915    
    916     if ( groups_is_user_member( $bp->loggedin_user->id, $group->id ) )
    917         return true;
    918    
    919     return false;
    920 }
    921 
    922 function bp_group_accept_invite_link( $group = false ) {
    923     global $groups_template, $bp;
    924 
    925     if ( !$group )
    926         $group =& $groups_template->group;
    927    
    928     echo apply_filters( 'bp_group_accept_invite_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->groups->slug . '/invites/accept/' . $group->id, 'groups_accept_invite' ) ); 
    929 }
    930 
    931 function bp_group_reject_invite_link( $group = false ) {
    932     global $groups_template, $bp;
    933    
    934     if ( !$group )
    935         $group =& $groups_template->group;
    936    
    937     echo apply_filters( 'bp_group_reject_invite_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->groups->slug . '/invites/reject/' . $group->id, 'groups_reject_invite' ) );
    938 }
    939 
    940 function bp_has_friends_to_invite( $group = false ) {
    941     global $groups_template, $bp;
    942    
    943     if ( !function_exists('friends_install') )
    944         return false;
    945 
    946     if ( !$group )
    947         $group =& $groups_template->group;
    948    
    949     if ( !friends_check_user_has_friends( $bp->loggedin_user->id ) || !friends_count_invitable_friends( $bp->loggedin_user->id, $group->id ) )
    950         return false;
    951    
    952     return true;
    953 }
    954 
    955 function bp_group_leave_confirm_link( $group = false ) {
    956     global $groups_template, $bp;
    957 
    958     if ( !$group )
    959         $group =& $groups_template->group;
    960    
    961     echo apply_filters( 'bp_group_leave_confirm_link', wp_nonce_url( bp_group_permalink( $group, true ) . '/leave-group/yes', 'groups_leave_group' ) );
    962 }
    963 
    964 function bp_group_leave_reject_link( $group = false ) {
    965     global $groups_template, $bp;
    966 
    967     if ( !$group )
    968         $group =& $groups_template->group;
    969 
    970     echo apply_filters( 'bp_group_leave_reject_link', bp_group_permalink( $group, true ) );
    971 }
    972 
    973 function bp_group_send_invite_form( $group = false ) {
    974     global $bp, $groups_template, $invites;
    975    
    976     if ( !$group )
    977         $group =& $groups_template->group;
    978 ?>
    979     <div class="left-menu">
    980         <h4><?php _e( 'Select Friends', 'buddypress' ) ?> <img id="ajax-loader" src="<?php echo $bp->groups->image_base ?>/ajax-loader.gif" height="7" alt="Loading" style="display: none;" /></h4>
    981         <?php bp_group_list_invite_friends() ?>
    982         <?php wp_nonce_field( 'groups_invite_uninvite_user', '_wpnonce_invite_uninvite_user' ) ?>
    983         <input type="hidden" name="group_id" id="group_id" value="<?php echo $group->id ?>" />
    984     </div>
    985 
    986     <div class="main-column">
    987        
    988         <div id="message" class="info">
    989             <p><?php _e('Select people to invite from your friends list.', 'buddypress'); ?></p>
    990         </div>
    991 
    992         <?php $invites = groups_get_invites_for_group( $bp->loggedin_user->id, $group_obj->id ) ?>
    993        
    994         <ul id="friend-list" class="item-list">
    995             <?php for ( $i = 0; $i < count($invites); $i++ ) {
    996                 if ( !$user = wp_cache_get( 'bp_user_' . $invites[$i], 'bp' ) ) {
    997                     $user = new BP_Core_User( $invites[$i] );
    998                     wp_cache_set( 'bp_user_' . $invites[$i], $user, 'bp' );
    999                 }
    1000                 ?>
    1001                 <li id="uid-<?php echo $user->id ?>">
    1002                     <?php echo $user->avatar_thumb ?>
    1003                     <h4><?php echo $user->user_link ?></h4>
    1004                     <span class="activity"><?php echo $user->last_active ?></span>
    1005                     <div class="action">
    1006                         <a class="remove" href="<?php echo wp_nonce_url( site_url( $bp->groups->slug . '/' . $group->id . '/invites/remove/' . $user->id ), 'groups_invite_uninvite_user' ) ?>" id="uid-<?php echo $user->id ?>"><?php _e( 'Remove Invite', 'buddypress' ) ?></a>
    1007                     </div>
    1008                 </li>
    1009             <?php } // end for ?>
    1010         </ul>
    1011        
    1012         <?php wp_nonce_field( 'groups_send_invites', '_wpnonce_send_invites' ) ?>
    1013     </div>
    1014 <?php
    1015 }
    1016 
    1017 function bp_group_send_invite_form_action( $group = false ) {
    1018     global $groups_template, $bp;
    1019    
    1020     if ( !$group )
    1021         $group =& $groups_template->group;
    1022    
    1023     echo apply_filters( 'bp_group_send_invite_form_action', bp_group_permalink( $group, true ) . '/send-invites/send' );
    1024 }
    1025 
    1026 function bp_group_join_button( $group = false ) {
    1027     global $bp, $groups_template;
    1028    
    1029     if ( !$group )
    1030         $group =& $groups_template->group;
    1031    
    1032     // If they're not logged in or are banned from the group, no join button.
    1033     if ( !is_user_logged_in() || groups_is_user_banned( $bp->loggedin_user->id, $group->id ) )
    1034         return false;
    1035    
    1036     echo '<div class="group-button ' . $group->status . '" id="groupbutton-' . $group->id . '">';
    1037    
    1038     switch ( $group->status ) {
    1039         case 'public':
    1040             if ( BP_Groups_Member::check_is_member( $bp->loggedin_user->id, $group->id ) )
    1041                 echo '<a class="leave-group" href="' . wp_nonce_url( bp_group_permalink( $group, false ) . '/leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';                                 
    1042             else
    1043                 echo '<a class="join-group" href="' . wp_nonce_url( bp_group_permalink( $group, false ) . '/join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>';                   
    1044         break;
    1045        
    1046         case 'private':
    1047             if ( BP_Groups_Member::check_is_member( $bp->loggedin_user->id, $group->id ) ) {
    1048                 echo '<a class="leave-group" href="' . wp_nonce_url( bp_group_permalink( $group, false ) . '/leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';                                     
    1049             } else {
    1050                 if ( !bp_group_has_requested_membership( $group ) )
    1051                     echo '<a class="request-membership" href="' . wp_nonce_url( bp_group_permalink( $group, false ) . '/request-membership', 'groups_request_membership' ) . '">' . __('Request Membership', 'buddypress') . '</a>';       
    1052                 else
    1053                     echo '<a class="membership-requested" href="' . bp_group_permalink( $group, false ) . '">' . __( 'Request Sent', 'buddypress' ) . '</a>';               
    1054             }
    1055         break;
    1056     }
    1057    
    1058     echo '</div>';
    1059 }
    1060 
    1061 function bp_group_status_message( $group = false ) {
    1062     global $groups_template;
    1063    
    1064     if ( !$group )
    1065         $group =& $groups_template->group;
    1066    
    1067     if ( 'private' == $group->status ) {
    1068         if ( !bp_group_has_requested_membership() )
    1069             if ( is_user_logged_in() )
    1070                 _e( 'This is a private group and you must request group membership in order to join.', 'buddypress' );
    1071             else
    1072                 _e( 'This is a private group. To join you must be a registered site member and request group membership.', 'buddypress' );
    1073         else
    1074             _e( 'This is a private group. Your membership request is awaiting approval from the group administrator.', 'buddypress' );         
    1075     } else {
    1076         _e( 'This is a hidden group and only invited members can join.', 'buddypress' );
    1077     }
     14    do_action( 'groups_header_tabs' );
    107815}
    107916
     
    1306243}
    1307244
    1308 function bp_groups_header_tabs() {
    1309     global $bp, $create_group_step, $completed_to_step;
    1310 ?>
    1311     <li<?php if ( !isset($bp->action_variables[0]) || 'recently-active' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/recently-active"><?php _e( 'Recently Active', 'buddypress' ) ?></a></li>
    1312     <li<?php if ( 'recently-joined' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/recently-joined"><?php _e( 'Recently Joined', 'buddypress' ) ?></a></li>
    1313     <li<?php if ( 'most-popular' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/most-popular""><?php _e( 'Most Popular', 'buddypress' ) ?></a></li>
    1314     <li<?php if ( 'admin-of' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/admin-of""><?php _e( 'Administrator Of', 'buddypress' ) ?></a></li>
    1315     <li<?php if ( 'mod-of' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/mod-of""><?php _e( 'Moderator Of', 'buddypress' ) ?></a></li>
    1316     <li<?php if ( 'alphabetically' == $bp->action_variables[0] ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . $bp->groups->slug ?>/my-groups/alphabetically""><?php _e( 'Alphabetically', 'buddypress' ) ?></a></li>
    1317        
    1318 <?php
    1319     do_action( 'groups_header_tabs' );
    1320 }
    1321 
    1322245function bp_groups_filter_title() {
    1323246    global $bp;
     
    1396319                    <?php bp_group_join_button( $group ) ?>
    1397320                    <div class="meta">
    1398                         <?php $member_count = groups_get_groupmeta( $group->id, 'total_member_count' ) ?>
     321                        <?php $member_count = groups_get_groupmeta( $group->id, 'total_group_count' ) ?>
    1399322                        <?php echo ucwords($group->status) ?> <?php _e( 'Group', 'buddypress' ) ?> /
    1400323                        <?php if ( 1 == $member_count ) : ?>
     
    1469392}
    1470393
    1471 /****
     394
     395/*****************************************************************************
     396 * User Groups Template Class/Tags
     397 **/
     398
     399class BP_Groups_User_Groups_Template {
     400    var $current_group = -1;
     401    var $group_count;
     402    var $groups;
     403    var $group;
     404   
     405    var $in_the_loop;
     406   
     407    var $pag_page;
     408    var $pag_num;
     409    var $pag_links;
     410    var $total_group_count;
     411   
     412    var $single_group = false;
     413   
     414    var $sort_by;
     415    var $order;
     416   
     417    function bp_groups_user_groups_template( $user_id = null, $group_slug = null, $groups_per_page = 10 ) {
     418        global $bp, $current_user;
     419       
     420        if ( !$user_id )
     421            $user_id = $current_user->id;
     422       
     423        $this->pag_page = isset( $_REQUEST['fpage'] ) ? intval( $_REQUEST['fpage'] ) : 1;
     424        $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $groups_per_page;
     425       
     426        if ( ( 'my-groups' == $bp->current_action && empty( $_REQUEST['group-filter-box'] ) ) || ( !$bp->current_action && !isset($_REQUEST['page']) && empty( $_REQUEST['group-filter-box'] ) ) ) {
     427
     428            $order = $bp->action_variables[0];
     429           
     430            if ( 'recently-joined' == $order ) {
     431                $this->groups = groups_get_recently_joined_for_user( $bp->displayed_user->id, $this->pag_num, $this->pag_page );
     432            } else if ( 'most-popular' == $order ) {
     433                $this->groups = groups_get_most_popular_for_user( $bp->displayed_user->id, $this->pag_num, $this->pag_page );               
     434            } else if ( 'admin-of' == $order ) {
     435                $this->groups = groups_get_user_is_admin_of( $bp->displayed_user->id, $this->pag_num, $this->pag_page );               
     436            } else if ( 'mod-of' == $order ) {
     437                $this->groups = groups_get_user_is_mod_of( $bp->displayed_user->id, $this->pag_num, $this->pag_page );             
     438            } else if ( 'alphabetically' == $order ) {
     439                $this->groups = groups_get_alphabetically_for_user( $bp->displayed_user->id, $this->pag_num, $this->pag_page );
     440            } else {
     441                $this->groups = groups_get_recently_active_for_user( $bp->displayed_user->id, $this->pag_num, $this->pag_page );
     442            }
     443
     444            $this->total_group_count = (int)$this->groups['total'];
     445            $this->groups = $this->groups['groups'];
     446            $this->group_count = count($this->groups);
     447       
     448        } else if ( ( 'my-groups' == $bp->current_action && $_REQUEST['group-filter-box'] != '' ) || ( !$bp->current_action && !isset($_REQUEST['page']) && $_REQUEST['group-filter-box'] != '' ) ) {
     449
     450            $this->groups = groups_filter_user_groups( $_REQUEST['group-filter-box'], $this->pag_num, $this->pag_page );
     451            $this->total_group_count = (int)$this->groups['total'];
     452            $this->groups = $this->groups['groups'];
     453            $this->group_count = count($this->groups);
     454       
     455        } else if ( 'invites' == $bp->current_action ) {
     456       
     457            $this->groups = groups_get_invites_for_user();
     458            $this->total_group_count = count($this->groups);
     459            $this->group_count = count($this->groups);
     460       
     461        } else if ( isset( $_REQUEST['page'] ) && 'groups_admin_settings' == $_REQUEST['page'] ) {
     462           
     463            $this->sort_by = $_REQUEST['sortby'];
     464            $this->order = ( isset( $_REQUEST['order'] ) ) ? $_REQUEST['order'] : 'ASC';
     465           
     466            if ( isset( $_REQUEST['s'] ) && $_REQUEST['s'] != '' ) {
     467                $this->groups = groups_search_groups( $_REQUEST['s'], $this->pag_num, $this->pag_page, $this->sort_by, $this->order );
     468                $this->total_group_count = (int)$this->groups['total'];
     469                $this->groups = $this->groups['groups'];
     470                $this->group_count = count($this->groups);
     471            } else {
     472                $this->groups = groups_get_all( $this->pag_num, $this->pag_page, false, $this->sort_by, $this->order );
     473                $this->total_group_count = count( groups_get_all() ); // TODO: not ideal
     474                $this->group_count = count($this->groups);
     475            }
     476           
     477        } else if ( $group_slug ) {
     478           
     479            $this->single_group = true;
     480           
     481            $group = new stdClass;
     482            $group->group_id = BP_Groups_Group::get_id_from_slug($group_slug);
     483           
     484            $this->groups = array( $group );
     485            $this->total_group_count = 1;
     486            $this->group_count = 1;
     487       
     488        } else {
     489           
     490            $this->groups = groups_get_user_groups( $bp->displayed_user->id, $this->pag_num, $this->pag_page );
     491            $this->total_group_count = (int)$this->groups['total'];
     492            $this->groups = $this->groups['groups'];
     493            $this->group_count = count($this->groups); 
     494                   
     495        }
     496       
     497        $this->pag_links = paginate_links( array(
     498            'base' => add_query_arg( array( 'fpage' => '%#%', 'num' => $this->pag_num, 's' => $_REQUEST['s'], 'sortby' => $this->sort_by, 'order' => $this->order ) ),
     499            'format' => '',
     500            'total' => ceil($this->total_group_count / $this->pag_num),
     501            'current' => $this->pag_page,
     502            'prev_text' => '&laquo;',
     503            'next_text' => '&raquo;',
     504            'mid_size' => 1
     505        ));
     506       
     507    }
     508   
     509    function has_groups() {
     510        if ( $this->group_count )
     511            return true;
     512       
     513        return false;
     514    }
     515   
     516    function next_group() {
     517        $this->current_group++;
     518        $this->group = $this->groups[$this->current_group];
     519           
     520        return $this->group;
     521    }
     522   
     523    function rewind_groups() {
     524        $this->current_group = -1;
     525        if ( $this->group_count > 0 ) {
     526            $this->group = $this->groups[0];
     527        }
     528    }
     529   
     530    function user_groups() {
     531        if ( $this->current_group + 1 < $this->group_count ) {
     532            return true;
     533        } elseif ( $this->current_group + 1 == $this->group_count ) {
     534            do_action('loop_end');
     535            // Do some cleaning up after the loop
     536            $this->rewind_groups();
     537        }
     538
     539        $this->in_the_loop = false;
     540        return false;
     541    }
     542   
     543    function the_group() {
     544        global $group;
     545
     546        $this->in_the_loop = true;
     547        $this->group = $this->next_group();
     548       
     549        // If this is a single group then instantiate group meta when creating the object.
     550        if ( $this->single_group ) {
     551            if ( !$group = wp_cache_get( 'groups_group_' . $this->group->group_id, 'bp' ) ) {
     552                $group = new BP_Groups_Group( $this->group->group_id, true );
     553                wp_cache_set( 'groups_group_' . $this->group->group_id, $group, 'bp' );
     554            }
     555        } else {
     556            if ( !$group = wp_cache_get( 'groups_group_nouserdata_' . $this->group->group_id, 'bp' ) ) {
     557                $group = new BP_Groups_Group( $this->group->group_id, false, false );
     558                wp_cache_set( 'groups_group_nouserdata_' . $this->group->group_id, $group, 'bp' );
     559            }
     560        }
     561       
     562        $this->group = $group;
     563       
     564        if ( 0 == $this->current_group ) // loop has just started
     565            do_action('loop_start');
     566    }
     567}
     568
     569function bp_has_groups( $groups_per_page = 10 ) {
     570    global $groups_template, $bp;
     571    global $group_obj;
     572   
     573    if ( !$bp->is_single_item ) {
     574        $groups_template = new BP_Groups_User_Groups_Template( $bp->displayed_user->id, false, $groups_per_page );
     575    } else {
     576        $groups_template = new BP_Groups_User_Groups_Template( $bp->displayed_user->id, $group_obj->slug, $groups_per_page );       
     577    }
     578   
     579    return $groups_template->has_groups();
     580}
     581
     582function bp_groups() {
     583    global $groups_template;
     584    return $groups_template->user_groups();
     585}
     586
     587function bp_the_group() {
     588    global $groups_template;
     589    return $groups_template->the_group();
     590}
     591
     592function bp_group_is_visible( $group = false ) {
     593    global $bp, $groups_template;
     594   
     595    if ( !$group )
     596        $group =& $groups_template->group;
     597       
     598    if ( 'public' == $group->status ) {
     599        return true;
     600    } else {
     601        if ( groups_is_user_member( $bp->loggedin_user->id, $group->id ) ) {
     602            return true;
     603        }
     604    }
     605   
     606    return false;
     607}
     608
     609function bp_group_has_news( $group = false ) {
     610    global $groups_template;
     611   
     612    if ( !$group )
     613        $group =& $groups_template->group;
     614   
     615    if ( empty( $group->news ) )
     616        return false;
     617   
     618    return true;
     619}
     620
     621function bp_group_id( $echo = true, $group = false ) {
     622    global $groups_template;
     623
     624    if ( !$group )
     625        $group =& $groups_template->group;
     626   
     627    if ( $echo )
     628        echo apply_filters( 'bp_group_id', $group->id );
     629    else
     630        return apply_filters( 'bp_group_id', $group->id );
     631}
     632
     633function bp_group_name( $echo = true, $group = false ) {
     634    global $groups_template;
     635
     636    if ( !$group )
     637        $group =& $groups_template->group;
     638
     639    if ( $echo )
     640        echo apply_filters( 'bp_group_name', $group->name );
     641    else
     642        return apply_filters( 'bp_group_name', $group->name );
     643}
     644
     645function bp_group_type( $group = false ) {
     646    global $groups_template;
     647
     648    if ( !$group )
     649        $group =& $groups_template->group;
     650   
     651    if ( 'public' == $group->status ) {
     652        $type = __( "Public Group", "buddypress" );
     653    } else if ( 'hidden' == $group->status ) { 
     654        $type = __( "Hidden Group", "buddypress" );
     655    } else if ( 'private' == $group->status ) {
     656        $type = __( "Private Group", "buddypress" );
     657    } else {
     658        $type = ucwords( $group->status ) . ' ' . __( 'Group', 'buddypress' );
     659    }
     660   
     661    echo apply_filters( 'bp_group_type',  $type ); 
     662}
     663
     664function bp_group_avatar( $group = false ) {
     665    global $groups_template;
     666   
     667    if ( !$group )
     668        $group =& $groups_template->group;
     669   
     670    ?><img src="<?php echo $group->avatar_full ?>" class="avatar" alt="<?php echo $group->name ?> Avatar" /><?php
     671}
     672
     673function bp_group_avatar_thumb( $group = false ) {
     674    global $groups_template;
     675
     676    if ( !$group )
     677        $group =& $groups_template->group;
     678
     679    ?><img src="<?php echo $group->avatar_thumb ?>" class="avatar" alt="<?php echo $group->name ?> Avatar" /><?php
     680}
     681
     682function bp_group_avatar_mini( $group = false) {
     683    global $groups_template;
     684   
     685    if ( !$group )
     686        $group =& $groups_template->group;
     687   
     688    ?><img src="<?php echo $group->avatar_thumb ?>" width="30" height="30" class="avatar" alt="<?php echo $group->name ?> Avatar" /><?php
     689}
     690
     691function bp_group_last_active( $echo = true, $group = false ) {
     692    global $groups_template;
     693
     694    if ( !$group )
     695        $group =& $groups_template->group;
     696   
     697    $last_active = groups_get_groupmeta( $group->id, 'last_activity' );
     698   
     699    if ( empty( $last_active ) ) {
     700        if ( $echo )
     701            _e( 'not yet active', 'buddypress' );
     702        else
     703            return __( 'not yet active', 'buddypress' );
     704    } else {
     705        if ( $echo )
     706            echo apply_filters( 'bp_group_last_active', bp_core_time_since( $last_active ) );
     707        else
     708            return apply_filters( 'bp_group_last_active', bp_core_time_since( $last_active ) );         
     709    }
     710}
     711
     712function bp_group_permalink( $group = false, $echo = true ) {
     713    global $groups_template, $bp, $current_blog;
     714
     715    if ( !$group )
     716        $group =& $groups_template->group;
     717   
     718    if ( $echo )
     719        echo apply_filters( 'bp_group_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug );
     720    else
     721        return apply_filters( 'bp_group_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug );
     722}
     723
     724function bp_group_admin_permalink( $echo = true, $group = false ) {
     725    global $groups_template, $bp, $current_blog;
     726
     727    if ( !$group )
     728        $group =& $groups_template->group;
     729   
     730    if ( $echo )
     731        echo apply_filters( 'bp_group_admin_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug . '/admin' );
     732    else
     733        return apply_filters( 'bp_group_admin_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug . '/admin' );
     734}
     735
     736function bp_group_slug( $group = false ) {
     737    global $groups_template;
     738
     739    if ( !$group )
     740        $group =& $groups_template->group;
     741
     742    echo apply_filters( 'bp_group_slug', $group->slug );
     743}
     744
     745function bp_group_description( $group = false ) {
     746    global $groups_template;
     747
     748    if ( !$group )
     749        $group =& $groups_template->group;
     750
     751    echo apply_filters( 'bp_group_description', stripslashes($group->description) );
     752}
     753
     754function bp_group_description_editable( $group = false ) {
     755    global $groups_template;
     756
     757    if ( !$group )
     758        $group =& $groups_template->group;
     759   
     760    echo apply_filters( 'bp_group_description_editable', $group->description );
     761}
     762
     763function bp_group_description_excerpt( $group = false ) {
     764    global $groups_template;
     765
     766    if ( !$group )
     767        $group =& $groups_template->group;
     768   
     769    echo apply_filters( 'bp_group_description_excerpt', bp_create_excerpt( $group->description, 20 ) );
     770}
     771
     772function bp_group_news( $group = false ) {
     773    global $groups_template;
     774
     775    if ( !$group )
     776        $group =& $groups_template->group;
     777
     778    echo apply_filters( 'bp_group_news', stripslashes($groups_template->group->news) );
     779}
     780
     781function bp_group_news_editable( $group = false ) {
     782    global $groups_template;
     783
     784    if ( !$group )
     785        $group =& $groups_template->group;
     786
     787    echo apply_filters( 'bp_group_news_editable', $group->news );
     788}
     789
     790function bp_group_public_status( $group = false ) {
     791    global $groups_template;
     792
     793    if ( !$group )
     794        $group =& $groups_template->group;
     795
     796    if ( $group->is_public ) {
     797        _e('Public', 'buddypress');
     798    } else {
     799        _e('Private', 'buddypress');
     800    }
     801}
     802    function bp_group_is_public( $group = false ) {
     803        global $groups_template;
     804
     805        if ( !$group )
     806            $group =& $groups_template->group;
     807
     808        return apply_filters( 'bp_group_is_public', $group->is_public );
     809    }
     810
     811
     812function bp_group_date_created( $group = false ) {
     813    global $groups_template;
     814
     815    if ( !$group )
     816        $group =& $groups_template->group;
     817   
     818    echo apply_filters( 'bp_group_date_created', date( get_option( 'date_format' ), $group->date_created ) );
     819}
     820
     821function bp_group_list_admins( $full_list = true, $group = false ) {
     822    global $groups_template;
     823   
     824    if ( !$group )
     825        $group =& $groups_template->group;
     826   
     827    if ( !$admins = &$group->admins )
     828        $admins = $group->get_administrators();
     829
     830    if ( $admins ) {
     831        if ( $full_list ) { ?>
     832            <ul id="group-admins">
     833            <?php for ( $i = 0; $i < count($admins); $i++ ) { ?>
     834                <li>
     835                    <a href="<?php echo $admins[$i]->user->user_url ?>" title="<?php echo $admins[$i]->user->fullname ?>"><?php echo $admins[$i]->user->avatar_thumb ?></a>
     836                    <h5><?php echo $admins[$i]->user->user_link ?></h5>
     837                    <span class="activity"><?php echo $admins[$i]->user_title ?></span>
     838                    <hr />
     839                </li>
     840            <?php } ?>
     841            </ul>
     842        <?php } else { ?>
     843            <?php for ( $i = 0; $i < count($admins); $i++ ) { ?>
     844                <?php echo $admins[$i]->user->user_link ?>
     845            <?php } ?>
     846        <?php } ?>
     847    <?php } else { ?>
     848        <span class="activity"><?php _e( 'No Admins', 'buddypress' ) ?></span>
     849    <?php } ?>
     850   
     851<?php
     852}
     853
     854function bp_group_list_mods( $full_list = true, $group = false ) {
     855    global $groups_template;
     856   
     857    if ( !$group )
     858        $group =& $groups_template->group;
     859   
     860    $group_mods = groups_get_group_mods( $group->id );
     861   
     862    if ( $group_mods ) {
     863        if ( $full_list ) { ?>
     864            <ul id="group-mods" class="mods-list">
     865            <?php for ( $i = 0; $i < count($group_mods); $i++ ) { ?>
     866                <li>
     867                    <a href="<?php echo bp_core_get_userlink( $group_mods[$i]->user_id, false, true ) ?>" title="<?php echo bp_fetch_user_fullname( $group_mods[$i]->user->user_id ) ?>"><?php echo bp_core_get_avatar( $group_mods[$i]->user_id, 1, 50, 50 ) ?></a>
     868                    <h5><?php echo bp_core_get_userlink( $group_mods[$i]->user_id ) ?></h5>
     869                    <span class="activity"><?php _e( 'Group Mod', 'buddypress' ) ?></span>
     870                    <div class="clear"></div>
     871                </li>
     872            <?php } ?>
     873            </ul>
     874        <?php } else { ?>
     875            <?php for ( $i = 0; $i < count($admins); $i++ ) { ?>
     876                <?php echo bp_core_get_userlink( $group_mods[$i]->user_id ) . ' ' ?>
     877            <?php } ?>
     878        <?php } ?>
     879    <?php } else { ?>
     880        <span class="activity"><?php _e( 'No Mods', 'buddypress' ) ?></span>
     881    <?php } ?>
     882   
     883<?php
     884}
     885
     886function bp_group_all_members_permalink( $echo = true, $group = false ) {
     887    global $groups_template, $bp;
     888
     889    if ( !$group )
     890        $group =& $groups_template->group;
     891   
     892    if ( $echo )
     893        echo apply_filters( 'bp_group_all_members_permalink', bp_group_permalink( $group, true ) . '/' . MEMBERS_SLUG );
     894    else
     895        return apply_filters( 'bp_group_all_members_permalink', bp_group_permalink( $group, false ) . '/' . MEMBERS_SLUG );
     896}
     897
     898function bp_group_random_members( $group = false ) {
     899    global $groups_template;
     900
     901    if ( !$group )
     902        $group =& $groups_template->group;
     903
     904    $members = &$group->random_members;
     905?> 
     906    <ul class="horiz-gallery">
     907    <?php for ( $i = 0; $i < count( $members ); $i++ ) { ?>
     908        <li>
     909            <a href="<?php echo $members[$i]->user->user_url ?>"><?php echo $members[$i]->user->avatar_thumb ?></a>
     910            <h5><?php echo $members[$i]->user->user_link ?></h5>
     911        </li>
     912    <?php } ?>
     913    </ul>
     914    <div class="clear"></div>
     915<?php
     916}
     917
     918function bp_group_active_forum_topics( $total_topics = 3, $group = false ) {
     919    global $groups_template, $forum_template;
     920
     921    if ( !$group )
     922        $group =& $groups_template->group;
     923
     924    $forum_id = groups_get_groupmeta( $group->id, 'forum_id' );
     925
     926    if ( $forum_id && $forum_id != '' ) {
     927        if ( function_exists( 'bp_forums_setup' ) ) {
     928            $latest_topics = bp_forums_get_topics( $forum_id, $total_topics, 1 );
     929       
     930            if ( $latest_topics ) { ?>
     931                <ul class="item-list" id="recent-forum-topics"><?php
     932               
     933                $counter = 0;
     934               
     935                foreach( $latest_topics as $topic ) {
     936                    $alt = ( $counter % 2 == 1 ) ? ' class="alt"' : '';
     937                    $forum_template->topic = (object)$topic; ?>
     938                   
     939                    <li<?php echo $alt ?>>
     940                        <div class="avatar">
     941                            <?php bp_the_topic_poster_avatar() ?>
     942                        </div>
     943
     944                        <a href="<?php bp_the_topic_permalink() ?>" title="<?php bp_the_topic_title() ?> - <?php _e( 'Permalink', 'buddypress' ) ?>"><?php bp_the_topic_title() ?></a>
     945                        <span class="small">- <?php bp_the_topic_total_post_count() ?> </span>
     946                        <p><span class="activity"><?php echo sprintf( __( 'updated %s ago', 'buddypress' ), bp_the_topic_time_since_last_post( false ) ) ?></span></p>
     947               
     948                        <div class="latest-post">
     949                            <?php _e( 'Latest by', 'buddypress' ) ?> <?php bp_the_topic_last_poster_name() ?>:
     950                            <?php bp_the_topic_latest_post_excerpt() ?>
     951                        </div>
     952                    </li>
     953                    <?php $counter++ ?>
     954                   
     955                <?php } ?>
     956                </ul>
     957                <?php
     958            } else {
     959            ?>
     960                <div id="message" class="info">
     961                    <p><?php _e( 'There are no active forum topics for this group', 'buddypress' ) ?></p>
     962                </div>
     963            <?php
     964            }
     965        }
     966    }
     967}
     968
     969function bp_group_search_form() {
     970    global $groups_template, $bp;
     971
     972    $action = $bp->loggedin_user->domain . $bp->groups->slug . '/my-groups/search/';
     973    $label = __('Filter Groups', 'buddypress');
     974    $name = 'group-filter-box';
     975?>
     976    <form action="<?php echo $action ?>" id="group-search-form" method="post">
     977        <label for="<?php echo $name ?>" id="<?php echo $name ?>-label"><?php echo $label ?> <img id="ajax-loader" src="<?php echo $bp->groups->image_base ?>/ajax-loader.gif" height="7" alt="<?php _e( 'Loading', 'buddypress' ) ?>" style="display: none;" /></label>
     978        <input type="search" name="<?php echo $name ?>" id="<?php echo $name ?>" value="<?php echo $value ?>"<?php echo $disabled ?> />
     979   
     980        <?php wp_nonce_field( 'group-filter-box', '_wpnonce_group_filter' ) ?>
     981    </form>
     982<?php
     983}
     984
     985function bp_group_show_no_groups_message() {
     986    global $bp;
     987   
     988    if ( !groups_total_groups_for_user( $bp->displayed_user->id ) )
     989        return true;
     990       
     991    return false;
     992}
     993
     994function bp_group_pagination() {
     995    global $groups_template;
     996    echo apply_filters( 'bp_group_pagination', $groups_template->pag_links );
     997}
     998
     999function bp_total_group_count() {
     1000    global $groups_template;
     1001   
     1002    echo apply_filters( 'bp_total_group_count', $groups_template->total_group_count );
     1003}
     1004
     1005function bp_group_total_members( $echo = true, $group = false ) {
     1006    global $groups_template;
     1007
     1008    if ( !$group )
     1009        $group =& $groups_template->group;
     1010
     1011    if ( $echo )
     1012        echo apply_filters( 'groups_template', $group->total_group_count );
     1013    else
     1014        return apply_filters( 'groups_template', $group->total_group_count );
     1015}
     1016
     1017function bp_group_is_photos_enabled( $group = false ) {
     1018    global $groups_template;
     1019
     1020    if ( !$group )
     1021        $group =& $groups_template->group;
     1022
     1023    if ( $group->enable_photos )
     1024        return true;
     1025   
     1026    return false;
     1027}
     1028
     1029function bp_group_show_wire_setting( $group = false ) {
     1030    global $groups_template;
     1031
     1032    if ( !$group )
     1033        $group =& $groups_template->group;
     1034
     1035    if ( $group->enable_wire )
     1036        echo ' checked="checked"';
     1037}
     1038
     1039function bp_group_is_wire_enabled( $group = false ) {
     1040    global $groups_template;
     1041
     1042    if ( !$group )
     1043        $group =& $groups_template->group;
     1044   
     1045    if ( $group->enable_wire )
     1046        return true;
     1047   
     1048    return false;
     1049}
     1050
     1051function bp_group_forum_permalink( $group = false ) {
     1052    global $groups_template;
     1053
     1054    if ( !$group )
     1055        $group =& $groups_template->group;
     1056
     1057    echo bp_group_permalink( $group, false ) . '/forum';
     1058}
     1059
     1060function bp_group_is_forum_enabled( $group = false ) {
     1061    global $groups_template;
     1062
     1063    if ( !$group )
     1064        $group =& $groups_template->group;
     1065
     1066    if ( function_exists( 'bp_forums_is_installed_correctly' ) ) {
     1067        if ( bp_forums_is_installed_correctly() ) {
     1068            if ( $group->enable_forum )
     1069                return true;
     1070           
     1071            return false;
     1072        } else {
     1073            return false;
     1074        }
     1075    }
     1076   
     1077    return false;   
     1078}
     1079
     1080function bp_group_show_forum_setting( $group = false ) {
     1081    global $groups_template;
     1082
     1083    if ( !$group )
     1084        $group =& $groups_template->group;
     1085   
     1086    if ( $group->enable_forum )
     1087        echo ' checked="checked"';
     1088}
     1089
     1090function bp_group_show_photos_setting( $group = false ) {
     1091    global $groups_template;
     1092
     1093    if ( !$group )
     1094        $group =& $groups_template->group;
     1095   
     1096    if ( $group->enable_photos )
     1097        echo ' checked="checked"'; 
     1098}
     1099
     1100function bp_group_show_photos_upload_setting( $permission, $group = false ) {
     1101    global $groups_template;
     1102
     1103    if ( !$group )
     1104        $group =& $groups_template->group;
     1105   
     1106    if ( 'admin' == $permission && $group->photos_admin_only )
     1107        echo ' checked="checked"';
     1108   
     1109    if ( 'member' == $permission && !$group->photos_admin_only )
     1110        echo ' checked="checked"';
     1111}
     1112
     1113function bp_group_show_status_setting( $setting, $group = false ) {
     1114    global $groups_template;
     1115
     1116    if ( !$group )
     1117        $group =& $groups_template->group;
     1118   
     1119    if ( $setting == $group->status )
     1120        echo ' checked="checked"';
     1121}
     1122
     1123function bp_group_admin_memberlist( $admin_list = false, $group = false ) {
     1124    global $groups_template;
     1125   
     1126    if ( !$group )
     1127        $group =& $groups_template->group;
     1128   
     1129    $admins = groups_get_group_admins( $group->id );
     1130?>
     1131    <?php if ( $admins ) { ?>
     1132        <ul id="admins-list" class="item-list<?php if ( $admin_list ) { ?> single-line<?php } ?>">
     1133        <?php foreach ( $admins as $admin ) { ?>
     1134            <?php if ( $admin_list ) { ?>
     1135            <li>
     1136                <?php echo bp_core_get_avatar( $admin->user_id, 1, 30, 30 ) ?>
     1137                <h5><?php echo bp_core_get_userlink( $admin->user_id ) ?></h5>
     1138            </li>
     1139            <?php } else { ?>
     1140            <li>
     1141                <?php echo bp_core_get_avatar( $admin->user_id, 1 ) ?>
     1142                <h5><?php echo bp_core_get_userlink( $admin->user_id ) ?></h5>
     1143                <span class="activity"><?php echo bp_core_get_last_activity( strtotime( $admin->date_modified ), __( 'joined %s ago', 'buddypress') ); ?></span>
     1144               
     1145                <?php if ( function_exists( 'friends_install' ) ) : ?>
     1146                    <div class="action">
     1147                        <?php bp_add_friend_button( $admin->user_id ) ?>
     1148                    </div>
     1149                <?php endif; ?>
     1150            </li>       
     1151            <?php } ?>
     1152        <?php } ?>
     1153        </ul>
     1154    <?php } else { ?>
     1155        <div id="message" class="info">
     1156            <p><?php _e( 'This group has no administrators', 'buddypress' ); ?></p>
     1157        </div>
     1158    <?php }
     1159}
     1160
     1161function bp_group_mod_memberlist( $admin_list = false, $group = false ) {
     1162    global $groups_template, $group_mods;   
     1163
     1164    if ( !$group )
     1165        $group =& $groups_template->group;
     1166   
     1167    $group_mods = groups_get_group_mods( $group->id );
     1168    ?>
     1169        <?php if ( $group_mods ) { ?>
     1170            <ul id="mods-list" class="item-list<?php if ( $admin_list ) { ?> single-line<?php } ?>">
     1171            <?php foreach ( $group_mods as $mod ) { ?>
     1172                <?php if ( $admin_list ) { ?>
     1173                <li>
     1174                    <?php echo bp_core_get_avatar( $mod->user_id, 1, 30, 30 ) ?>
     1175                    <h5><?php echo bp_core_get_userlink( $mod->user_id ) ?>  <span class="small"> &mdash; <a href="<?php bp_group_member_ban_link() ?>"><?php _e( 'Kick &amp; Ban', 'buddypress' ) ?></a> | <a href="<?php bp_group_member_demote_link($mod->user_id) ?>"><?php _e( 'Demote to Member', 'buddypress' ) ?></a></span></h5>
     1176                </li>
     1177                <?php } else { ?>
     1178                <li>
     1179                    <?php echo bp_core_get_avatar( $mod->user_id, 1 ) ?>
     1180                    <h5><?php echo bp_core_get_userlink( $mod->user_id ) ?></h5>
     1181                    <span class="activity"><?php echo bp_core_get_last_activity( strtotime( $mod->date_modified ), __( 'joined %s ago', 'buddypress') ); ?></span>
     1182                   
     1183                    <?php if ( function_exists( 'friends_install' ) ) : ?>
     1184                        <div class="action">
     1185                            <?php bp_add_friend_button( $mod->user_id ) ?>
     1186                        </div>
     1187                    <?php endif; ?>
     1188                </li>       
     1189                <?php } ?>         
     1190            <?php } ?>
     1191            </ul>
     1192        <?php } else { ?>
     1193            <div id="message" class="info">
     1194                <p><?php _e( 'This group has no moderators', 'buddypress' ); ?></p>
     1195            </div>
     1196        <?php }
     1197}
     1198
     1199function bp_group_has_moderators( $group = false ) {
     1200    global $group_mods, $groups_template;
     1201
     1202    if ( !$group )
     1203        $group =& $groups_template->group;
     1204
     1205    return apply_filters( 'bp_group_has_moderators', groups_get_group_mods( $group->id ) );
     1206}
     1207
     1208function bp_group_member_promote_link( $group = false ) {
     1209    global $members_template, $groups_template, $bp;
     1210
     1211    if ( !$group )
     1212        $group =& $groups_template->group;
     1213
     1214    echo apply_filters( 'bp_group_member_promote_link', wp_nonce_url( bp_group_permalink( $group, false ) . '/admin/manage-members/promote/' . $members_template->member->user_id, 'groups_promote_member' ) );
     1215}
     1216
     1217function bp_group_member_demote_link( $user_id = false, $group = false ) {
     1218    global $members_template, $groups_template, $bp;
     1219
     1220    if ( !$group )
     1221        $group =& $groups_template->group;
     1222   
     1223    if ( !$user_id )
     1224        $user_id = $members_template->member->user_id;
     1225   
     1226    echo apply_filters( 'bp_group_member_demote_link', wp_nonce_url( bp_group_permalink( $group, false ) . '/admin/manage-members/demote/' . $user_id, 'groups_demote_member' ) );
     1227}
     1228
     1229function bp_group_member_ban_link( $group = false ) {
     1230    global $members_template, $groups_template, $bp;
     1231
     1232    if ( !$group )
     1233        $group =& $groups_template->group;
     1234   
     1235    echo apply_filters( 'bp_group_member_ban_link', wp_nonce_url( bp_group_permalink( $group, false ) . '/admin/manage-members/ban/' . $members_template->member->user_id, 'groups_ban_member' ) );
     1236}
     1237
     1238function bp_group_member_unban_link( $group = false ) {
     1239    global $members_template, $groups_template, $bp;
     1240
     1241    if ( !$group )
     1242        $group =& $groups_template->group;
     1243   
     1244    echo apply_filters( 'bp_group_member_unban_link', wp_nonce_url( bp_group_permalink( $group, false ) . '/admin/manage-members/unban/' . $members_template->member->user_id, 'groups_unban_member' ) );   
     1245}
     1246
     1247function bp_group_admin_tabs( $group = false ) {
     1248    global $bp, $groups_template;
     1249
     1250    if ( !$group )
     1251        $group =& $groups_template->group;
     1252   
     1253    $current_tab = $bp->action_variables[0];
     1254?>
     1255    <?php if ( $bp->is_item_admin || $bp->is_item_mod ) { ?>
     1256        <li<?php if ( 'edit-details' == $current_tab || empty( $current_tab ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/edit-details"><?php _e('Edit Details', 'buddypress') ?></a></li>
     1257    <?php } ?>
     1258
     1259    <?php if ( $bp->is_item_admin ) { ?>   
     1260        <li<?php if ( 'group-settings' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/group-settings"><?php _e('Group Settings', 'buddypress') ?></a></li>
     1261    <?php } ?>
     1262   
     1263    <?php if ( $bp->is_item_admin ) { ?>   
     1264        <li<?php if ( 'group-avatar' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/group-avatar"><?php _e('Group Avatar', 'buddypress') ?></a></li>
     1265    <?php } ?>
     1266
     1267    <?php if ( $bp->is_item_admin ) { ?>           
     1268        <li<?php if ( 'manage-members' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/manage-members"><?php _e('Manage Members', 'buddypress') ?></a></li>
     1269    <?php } ?>
     1270   
     1271    <?php if ( $bp->is_item_admin && $groups_template->group->status == 'private' ) : ?>
     1272    <li<?php if ( 'membership-requests' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/membership-requests"><?php _e('Membership Requests', 'buddypress') ?></a></li>
     1273    <?php endif; ?>
     1274
     1275    <?php if ( $bp->is_item_admin ) { ?>       
     1276        <li<?php if ( 'delete-group' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/delete-group"><?php _e('Delete Group', 'buddypress') ?></a></li>
     1277    <?php } ?>
     1278   
     1279<?php
     1280    do_action( 'groups_admin_tabs' );
     1281}
     1282
     1283function bp_group_form_action( $page, $group = false ) {
     1284    global $bp, $groups_template;
     1285   
     1286    if ( !$group )
     1287        $group =& $groups_template->group;
     1288   
     1289    echo apply_filters( 'bp_group_form_action', bp_group_permalink( $group, false ) . '/' . $page );
     1290}
     1291
     1292function bp_group_admin_form_action( $page, $group = false ) {
     1293    global $bp, $groups_template;
     1294
     1295    if ( !$group )
     1296        $group =& $groups_template->group;
     1297   
     1298    echo apply_filters( 'bp_group_admin_form_action', bp_group_permalink( $group, false ) . '/admin/' . $page );
     1299}
     1300
     1301function bp_group_has_requested_membership( $group = false ) {
     1302    global $bp, $groups_template;
     1303   
     1304    if ( !$group )
     1305        $group =& $groups_template->group;
     1306   
     1307    if ( groups_check_for_membership_request( $bp->loggedin_user->id, $group->id ) )
     1308        return true;
     1309   
     1310    return false;
     1311}
     1312
     1313function bp_group_is_member( $group = false ) {
     1314    global $bp, $groups_template;
     1315
     1316    if ( !$group )
     1317        $group =& $groups_template->group;
     1318   
     1319    if ( groups_is_user_member( $bp->loggedin_user->id, $group->id ) )
     1320        return true;
     1321   
     1322    return false;
     1323}
     1324
     1325function bp_group_accept_invite_link( $group = false ) {
     1326    global $groups_template, $bp;
     1327
     1328    if ( !$group )
     1329        $group =& $groups_template->group;
     1330   
     1331    echo apply_filters( 'bp_group_accept_invite_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->groups->slug . '/invites/accept/' . $group->id, 'groups_accept_invite' ) ); 
     1332}
     1333
     1334function bp_group_reject_invite_link( $group = false ) {
     1335    global $groups_template, $bp;
     1336   
     1337    if ( !$group )
     1338        $group =& $groups_template->group;
     1339   
     1340    echo apply_filters( 'bp_group_reject_invite_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->groups->slug . '/invites/reject/' . $group->id, 'groups_reject_invite' ) );
     1341}
     1342
     1343function bp_has_friends_to_invite( $group = false ) {
     1344    global $groups_template, $bp;
     1345   
     1346    if ( !function_exists('friends_install') )
     1347        return false;
     1348
     1349    if ( !$group )
     1350        $group =& $groups_template->group;
     1351   
     1352    if ( !friends_check_user_has_friends( $bp->loggedin_user->id ) || !friends_count_invitable_friends( $bp->loggedin_user->id, $group->id ) )
     1353        return false;
     1354   
     1355    return true;
     1356}
     1357
     1358function bp_group_leave_confirm_link( $group = false ) {
     1359    global $groups_template, $bp;
     1360
     1361    if ( !$group )
     1362        $group =& $groups_template->group;
     1363   
     1364    echo apply_filters( 'bp_group_leave_confirm_link', wp_nonce_url( bp_group_permalink( $group, true ) . '/leave-group/yes', 'groups_leave_group' ) );
     1365}
     1366
     1367function bp_group_leave_reject_link( $group = false ) {
     1368    global $groups_template, $bp;
     1369
     1370    if ( !$group )
     1371        $group =& $groups_template->group;
     1372
     1373    echo apply_filters( 'bp_group_leave_reject_link', bp_group_permalink( $group, true ) );
     1374}
     1375
     1376function bp_group_send_invite_form( $group = false ) {
     1377    global $bp, $groups_template, $invites;
     1378   
     1379    if ( !$group )
     1380        $group =& $groups_template->group;
     1381?>
     1382    <div class="left-menu">
     1383        <h4><?php _e( 'Select Friends', 'buddypress' ) ?> <img id="ajax-loader" src="<?php echo $bp->groups->image_base ?>/ajax-loader.gif" height="7" alt="Loading" style="display: none;" /></h4>
     1384        <?php bp_group_list_invite_friends() ?>
     1385        <?php wp_nonce_field( 'groups_invite_uninvite_user', '_wpnonce_invite_uninvite_user' ) ?>
     1386        <input type="hidden" name="group_id" id="group_id" value="<?php echo $group->id ?>" />
     1387    </div>
     1388
     1389    <div class="main-column">
     1390       
     1391        <div id="message" class="info">
     1392            <p><?php _e('Select people to invite from your friends list.', 'buddypress'); ?></p>
     1393        </div>
     1394
     1395        <?php $invites = groups_get_invites_for_group( $bp->loggedin_user->id, $group_obj->id ) ?>
     1396       
     1397        <ul id="friend-list" class="item-list">
     1398            <?php for ( $i = 0; $i < count($invites); $i++ ) {
     1399                if ( !$user = wp_cache_get( 'bp_user_' . $invites[$i], 'bp' ) ) {
     1400                    $user = new BP_Core_User( $invites[$i] );
     1401                    wp_cache_set( 'bp_user_' . $invites[$i], $user, 'bp' );
     1402                }
     1403                ?>
     1404                <li id="uid-<?php echo $user->id ?>">
     1405                    <?php echo $user->avatar_thumb ?>
     1406                    <h4><?php echo $user->user_link ?></h4>
     1407                    <span class="activity"><?php echo $user->last_active ?></span>
     1408                    <div class="action">
     1409                        <a class="remove" href="<?php echo wp_nonce_url( site_url( $bp->groups->slug . '/' . $group->id . '/invites/remove/' . $user->id ), 'groups_invite_uninvite_user' ) ?>" id="uid-<?php echo $user->id ?>"><?php _e( 'Remove Invite', 'buddypress' ) ?></a>
     1410                    </div>
     1411                </li>
     1412            <?php } // end for ?>
     1413        </ul>
     1414       
     1415        <?php wp_nonce_field( 'groups_send_invites', '_wpnonce_send_invites' ) ?>
     1416    </div>
     1417<?php
     1418}
     1419
     1420function bp_group_send_invite_form_action( $group = false ) {
     1421    global $groups_template, $bp;
     1422   
     1423    if ( !$group )
     1424        $group =& $groups_template->group;
     1425   
     1426    echo apply_filters( 'bp_group_send_invite_form_action', bp_group_permalink( $group, true ) . '/send-invites/send' );
     1427}
     1428
     1429function bp_group_join_button( $group = false ) {
     1430    global $bp, $groups_template;
     1431   
     1432    if ( !$group )
     1433        $group =& $groups_template->group;
     1434   
     1435    // If they're not logged in or are banned from the group, no join button.
     1436    if ( !is_user_logged_in() || groups_is_user_banned( $bp->loggedin_user->id, $group->id ) )
     1437        return false;
     1438   
     1439    echo '<div class="group-button ' . $group->status . '" id="groupbutton-' . $group->id . '">';
     1440   
     1441    switch ( $group->status ) {
     1442        case 'public':
     1443            if ( BP_Groups_Member::check_is_member( $bp->loggedin_user->id, $group->id ) )
     1444                echo '<a class="leave-group" href="' . wp_nonce_url( bp_group_permalink( $group, false ) . '/leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';                                 
     1445            else
     1446                echo '<a class="join-group" href="' . wp_nonce_url( bp_group_permalink( $group, false ) . '/join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>';                   
     1447        break;
     1448       
     1449        case 'private':
     1450            if ( BP_Groups_Member::check_is_member( $bp->loggedin_user->id, $group->id ) ) {
     1451                echo '<a class="leave-group" href="' . wp_nonce_url( bp_group_permalink( $group, false ) . '/leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';                                     
     1452            } else {
     1453                if ( !bp_group_has_requested_membership( $group ) )
     1454                    echo '<a class="request-membership" href="' . wp_nonce_url( bp_group_permalink( $group, false ) . '/request-membership', 'groups_request_membership' ) . '">' . __('Request Membership', 'buddypress') . '</a>';       
     1455                else
     1456                    echo '<a class="membership-requested" href="' . bp_group_permalink( $group, false ) . '">' . __( 'Request Sent', 'buddypress' ) . '</a>';               
     1457            }
     1458        break;
     1459    }
     1460   
     1461    echo '</div>';
     1462}
     1463
     1464function bp_group_status_message( $group = false ) {
     1465    global $groups_template;
     1466   
     1467    if ( !$group )
     1468        $group =& $groups_template->group;
     1469   
     1470    if ( 'private' == $group->status ) {
     1471        if ( !bp_group_has_requested_membership() )
     1472            if ( is_user_logged_in() )
     1473                _e( 'This is a private group and you must request group membership in order to join.', 'buddypress' );
     1474            else
     1475                _e( 'This is a private group. To join you must be a registered site member and request group membership.', 'buddypress' );
     1476        else
     1477            _e( 'This is a private group. Your membership request is awaiting approval from the group administrator.', 'buddypress' );         
     1478    } else {
     1479        _e( 'This is a hidden group and only invited members can join.', 'buddypress' );
     1480    }
     1481}
     1482
     1483
     1484/***************************************************************************
    14721485 * Group Members Template Tags
    14731486 **/
     
    14841497    var $pag_num;
    14851498    var $pag_links;
    1486     var $total_member_count;
     1499    var $total_group_count;
    14871500   
    14881501    function bp_groups_group_members_template( $group_id, $num_per_page, $exclude_admins_mods, $exclude_banned ) {
     
    14941507        $members = BP_Groups_Member::get_all_for_group( $group_id, $this->pag_num, $this->pag_page, $exclude_admins_mods, $exclude_banned );
    14951508       
    1496         $this->total_member_count = $members['count'];
     1509        $this->total_group_count = $members['count'];
    14971510        $this->members = $members['members'];
    14981511       
     
    15021515            'base' => add_query_arg( 'mlpage', '%#%' ),
    15031516            'format' => '',
    1504             'total' => ceil( $this->total_member_count / $this->pag_num ),
     1517            'total' => ceil( $this->total_group_count / $this->pag_num ),
    15051518            'current' => $this->pag_page,
    15061519            'prev_text' => '&laquo;',
     
    16321645    global $members_template;
    16331646
    1634     if ( $members_template->total_member_count > $members_template->pag_num )
     1647    if ( $members_template->total_group_count > $members_template->pag_num )
    16351648        return true;
    16361649   
     
    16551668   
    16561669    $from_num = intval( ( $members_template->pag_page - 1 ) * $members_template->pag_num ) + 1;
    1657     $to_num = ( $from_num + 4 > $members_template->total_member_count ) ? $members_template->total_member_count : $from_num + 4;
    1658 
    1659     echo apply_filters( 'bp_group_reject_invite_link', sprintf( __( 'Viewing members %d to %d (%d total members)', 'buddypress' ), $from_num, $to_num, $members_template->total_member_count ) ); 
     1670    $to_num = ( $from_num + 4 > $members_template->total_group_count ) ? $members_template->total_group_count : $from_num + 4;
     1671
     1672    echo apply_filters( 'bp_group_reject_invite_link', sprintf( __( 'Viewing members %d to %d (%d total members)', 'buddypress' ), $from_num, $to_num, $members_template->total_group_count ) ); 
    16601673}
    16611674
     
    16661679}
    16671680
    1668 
    1669 /****
     1681/********************************************************************************
     1682 * Site Groups Template Tags
     1683 **/
     1684
     1685class BP_Groups_Site_Groups_Template {
     1686    var $current_group = -1;
     1687    var $group_count;
     1688    var $groups;
     1689    var $group;
     1690   
     1691    var $in_the_loop;
     1692   
     1693    var $pag_page;
     1694    var $pag_num;
     1695    var $pag_links;
     1696    var $total_group_count;
     1697   
     1698    function bp_groups_site_groups_template( $type, $per_page, $max ) {
     1699        global $bp;
     1700
     1701        $this->pag_page = isset( $_REQUEST['page'] ) ? intval( $_REQUEST['page'] ) : 1;
     1702        $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
     1703               
     1704        if ( isset( $_REQUEST['s'] ) && '' != $_REQUEST['s'] && $type != 'random' ) {
     1705            $this->groups = BP_Groups_Group::search_groups( $_REQUEST['s'], $this->pag_num, $this->pag_page );
     1706        } else if ( isset( $_REQUEST['letter'] ) && '' != $_REQUEST['letter'] ) {
     1707            $this->groups = BP_Groups_Group::get_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page );
     1708        } else {
     1709            switch ( $type ) {
     1710                case 'random':
     1711                    $this->groups = BP_Groups_Group::get_random( $this->pag_num, $this->pag_page );
     1712                    break;
     1713               
     1714                case 'newest':
     1715                    $this->groups = BP_Groups_Group::get_newest( $this->pag_num, $this->pag_page );
     1716                    break;
     1717
     1718                case 'popular':
     1719                    $this->groups = BP_Groups_Group::get_popular( $this->pag_num, $this->pag_page );
     1720                    break; 
     1721               
     1722                case 'active': default:
     1723                    $this->groups = BP_Groups_Group::get_active( $this->pag_num, $this->pag_page );
     1724                    break;                 
     1725            }
     1726        }
     1727       
     1728        if ( !$max )
     1729            $this->total_group_count = (int)$this->groups['total'];
     1730        else
     1731            $this->total_group_count = (int)$max;
     1732
     1733        $this->groups = $this->groups['groups'];
     1734        $this->group_count = count($this->groups);
     1735
     1736        $this->pag_links = paginate_links( array(
     1737            'base' => add_query_arg( 'page', '%#%' ),
     1738            'format' => '',
     1739            'total' => ceil( (int) $this->total_group_count / (int) $this->pag_num ),
     1740            'current' => (int) $this->pag_page,
     1741            'prev_text' => '&laquo;',
     1742            'next_text' => '&raquo;',
     1743            'mid_size' => 1
     1744        ));     
     1745    }
     1746   
     1747    function has_groups() {
     1748        if ( $this->group_count )
     1749            return true;
     1750       
     1751        return false;
     1752    }
     1753   
     1754    function next_group() {
     1755        $this->current_group++;
     1756        $this->group = $this->groups[$this->current_group];
     1757       
     1758        return $this->group;
     1759    }
     1760   
     1761    function rewind_groups() {
     1762        $this->current_group = -1;
     1763        if ( $this->group_count > 0 ) {
     1764            $this->group = $this->groups[0];
     1765        }
     1766    }
     1767   
     1768    function groups() {
     1769        if ( $this->current_group + 1 < $this->group_count ) {
     1770            return true;
     1771        } elseif ( $this->current_group + 1 == $this->group_count ) {
     1772            do_action('loop_end');
     1773            // Do some cleaning up after the loop
     1774            $this->rewind_groups();
     1775        }
     1776
     1777        $this->in_the_loop = false;
     1778        return false;
     1779    }
     1780   
     1781    function the_group() {
     1782        global $group;
     1783
     1784        $this->in_the_loop = true;
     1785        $this->group = $this->next_group();
     1786       
     1787        if ( !$group = wp_cache_get( 'groups_group_nouserdata_' . $this->group->group_id, 'bp' ) ) {
     1788            $group = new BP_Groups_Group( $this->group->group_id, false, false );
     1789            wp_cache_set( 'groups_group_nouserdata_' . $this->group->group_id, $group, 'bp' );
     1790        }
     1791       
     1792        $this->group = $group;
     1793       
     1794        if ( 0 == $this->current_group ) // loop has just started
     1795            do_action('loop_start');
     1796    }
     1797}
     1798
     1799function bp_rewind_site_groups() {
     1800    global $site_groups_template;
     1801   
     1802    $site_groups_template->rewind_groups();
     1803}
     1804
     1805function bp_has_site_groups( $args = '' ) {
     1806    global $site_groups_template;
     1807
     1808    $defaults = array(
     1809        'type' => 'active',
     1810        'per_page' => 10,
     1811        'max' => false
     1812    );
     1813
     1814    $r = wp_parse_args( $args, $defaults );
     1815    extract( $r, EXTR_SKIP );
     1816   
     1817    // type: active ( default ) | random | newest | popular
     1818   
     1819    if ( $max ) {
     1820        if ( $per_page > $max )
     1821            $per_page = $max;
     1822    }
     1823       
     1824    $site_groups_template = new BP_Groups_Site_Groups_Template( $type, $per_page, $max );
     1825
     1826    return $site_groups_template->has_groups();
     1827}
     1828
     1829function bp_site_groups() {
     1830    global $site_groups_template;
     1831   
     1832    return $site_groups_template->groups();
     1833}
     1834
     1835function bp_the_site_group() {
     1836    global $site_groups_template;
     1837   
     1838    return $site_groups_template->the_group();
     1839}
     1840
     1841function bp_site_groups_pagination_count() {
     1842    global $bp, $site_groups_template;
     1843   
     1844    $from_num = intval( ( $site_groups_template->pag_page - 1 ) * $site_groups_template->pag_num ) + 1;
     1845    $to_num = ( $from_num + ( $site_groups_template->pag_num - 1 ) > $site_groups_template->total_group_count ) ? $site_groups_template->total_group_count : $from_num + ( $site_groups_template->pag_num - 1) ;
     1846
     1847    echo sprintf( __( 'Viewing group %d to %d (of %d groups)', 'buddypress' ), $from_num, $to_num, $site_groups_template->total_group_count ); ?> &nbsp;
     1848    <img id="ajax-loader-groups" src="<?php echo $bp->core->image_base ?>/ajax-loader.gif" height="7" alt="<?php _e( "Loading", "buddypress" ) ?>" style="display: none;" /><?php
     1849}
     1850
     1851function bp_site_groups_pagination_links() {
     1852    global $site_groups_template;
     1853    echo $site_groups_template->pag_links;
     1854}
     1855
     1856function bp_the_site_group_avatar() {
     1857    global $site_groups_template;
     1858    echo bp_group_avatar( $site_groups_template->group );
     1859}
     1860
     1861function bp_the_site_group_avatar_thumb() {
     1862    global $site_groups_template;
     1863    echo bp_group_avatar_thumb( $site_groups_template->group );
     1864}
     1865
     1866function bp_the_site_group_avatar_mini() {
     1867    global $site_groups_template;
     1868    echo bp_group_avatar_mini( $site_groups_template->group );
     1869}
     1870
     1871function bp_the_site_group_link() {
     1872    global $site_groups_template;
     1873    echo bp_group_permalink( $site_groups_template->group );
     1874}
     1875
     1876function bp_the_site_group_name() {
     1877    global $site_groups_template;
     1878    echo bp_group_name( true, $site_groups_template->group );
     1879}
     1880
     1881function bp_the_site_group_last_active() {
     1882    global $site_groups_template;
     1883   
     1884    printf( __( 'active %s ago', 'buddypress' ), bp_group_last_active( false, $site_groups_template->group ) );
     1885}
     1886
     1887function bp_the_site_group_join_button() {
     1888    global $site_groups_template;
     1889   
     1890    echo bp_group_join_button( $site_groups_template->group );
     1891}
     1892
     1893function bp_the_site_group_description() {
     1894    global $site_groups_template;
     1895
     1896    echo bp_group_description( $site_groups_template->group ); 
     1897}
     1898
     1899function bp_the_site_group_member_count() {
     1900    global $site_groups_template;
     1901
     1902    if ( 1 == (int) $site_groups_template->group->total_member_count )
     1903        printf( '%d member', (int) $site_groups_template->group->total_member_count );
     1904    else
     1905        printf( '%d members', (int) $site_groups_template->group->total_member_count );     
     1906}
     1907
     1908function bp_the_site_group_type() {
     1909    global $site_groups_template;
     1910   
     1911    echo bp_group_type( $site_groups_template->group );
     1912}
     1913
     1914
     1915function bp_the_site_group_hidden_fields() {
     1916    if ( isset( $_REQUEST['s'] ) ) {
     1917        echo '<input type="hidden" id="search_terms" value="' . attribute_escape( $_REQUEST['s'] ) . '" name="search_terms" />';
     1918    }
     1919   
     1920    if ( isset( $_REQUEST['letter'] ) ) {
     1921        echo '<input type="hidden" id="selected_letter" value="' . attribute_escape( $_REQUEST['letter'] ) . '" name="selected_letter" />';
     1922    }
     1923   
     1924    if ( isset( $_REQUEST['groups_search'] ) ) {
     1925        echo '<input type="hidden" id="search_terms" value="' . attribute_escape( $_REQUEST['groups_search'] ) . '" name="search_terms" />';
     1926    }
     1927}
     1928
     1929function bp_directory_groups_search_form() {
     1930    global $bp; ?>
     1931    <form action="<?php echo $bp->root_domain . '/' . groups_SLUG  . '/search/' ?>" method="post" id="search-groups-form">
     1932        <label><input type="text" name="groups_search" id="groups_search" value="<?php if ( isset( $_GET['s'] ) ) { echo attribute_escape( $_GET['s'] ); } else { _e( 'Search anything...', 'buddypress' ); } ?>"  onfocus="if (this.value == '<?php _e( 'Search anything...', 'buddypress' ) ?>') {this.value = '';}" onblur="if (this.value == '') {this.value = '<?php _e( 'Search anything...', 'buddypress' ) ?>';}" /></label>
     1933        <input type="submit" id="groups_search_submit" name="groups_search_submit" value="<?php _e( 'Search', 'buddypress' ) ?>" />
     1934    </form>
     1935<?php
     1936}
     1937
     1938/************************************************************************************
    16701939 * Membership Requests Template Tags
    16711940 **/
     
    18092078}
    18102079
     2080
     2081
     2082
    18112083?>
  • trunk/bp-groups/bp-groups-widgets.php

    r1244 r1250  
    1010   
    1111    /* Include the javascript needed for activated widgets only */
    12     if ( is_active_widget( 'groups_widget_groups_list' ) )
     12    if ( is_active_widget( 'groups_widget_groups_list' ) ) {
    1313        wp_enqueue_script( 'groups_widget_groups_list-js', WPMU_PLUGIN_URL . '/bp-groups/js/widget-groups.js', array('jquery', 'jquery-livequery-pack') );     
     14        wp_enqueue_style( 'groups_widget_members-css', WPMU_PLUGIN_URL . '/bp-groups/css/widget-groups.css' );     
     15    }
    1416}
    1517add_action( 'plugins_loaded', 'groups_register_widgets' );
  • trunk/bp-groups/js/directory-groups.js

    r1052 r1250  
    1616                '_wpnonce': jQuery("input#_wpnonce-group-filter").val(),
    1717                'letter': letter[1],
    18                 'page': 1,
    19                 'num': 10
     18                'page': 1
    2019            },
    2120            function(response)
    2221            {   
    2322                response = response.substr(0, response.length-1);
    24                 response = response.split('[[SPLIT]]');
    25 
    26                 if ( response[0] != "-1" ) {
    27                     jQuery("#group-dir-list").fadeOut(200,
    28                         function() {
    29                             jQuery('#ajax-loader-groups').toggle();
    30                             jQuery("#group-dir-list").html(response[1]);
    31                             jQuery("#group-dir-list").fadeIn(200);
    32                         }
    33                     );
    34 
    35                 } else {                   
    36                     jQuery("ul#groups-list").fadeOut(200,
    37                         function() {
    38                             jQuery('#ajax-loader-groups').toggle();
    39                             var message = response[1];
    40                             jQuery("#group-dir-list").html(message);
    41                             jQuery("#group-dir-list").fadeIn(200);
    42                         }
    43                     );
    44                 }
     23                jQuery("#group-dir-list").fadeOut(200,
     24                    function() {
     25                        jQuery('#ajax-loader-groups').toggle();
     26                        jQuery("#group-dir-list").html(response);
     27                        jQuery("#group-dir-list").fadeIn(200);
     28                    }
     29                );
    4530            });
    4631       
     
    5641                'cookie': encodeURIComponent(document.cookie),
    5742                '_wpnonce': jQuery("input#_wpnonce-group-filter").val(),
    58                 'groups_search': jQuery("input#groups_search").val(),
    59                 'page': 1,
    60                 'num': 10
     43                's': jQuery("input#groups_search").val(),
     44                'page': 1
    6145            },
    6246            function(response)
    6347            {   
    6448                response = response.substr(0, response.length-1);
    65                 response = response.split('[[SPLIT]]');
    66 
    67                 if ( response[0] != "-1" ) {
    68                    
    69                     jQuery("#group-dir-list").fadeOut(200,
    70                         function() {
    71                             jQuery('#ajax-loader-groups').toggle();
    72                             jQuery("#group-dir-list").html(response[1]);
    73                             jQuery("#group-dir-list").fadeIn(200);
    74                         }
    75                     );
    76 
    77                 } else {
    78                                        
    79                     jQuery("#group-dir-list").fadeOut(200,
    80                         function() {
    81                             jQuery('#ajax-loader-groups').toggle();
    82                             var message = response[1];
    83                             jQuery("#group-dir-list").html(message);
    84                             jQuery("#group-dir-list").fadeIn(200);
    85                         }
    86                     );
    87                    
    88                 }
     49                jQuery("#group-dir-list").fadeOut(200,
     50                    function() {
     51                        jQuery('#ajax-loader-groups').toggle();
     52                        jQuery("#group-dir-list").html(response);
     53                        jQuery("#group-dir-list").fadeIn(200);
     54                    }
     55                );
    8956            });
    9057       
     
    11582                '_wpnonce': jQuery("input#_wpnonce").val(),
    11683                'page': page[1],
    117                 'num': 10,
    11884                '_wpnonce': jQuery("input#_wpnonce-group-filter").val(),
    11985               
    12086                'letter': letter,
    121                 'groups_search': search_terms
     87                's': search_terms
    12288            },
    12389            function(response)
    12490            {   
    12591                response = response.substr(0, response.length-1);
    126                 response = response.split('[[SPLIT]]');
    127 
    128                 if ( response[0] != "-1" ) {
    129                    
    130                     jQuery("#group-dir-list").fadeOut(200,
    131                         function() {
    132                             jQuery('#ajax-loader-groups').toggle();
    133                             jQuery("#group-dir-list").html(response[1]);
    134                             jQuery("#group-dir-list").fadeIn(200);
    135                         }
    136                     );
    137 
    138                 } else {
    139                                        
    140                     jQuery("#group-dir-list").fadeOut(200,
    141                         function() {
    142                             jQuery('#ajax-loader-groups').toggle();
    143                             var message = response[1];
    144                             jQuery("#group-dir-list").html(message);
    145                             jQuery("#group-dir-list").fadeIn(200);
    146                         }
    147                     );
    148                    
    149                 }           
     92                jQuery("#group-dir-list").fadeOut(200,
     93                    function() {
     94                        jQuery('#ajax-loader-groups').toggle();
     95                        jQuery("#group-dir-list").html(response);
     96                        jQuery("#group-dir-list").fadeIn(200);
     97                    }
     98                );     
    15099            });
    151100           
  • trunk/bp-messages.php

    r1227 r1250  
    117117    $bp->version_numbers->messages = BP_MESSAGES_VERSION;
    118118}
    119 add_action( 'wp', 'messages_setup_globals', 1 );   
     119add_action( 'plugins_loaded', 'messages_setup_globals', 5 );   
    120120add_action( 'admin_menu', 'messages_setup_globals', 1 );
    121121
  • trunk/bp-wire.php

    r1225 r1250  
    4242    $bp->version_numbers->wire = BP_WIRE_VERSION;
    4343}
    44 add_action( 'wp', 'bp_wire_setup_globals', 1 );
     44add_action( 'plugins_loaded', 'bp_wire_setup_globals', 5 );
    4545add_action( 'admin_menu', 'bp_wire_setup_globals', 1 );
    4646
  • trunk/bp-xprofile.php

    r1245 r1250  
    169169        $bp->profile->table_name_wire = $wpdb->base_prefix . 'bp_xprofile_wire';
    170170}
    171 add_action( 'wp', 'xprofile_setup_globals', 1 );   
     171add_action( 'plugins_loaded', 'xprofile_setup_globals', 5 );   
    172172add_action( 'admin_menu', 'xprofile_setup_globals', 1 );
    173173
     
    975975    global $bp;
    976976    wp_cache_delete( 'xprofile_fields_' . $group_id . '_' . $bp->loggedin_user->id, 'bp' );
     977    wp_cache_delete( 'bp_user_fullname_' . $bp->loggedin_user->id, 'bp' );
    977978    wp_cache_delete( 'online_users', 'bp' );
    978979    wp_cache_delete( 'newest_users', 'bp' );
Note: See TracChangeset for help on using the changeset viewer.