Skip to:
Content

BuddyPress.org

Changeset 2919


Ignore:
Timestamp:
04/13/2010 04:01:07 PM (15 years ago)
Author:
apeatling
Message:

Replacing function_exists() checks with bp_is_active() checks.

Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-activity/bp-activity-classes.php

    r2822 r2919  
    132132
    133133        /* Get the fullnames of users so we don't have to query in the loop */
    134         if ( function_exists( 'xprofile_install' ) && $activities ) {
     134        if ( bp_is_active( 'xprofile' ) && $activities ) {
    135135            foreach ( (array)$activities as $activity ) {
    136136                if ( (int)$activity->user_id )
     
    354354        if ( !$comments = wp_cache_get( 'bp_activity_comments_' . $activity_id ) ) {
    355355            /* Select the user's fullname with the query so we don't have to fetch it for each comment */
    356             if ( function_exists( 'xprofile_install' ) ) {
     356            if ( bp_is_active( 'xprofile' ) ) {
    357357                $fullname_select = ", pd.value as user_fullname";
    358358                $fullname_from = ", {$bp->profile->table_name_data} pd ";
  • trunk/bp-activity/bp-activity-templatetags.php

    r2910 r2919  
    494494        global $activities_template, $bp;
    495495
    496         /* Strip any legacy time since placeholders -- TODO: Remove this in 1.3 */
    497         $content = str_replace( '<span class="time-since">%s</span>', '', $content );
     496        $meta = '<span class="activity-actions">';
    498497
    499498        /* Insert the time since. */
    500         $content .= ' ' . apply_filters( 'bp_activity_time_since', '<span class="time-since">' . sprintf( __( '&nbsp; %s ago', 'buddypress' ), bp_core_time_since( $activities_template->activity->date_recorded ) ) . '</span>', &$activities_template->activity );
     499        $meta .= apply_filters( 'bp_activity_time_since', '<span class="time-since">' . sprintf( __( '&nbsp; %s ago', 'buddypress' ), bp_core_time_since( $activities_template->activity->date_recorded ) ) . '</span>', &$activities_template->activity );
    501500
    502501        /* Insert the permalink */
    503         $content .= apply_filters( 'bp_activity_permalink', ' &middot; <a href="' . bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ) . '" class="view" title="' . __( 'View Thread / Permalink', 'buddypress' ) . '">' . __( 'View', 'buddypress' ) . '</a>', &$activities_template->activity );
     502        $meta .= apply_filters( 'bp_activity_permalink', ' &middot; <a href="' . bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ) . '" class="view" title="' . __( 'View Thread / Permalink', 'buddypress' ) . '">' . __( 'View', 'buddypress' ) . '</a>', &$activities_template->activity );
    504503
    505504        /* Add the delete link if the user has permission on this item */
    506505        if ( ( is_user_logged_in() && $activities_template->activity->user_id == $bp->loggedin_user->id ) || $bp->is_item_admin || $bp->loggedin_user->is_site_admin )
    507              $content .= apply_filters( 'bp_activity_delete_link', ' &middot; ' . bp_get_activity_delete_link(), &$activities_template->activity );
    508 
    509         return apply_filters( 'bp_insert_activity_meta', $content );
     506             $meta .= apply_filters( 'bp_activity_delete_link', ' &middot; ' . bp_get_activity_delete_link(), &$activities_template->activity );
     507
     508        $meta .= '</span>';
     509
     510        return apply_filters( 'bp_insert_activity_meta', $content . ' ' . $meta, $content, $meta );
    510511    }
    511512
  • trunk/bp-core.php

    r2864 r2919  
    298298     * built in WordPress profile information
    299299     */
    300     if ( !function_exists( 'xprofile_install' ) ) {
     300    if ( !bp_is_active( 'xprofile' ) ) {
    301301        /* Fallback values if xprofile is disabled */
    302302        $bp->core->profile->slug = 'profile';
     
    10771077
    10781078    if ( !$fullname = wp_cache_get( 'bp_user_fullname_' . $user_id, 'bp' ) ) {
    1079         if ( function_exists('xprofile_install') ) {
     1079        if ( bp_is_active( 'xprofile' ) ) {
    10801080            $fullname = xprofile_get_field_data( 1, $user_id );
    10811081
     
    12671267    @setcookie( 'bp-message-type', false, time() - 1000, COOKIEPATH );
    12681268}
    1269 add_action( 'wp', 'bp_core_setup_message' );
     1269add_action( 'bp_init', 'bp_core_setup_message' );
    12701270
    12711271/**
  • trunk/bp-core/admin/bp-core-admin.php

    r2863 r2919  
    3333        foreach ( (array)$_POST['bp-admin'] as $key => $value ) {
    3434
    35             if ( function_exists( 'xprofile_install' ) ) {
     35            if ( bp_is_active( 'xprofile' ) ) {
    3636                if ( 'bp-xprofile-base-group-name' == $key ) {
    3737                    $wpdb->query( $wpdb->prepare( "UPDATE {$bp->profile->table_name_groups} SET name = %s WHERE id = 1", $value ) );
     
    6262            <table class="form-table">
    6363            <tbody>
    64                 <?php if ( function_exists( 'xprofile_install' ) ) :?>
     64                <?php if ( is_active( 'xprofile' ) ) :?>
    6565                <tr>
    6666                    <th scope="row"><?php _e( 'Base profile group name', 'buddypress' ) ?>:</th>
     
    113113                </tr>
    114114                <?php endif; ?>
    115                 <?php if ( function_exists( 'bp_activity_install') ) : ?>
     115                <?php if ( bp_is_active( 'activity' ) ) : ?>
    116116                <tr>
    117117                    <th scope="row"><?php _e( 'Disable activity stream commenting on blog and forum posts?', 'buddypress' ) ?>:</th>
  • trunk/bp-core/bp-core-adminbar.php

    r2863 r2919  
    224224            <li><a href="<?php echo $bp->root_domain . '/' . $bp->members->slug . '/?random-member' ?>"><?php _e( 'Random Member', 'buddypress' ) ?></a></li>
    225225
    226             <?php if ( function_exists('groups_install') ) : ?>
     226            <?php if ( bp_is_active( 'groups' ) ) : ?>
    227227            <li class="alt"><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug . '/?random-group' ?>"><?php _e( 'Random Group', 'buddypress' ) ?></a></li>
    228228            <?php endif; ?>
    229229
    230             <?php if ( function_exists('bp_blogs_install') && bp_core_is_multisite() ) : ?>
     230            <?php if ( bp_is_active( 'blogs' ) && bp_core_is_multisite() ) : ?>
    231231            <li><a href="<?php echo $bp->root_domain . '/' . $bp->blogs->slug . '/?random-blog' ?>"><?php _e( 'Random Blog', 'buddypress' ) ?></a></li>
    232232
  • trunk/bp-core/bp-core-catchuri.php

    r2865 r2919  
    256256    global $bp;
    257257
    258     if ( !function_exists('xprofile_install') )
     258    if ( !bp_is_active( 'xprofile' ) )
    259259        bp_core_load_template( apply_filters( 'bp_core_template_display_profile', 'members/single/home' ) );
    260260}
  • trunk/bp-core/bp-core-classes.php

    r2695 r2919  
    5656     */
    5757    function populate() {
    58         if ( function_exists( 'xprofile_install' ) )
     58        if ( bp_is_active( 'xprofile' ) )
    5959            $this->profile_data = $this->get_profile_data();
    6060
     
    8686        global $bp;
    8787
    88         if ( function_exists('friends_install') )
     88        if ( bp_is_active( 'friends' ) )
    8989            $this->total_friends = BP_Friends_Friendship::total_friend_count( $this->id );
    9090
    91         if ( function_exists('groups_install') ) {
     91        if ( bp_is_active( 'groups' ) ) {
    9292            $this->total_groups = BP_Groups_Member::total_group_count( $this->id );
    9393
     
    125125        $sql['from'] = "FROM " . CUSTOM_USER_TABLE . " u LEFT JOIN " . CUSTOM_USER_META_TABLE . " um ON um.user_id = u.ID";
    126126
    127         if ( $search_terms && function_exists( 'xprofile_install' ) || 'alphabetical' == $type )
     127        if ( $search_terms && bp_is_active( 'xprofile' ) || 'alphabetical' == $type )
    128128            $sql['join_profiledata'] = "LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id";
    129129
     
    142142            $sql['where_alpha'] = "AND pd.field_id = 1";
    143143
    144         if ( $user_id && function_exists( 'friends_install' ) ) {
     144        if ( $user_id && bp_is_active( 'friends' ) ) {
    145145            $friend_ids = friends_get_friend_user_ids( $user_id );
    146146            $friend_ids = $wpdb->escape( implode( ',', (array)$friend_ids ) );
     
    154154        }
    155155
    156         if ( $search_terms && function_exists( 'xprofile_install' ) ) {
     156        if ( $search_terms && bp_is_active( 'xprofile' ) ) {
    157157            $search_terms = like_escape( $wpdb->escape( $search_terms ) );
    158158            $sql['where_searchterms'] = "AND pd.value LIKE '%%$search_terms%%'";
     
    320320
    321321        /* Fetch the user's full name */
    322         if ( function_exists( 'xprofile_install' ) && 'alphabetical' != $type ) {
     322        if ( bp_is_active( 'xprofile' ) && 'alphabetical' != $type ) {
    323323            $names = $wpdb->get_results( $wpdb->prepare( "SELECT pd.user_id as id, pd.value as fullname FROM {$bp->profile->table_name_fields} pf, {$bp->profile->table_name_data} pd WHERE pf.id = pd.field_id AND pf.name = %s AND pd.user_id IN ( {$user_ids} )", BP_XPROFILE_FULLNAME_FIELD_NAME ) );
    324324            for ( $i = 0; $i < count( $paged_users ); $i++ ) {
     
    342342
    343343        /* Fetch whether or not the user is a friend */
    344         if ( function_exists( 'friends_install' ) ) {
     344        if ( bp_is_active( 'friends' ) ) {
    345345            $friend_status = $wpdb->get_results( $wpdb->prepare( "SELECT initiator_user_id, friend_user_id, is_confirmed FROM {$bp->friends->table_name} WHERE (initiator_user_id = %d AND friend_user_id IN ( {$user_ids} ) ) OR (initiator_user_id IN ( {$user_ids} ) AND friend_user_id = %d )", $bp->loggedin_user->id, $bp->loggedin_user->id ) );
    346346            for ( $i = 0; $i < count( $paged_users ); $i++ ) {
     
    381381            }
    382382        }
     383
     384        var_dump( $paged_users );
    383385
    384386        return $paged_users;
  • trunk/bp-core/bp-core-templatetags.php

    r2907 r2919  
    248248    function bp_get_member_name() {
    249249        global $members_template;
     250
     251        var_dump( $members_template );
    250252
    251253        if ( empty($members_template->member->fullname) )
     
    688690}
    689691
    690 function bp_user_firstname() {
    691     echo bp_get_user_firstname();
     692function bp_user_firstname( $name = false ) {
     693    echo bp_get_user_firstname( $name );
    692694}
    693695    function bp_get_user_firstname( $name = false ) {
     
    989991function bp_search_form_type_select() {
    990992    global $bp;
    991    
     993
    992994    // Eventually this won't be needed and a page will be built to integrate all search results.
    993995    $selection_box = '<select name="search-which" id="search-which" style="width: auto">';
  • trunk/bp-forums.php

    r2863 r2919  
    356356
    357357    /* Fetch fullname for the topic's last poster */
    358     if ( function_exists( 'xprofile_install' ) ) {
     358    if ( bp_is_active( 'xprofile' ) ) {
    359359        $poster_names = $wpdb->get_results( $wpdb->prepare( "SELECT t.topic_id, pd.value FROM {$bp->profile->table_name_data} pd, {$bbdb->topics} t WHERE pd.user_id = t.topic_last_poster AND pd.field_id = 1 AND t.topic_id IN ( {$topic_ids} )" ) );
    360360        for ( $i = 0; $i < count( $topics ); $i++ ) {
     
    474474
    475475    /* Fetch fullname for each poster. */
    476     if ( function_exists( 'xprofile_install' ) ) {
     476    if ( bp_is_active( 'xprofile' ) ) {
    477477        $poster_names = $wpdb->get_results( $wpdb->prepare( "SELECT pd.user_id, pd.value FROM {$bp->profile->table_name_data} pd WHERE pd.user_id IN ( {$user_ids} )" ) );
    478478        for ( $i = 0; $i < count( $posts ); $i++ ) {
  • trunk/bp-friends/bp-friends-classes.php

    r2362 r2919  
    157157
    158158        // filter the user_ids based on the search criteria.
    159         if ( function_exists('xprofile_install') ) {
     159        if ( bp_is_active( 'xprofile' ) ) {
    160160            $sql = "SELECT DISTINCT user_id FROM {$bp->profile->table_name_data} WHERE user_id IN ($fids) AND value LIKE '$filter%%' {$pag_sql}";
    161161            $total_sql = "SELECT COUNT(DISTINCT user_id) FROM {$bp->profile->table_name_data} WHERE user_id IN ($fids) AND value LIKE '$filter%%'";
     
    223223
    224224        // filter the user_ids based on the search criteria.
    225         if ( function_exists('xprofile_install') ) {
     225        if ( bp_is_active( 'xprofile' ) ) {
    226226            $sql = $wpdb->prepare( "SELECT DISTINCT d.user_id as id FROM {$bp->profile->table_name_data} d, $users_table u WHERE d.user_id = u.id AND d.value LIKE '$filter%%' ORDER BY d.value DESC $pag_sql" );
    227227        } else {
     
    246246
    247247        // filter the user_ids based on the search criteria.
    248         if ( function_exists('xprofile_install') ) {
     248        if ( bp_is_active( 'xprofile' ) ) {
    249249            $sql = $wpdb->prepare( "SELECT COUNT(DISTINCT d.user_id) FROM {$bp->profile->table_name_data} d, $users_table u WHERE d.user_id = u.id AND d.value LIKE '$filter%%'" );
    250250        } else {
     
    263263        global $wpdb, $bp;
    264264
    265         if ( !function_exists( 'xprofile_install') )
     265        if ( !bp_is_active( 'xprofile' ) )
    266266            return false;
    267267
  • trunk/bp-groups.php

    r2866 r2919  
    16581658        'type' => 'active', // active, newest, alphabetical, random, popular, most-forum-topics or most-forum-posts
    16591659        'user_id' => false, // Pass a user_id to limit to only groups that this user is a member of
     1660        'include' => false, // Only include these specific groups (group_ids)
    16601661        'search_terms' => false, // Limit to groups that match these search terms
    16611662
     
    16681669    extract( $params, EXTR_SKIP );
    16691670
    1670     switch ( $type ) {
    1671         case 'active': default:
    1672             $groups = BP_Groups_Group::get_active( $per_page, $page, $user_id, $search_terms, $populate_extras );
    1673             break;
    1674         case 'newest':
    1675             $groups = BP_Groups_Group::get_newest( $per_page, $page, $user_id, $search_terms, $populate_extras );
    1676             break;
    1677         case 'popular':
    1678             $groups = BP_Groups_Group::get_popular( $per_page, $page, $user_id, $search_terms, $populate_extras );
    1679             break;
    1680         case 'alphabetical':
    1681             $groups = BP_Groups_Group::get_alphabetically( $per_page, $page, $user_id, $search_terms, $populate_extras );
    1682             break;
    1683         case 'random':
    1684             $groups = BP_Groups_Group::get_random( $per_page, $page, $user_id, $search_terms, $populate_extras );
    1685             break;
    1686         case 'most-forum-topics':
    1687             $groups = BP_Groups_Group::get_by_most_forum_topics( $per_page, $page, $user_id, $search_terms, $populate_extras );
    1688             break;
    1689         case 'most-forum-posts':
    1690             $groups = BP_Groups_Group::get_by_most_forum_posts( $per_page, $page, $user_id, $search_terms, $populate_extras );
    1691             break;
    1692     }
     1671    $groups = BP_Groups_Group::get( $type, $per_page, $page, $user_id, $search_terms, $include, $populate_extras );
    16931672
    16941673    return apply_filters( 'groups_get_groups', $groups, &$params );
  • trunk/bp-groups/bp-groups-classes.php

    r2770 r2919  
    256256    }
    257257
    258     /* TODO: Merge all these get_() functions into one. */
    259 
    260     function get_newest( $limit = null, $page = null, $user_id = false, $search_terms = false, $populate_extras = true ) {
    261         global $wpdb, $bp;
    262 
    263         if ( $limit && $page )
    264             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     258    function get( $type = 'newest', $per_page = null, $page = null, $user_id = false, $search_terms = false, $include = false, $populate_extras = true ) {
     259        global $wpdb, $bp;
     260
     261        $sql = array();
     262
     263        $sql['select'] = "SELECT g.*, gm1.meta_value AS total_member_count, gm2.meta_value AS last_activity";
     264        $sql['from']   = " FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2,";
     265
     266        if ( !empty( $user_id ) )
     267            $sql['members_from'] = " {$bp->groups->table_name_members} m,";
     268
     269        $sql['group_from'] = " {$bp->groups->table_name} g WHERE";
     270
     271        if ( !empty( $user_id ) )
     272            $sql['user_where'] = " g.id = m.group_id AND";
     273
     274        $sql['where'] = " g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'";
    265275
    266276        if ( !is_user_logged_in() || ( !is_site_admin() && ( $user_id != $bp->loggedin_user->id ) ) )
    267             $hidden_sql = "AND g.status != 'hidden'";
     277            $sql['hidden'] = " AND g.status != 'hidden'";
    268278
    269279        if ( $search_terms ) {
    270280            $search_terms = like_escape( $wpdb->escape( $search_terms ) );
    271             $search_sql = " AND ( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )";
    272         }
    273 
    274         if ( $user_id ) {
    275             $user_id = $wpdb->escape( $user_id );
    276             $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY g.date_created DESC {$pag_sql}" );
    277             $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0" );
    278         } else {
    279             $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} ORDER BY g.date_created DESC {$pag_sql}" );
    280             $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm INNER JOIN {$bp->groups->table_name} g ON gm.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql} {$search_sql}" );
    281         }
    282 
     281            $sql['search'] = " AND ( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )";
     282        }
     283
     284        if ( !empty( $user_id ) )
     285            $sql['user'] = $wpdb->prepare( " AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id );
     286
     287        if ( !empty( $include ) ) {
     288            $include = $wpdb->escape( $include );
     289            $sql['include'] = " AND g.id IN ({$include})";
     290        }
     291
     292        switch ( $type ) {
     293            case 'newest': default:
     294                $sql['order'] = " ORDER BY g.date_created DESC";
     295                break;
     296            case 'active':
     297                $sql[] = "ORDER BY last_activity DESC";
     298                break;
     299            case 'popular':
     300                $sql[] = "ORDER BY CONVERT(gm1.meta_value, SIGNED) DESC";
     301                break;
     302            case 'alphabetical':
     303                $sql[] = "ORDER BY g.name ASC";
     304                break;
     305            case 'random':
     306                $sql[] = "ORDER BY rand()";
     307                break;
     308        }
     309
     310        if ( $per_page && $page )
     311            $sql['pagination'] = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $per_page), intval( $per_page ) );
     312
     313        /* Get paginated results */
     314        $paged_groups = $wpdb->get_results( join( ' ', (array)$sql ) );
     315
     316        $total_sql['select'] = "SELECT COUNT(g.id) FROM {$bp->groups->table_name} g";
     317
     318        if ( !empty( $user_id ) )
     319            $total_sql['select'] .= ", {$bp->groups->table_name_members} m";
     320
     321        if ( !empty( $sql['hidden'] ) )
     322            $total_sql['where'][] = "g.status != 'hidden'";
     323
     324        if ( !empty( $sql['search'] ) )
     325            $total_sql['where'][] = "( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )";
     326
     327        if ( !empty( $user_id ) )
     328            $total_sql['where'][] = "m.group_id = g.id AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0";
     329
     330        $t_sql = $total_sql['select'];
     331
     332        if ( !empty( $total_sql['where'] ) )
     333            $t_sql .= " WHERE " . join( ' AND ', (array)$total_sql['where'] );
     334
     335        /* Get total group results */
     336        $total_groups = $wpdb->get_var( join( ' ', (array)$t_sql ) );
     337
     338        /* Populate some extra information instead of querying each time in the loop */
    283339        if ( !empty( $populate_extras ) ) {
    284340            foreach ( (array)$paged_groups as $group ) $group_ids[] = $group->id;
    285341            $group_ids = $wpdb->escape( join( ',', (array)$group_ids ) );
    286             $paged_groups = BP_Groups_Group::get_group_extras( &$paged_groups, $group_ids, 'newest' );
    287         }
    288 
    289         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    290     }
    291 
    292     function get_active( $limit = null, $page = null, $user_id = false, $search_terms = false, $populate_extras = true ) {
    293         global $wpdb, $bp;
    294 
    295         if ( $limit && $page )
    296             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    297 
    298         if ( !is_user_logged_in() || ( !is_site_admin() && ( $user_id != $bp->loggedin_user->id ) ) )
    299             $hidden_sql = "AND g.status != 'hidden'";
    300 
    301         if ( $search_terms ) {
    302             $search_terms = like_escape( $wpdb->escape( $search_terms ) );
    303             $search_sql = " AND ( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )";
    304         }
    305 
    306         if ( $user_id ) {
    307             $user_id = $wpdb->escape( $user_id );
    308             $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY last_activity DESC {$pag_sql}" );
    309             $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0" );
    310         } else {
    311             $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} ORDER BY last_activity DESC {$pag_sql}" );
    312             $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm INNER JOIN {$bp->groups->table_name} g ON gm.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql} {$search_sql}" );
    313         }
    314 
    315         if ( !empty( $populate_extras ) ) {
    316             foreach ( (array)$paged_groups as $group ) $group_ids[] = $group->id;
    317             $group_ids = $wpdb->escape( join( ',', (array)$group_ids ) );
    318             $paged_groups = BP_Groups_Group::get_group_extras( &$paged_groups, $group_ids, 'newest' );
    319         }
    320 
    321         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    322     }
    323 
    324     function get_popular( $limit = null, $page = null, $user_id = false, $search_terms = false, $populate_extras = true ) {
    325         global $wpdb, $bp;
    326 
    327         if ( $limit && $page ) {
    328             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    329         }
    330 
    331         if ( !is_user_logged_in() || ( !is_site_admin() && ( $user_id != $bp->loggedin_user->id ) ) )
    332             $hidden_sql = "AND g.status != 'hidden'";
    333 
    334         if ( $search_terms ) {
    335             $search_terms = like_escape( $wpdb->escape( $search_terms ) );
    336             $search_sql = " AND ( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )";
    337         }
    338 
    339         if ( $user_id ) {
    340             $user_id = $wpdb->escape( $user_id );
    341             $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY CONVERT(gm1.meta_value, SIGNED) DESC {$pag_sql}" );
    342             $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0" );
    343         } else {
    344             $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} ORDER BY CONVERT(gm1.meta_value, SIGNED) DESC {$pag_sql}" );
    345             $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql}" );
    346         }
    347 
    348         if ( !empty( $populate_extras ) ) {
    349             foreach ( (array)$paged_groups as $group ) $group_ids[] = $group->id;
    350             $group_ids = $wpdb->escape( join( ',', (array)$group_ids ) );
    351             $paged_groups = BP_Groups_Group::get_group_extras( &$paged_groups, $group_ids, 'newest' );
    352         }
    353 
    354         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    355     }
    356 
    357     function get_alphabetically( $limit = null, $page = null, $user_id = false, $search_terms = false, $populate_extras = true ) {
    358         global $wpdb, $bp;
    359 
    360         if ( $limit && $page )
    361             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    362 
    363         if ( !is_user_logged_in() || ( !is_site_admin() && ( $user_id != $bp->loggedin_user->id ) ) )
    364             $hidden_sql = " AND g.status != 'hidden'";
    365 
    366         if ( $search_terms ) {
    367             $search_terms = like_escape( $wpdb->escape( $search_terms ) );
    368             $search_sql = " AND ( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )";
    369         }
    370 
    371         if ( $user_id ) {
    372             $user_id = $wpdb->escape( $user_id );
    373             $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY g.name ASC {$pag_sql}" );
    374             $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id WHERE gm.meta_key = 'last_activity' {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0" );
    375         } else {
    376             $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} ORDER BY g.name ASC {$pag_sql}" );
    377             $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql}" );
    378         }
    379 
    380         if ( !empty( $populate_extras ) ) {
    381             foreach ( (array)$paged_groups as $group ) $group_ids[] = $group->id;
    382             $group_ids = $wpdb->escape( join( ',', (array)$group_ids ) );
    383             $paged_groups = BP_Groups_Group::get_group_extras( &$paged_groups, $group_ids, 'newest' );
    384         }
     342            $paged_groups = BP_Groups_Group::get_group_extras( &$paged_groups, $group_ids, $type );
     343        }
     344
     345        unset( $sql, $total_sql );
    385346
    386347        return array( 'groups' => $paged_groups, 'total' => $total_groups );
     
    459420    }
    460421
    461     function get_all( $limit = null, $page = null, $only_public = true, $sort_by = false, $order = false ) {
    462         global $wpdb, $bp;
    463 
    464         // Default sql WHERE conditions are blank. TODO: generic handler function.
    465         $where_sql = null;
    466         $where_conditions = array();
    467 
    468         // Limit results to public status
    469         if ( $only_public )
    470             $where_conditions[] = $wpdb->prepare( "g.status = 'public'" );
    471 
    472         if ( !is_site_admin() )
    473             $where_conditions[] = $wpdb->prepare( "g.status != 'hidden'");
    474 
    475         // Build where sql statement if necessary
    476         if ( !empty( $where_conditions ) )
    477             $where_sql = 'WHERE ' . join( ' AND ', $where_conditions );
    478 
    479         if ( $limit && $page )
    480             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    481 
    482         if ( $sort_by && $order ) {
    483             $sort_by = $wpdb->escape( $sort_by );
    484             $order = $wpdb->escape( $order );
    485             $order_sql = "ORDER BY g.$sort_by $order";
    486 
    487             switch ( $sort_by ) {
    488                 default:
    489                     $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g {$where_sql} {$order_sql} {$pag_sql}" );
    490                     break;
    491                 case 'members':
    492                     $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm WHERE g.id = gm.group_id AND gm.meta_key = 'total_member_count' {$hidden_sql} {$public_sql} ORDER BY CONVERT(gm.meta_value, SIGNED) {$order} {$pag_sql}" );
    493                     break;
    494                 case 'last_active':
    495                     $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm WHERE g.id = gm.group_id AND gm.meta_key = 'last_activity' {$hidden_sql} {$public_sql} ORDER BY CONVERT(gm.meta_value, SIGNED) {$order} {$pag_sql}" );
    496                     break;
    497             }
    498         } else {
    499             $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name} g {$where_sql} {$order_sql} {$pag_sql}" );
    500         }
    501 
    502         return $wpdb->get_results($sql);
    503     }
    504 
    505422    function get_by_letter( $letter, $limit = null, $page = null, $populate_extras = true ) {
    506423        global $wpdb, $bp;
     
    520437
    521438        $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND g.name LIKE '$letter%%' {$hidden_sql} {$search_sql} ORDER BY g.name ASC {$pag_sql}"  ) );
    522 
    523         if ( !empty( $populate_extras ) ) {
    524             foreach ( (array)$paged_groups as $group ) $group_ids[] = $group->id;
    525             $group_ids = $wpdb->escape( join( ',', (array)$group_ids ) );
    526             $paged_groups = BP_Groups_Group::get_group_extras( &$paged_groups, $group_ids, 'newest' );
    527         }
    528 
    529         return array( 'groups' => $paged_groups, 'total' => $total_groups );
    530     }
    531 
    532     function get_random( $limit = null, $page = null, $user_id = false, $search_terms = false, $populate_extras = true ) {
    533         global $wpdb, $bp;
    534 
    535         if ( $limit && $page )
    536             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    537 
    538         if ( !is_user_logged_in() || ( !is_site_admin() && ( $user_id != $bp->loggedin_user->id ) ) )
    539             $hidden_sql = "AND g.status != 'hidden'";
    540 
    541         if ( $search_terms ) {
    542             $search_terms = like_escape( $wpdb->escape( $search_terms ) );
    543             $search_sql = " AND ( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )";
    544         }
    545 
    546         if ( $user_id ) {
    547             $user_id = $wpdb->escape( $user_id );
    548             $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY rand() {$pag_sql}" );
    549             $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0" );
    550         } else {
    551             $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} ORDER BY rand() {$pag_sql}" );
    552             $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm INNER JOIN {$bp->groups->table_name} g ON gm.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql} {$search_sql}" );
    553         }
    554439
    555440        if ( !empty( $populate_extras ) ) {
     
    1013898        $user_ids = $wpdb->escape( join( ',', (array)$user_ids ) );
    1014899
    1015         if ( function_exists( 'friends_install' ) ) {
     900        if ( bp_is_active( 'friends' ) ) {
    1016901            $friend_status = $wpdb->get_results( $wpdb->prepare( "SELECT initiator_user_id, friend_user_id, is_confirmed FROM {$bp->friends->table_name} WHERE (initiator_user_id = %d AND friend_user_id IN ( {$user_ids} ) ) OR (initiator_user_id IN ( {$user_ids} ) AND friend_user_id = %d )", $bp->loggedin_user->id, $bp->loggedin_user->id ) );
    1017902            for ( $i = 0; $i < count( $members ); $i++ ) {
     
    1103988        global $bp;
    1104989
     990        /* When we are viewing a single group, add the group extension nav item */
     991        if ( $this->visbility == 'public' || ( $this->visbility != 'public' && $bp->groups->current_group->user_has_access ) ) {
     992            if ( $this->enable_nav_item ) {
     993                if ( $bp->current_component == $bp->groups->slug && $bp->is_single_item )
     994                    bp_core_new_subnav_item( array( 'name' => ( !$this->nav_item_name ) ? $this->name : $this->nav_item_name, 'slug' => $this->slug, 'parent_slug' => BP_GROUPS_SLUG, 'parent_url' => bp_get_group_permalink( $bp->groups->current_group ), 'position' => $this->nav_item_position, 'item_css_id' => 'nav-' . $this->slug, 'screen_function' => array( &$this, '_display_hook' ), 'user_has_access' => $this->enable_nav_item ) );
     995
     996                /* When we are viewing the extension display page, set the title and options title */
     997                if ( $bp->current_component == $bp->groups->slug && $bp->is_single_item && $bp->current_action == $this->slug ) {
     998                    add_action( 'bp_template_content_header', create_function( '', 'echo "' . attribute_escape( $this->name ) . '";' ) );
     999                    add_action( 'bp_template_title', create_function( '', 'echo "' . attribute_escape( $this->name ) . '";' ) );
     1000                }
     1001            }
     1002
     1003            /* Hook the group home widget */
     1004            if ( $bp->current_component == $bp->groups->slug && $bp->is_single_item && ( !$bp->current_action || 'home' == $bp->current_action ) )
     1005                add_action( $this->display_hook, array( &$this, 'widget_display' ) );
     1006        }
     1007
    11051008        if ( $this->enable_create_step ) {
    11061009            /* Insert the group creation step for the new group extension */
     
    11201023            /* Catch the edit screen and forward it to the plugin template */
    11211024            if ( $bp->current_component == $bp->groups->slug && 'admin' == $bp->current_action && $this->slug == $bp->action_variables[0] ) {
    1122                 add_action( 'wp', array( &$this, 'edit_screen_save' ) );
     1025                $this->edit_screen_save();
    11231026                add_action( 'groups_custom_edit_steps', array( &$this, 'edit_screen' ) );
    11241027
     
    11321035            }
    11331036        }
    1134 
    1135         /* When we are viewing a single group, add the group extension nav item */
    1136         if ( $this->visbility == 'public' || ( $this->visbility != 'public' && $bp->groups->current_group->user_has_access ) ) {
    1137             if ( $this->enable_nav_item ) {
    1138                 if ( $bp->current_component == $bp->groups->slug && $bp->is_single_item )
    1139                     bp_core_new_subnav_item( array( 'name' => ( !$this->nav_item_name ) ? $this->name : $this->nav_item_name, 'slug' => $this->slug, 'parent_slug' => BP_GROUPS_SLUG, 'parent_url' => bp_get_group_permalink( $bp->groups->current_group ), 'position' => $this->nav_item_position, 'item_css_id' => 'nav-' . $this->slug, 'screen_function' => array( &$this, '_display_hook' ), 'user_has_access' => $this->enable_nav_item ) );
    1140 
    1141                 /* When we are viewing the extension display page, set the title and options title */
    1142                 if ( $bp->current_component == $bp->groups->slug && $bp->is_single_item && $bp->current_action == $this->slug ) {
    1143                     add_action( 'bp_template_content_header', create_function( '', 'echo "' . attribute_escape( $this->name ) . '";' ) );
    1144                     add_action( 'bp_template_title', create_function( '', 'echo "' . attribute_escape( $this->name ) . '";' ) );
    1145                 }
    1146             }
    1147 
    1148             /* Hook the group home widget */
    1149             if ( $bp->current_component == $bp->groups->slug && $bp->is_single_item && ( !$bp->current_action || 'home' == $bp->current_action ) )
    1150                 add_action( $this->display_hook, array( &$this, 'widget_display' ) );
    1151         }
    11521037    }
    11531038
     
    11651050
    11661051    /* Register the group extension on the plugins_loaded action so we have access to all plugins */
    1167     add_action( 'bp_init', create_function( '', '$extension = new ' . $group_extension_class . '; add_action( "wp", array( &$extension, "_register" ), 2 );' ), 11 );
     1052    add_action( 'init', create_function( '', '$extension = new ' . $group_extension_class . '; add_action( "pre_get_posts", array( &$extension, "_register" ) );' ) );
    11681053}
    11691054
  • trunk/bp-groups/bp-groups-templatetags.php

    r2770 r2919  
    2323    var $order;
    2424
    25     function bp_groups_template( $user_id, $type, $page, $per_page, $max, $slug, $search_terms, $populate_extras ) {
     25    function bp_groups_template( $user_id, $type, $page, $per_page, $max, $slug, $search_terms, $include, $populate_extras ) {
    2626        global $bp;
    2727
     
    3636            $this->groups = array( $group );
    3737        } else
    38             $this->groups = groups_get_groups( array( 'type' => $type, 'per_page' => $this->pag_num, 'page' =>$this->pag_page, 'user_id' => $user_id, 'search_terms' => $search_terms, 'populate_extras' => $populate_extras ) );
     38            $this->groups = groups_get_groups( array( 'type' => $type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'search_terms' => $search_terms, 'include' => $include, 'populate_extras' => $populate_extras ) );
    3939
    4040        if ( 'invites' == $type ) {
     
    169169        'slug' => $slug, // Pass a group slug to only return that group
    170170        'search_terms' => $search_terms, // Pass search terms to return only matching groups
     171        'include' => false, // Pass comma separated list of group ID's to return only these groups
    171172
    172173        'populate_extras' => true // Get extra meta - is_member, is_banned
     
    176177    extract( $r );
    177178
    178     $groups_template = new BP_Groups_Template( (int)$user_id, $type, (int)$page, (int)$per_page, (int)$max, $slug, $search_terms, (bool)$populate_extras );
     179    $groups_template = new BP_Groups_Template( (int)$user_id, $type, (int)$page, (int)$per_page, (int)$max, $slug, $search_terms, $include, (bool)$populate_extras );
    179180    return apply_filters( 'bp_has_groups', $groups_template->has_groups(), &$groups_template );
    180181}
     
    726727                <span class="activity"><?php echo bp_core_get_last_activity( strtotime( $admin->date_modified ), __( 'joined %s ago', 'buddypress') ); ?></span>
    727728
    728                 <?php if ( function_exists( 'friends_install' ) ) : ?>
     729                <?php if ( bp_is_active( 'friends' ) ) : ?>
    729730                    <div class="action">
    730731                        <?php bp_add_friend_button( $admin->user_id ) ?>
     
    764765                    <span class="activity"><?php echo bp_core_get_last_activity( strtotime( $mod->date_modified ), __( 'joined %s ago', 'buddypress') ); ?></span>
    765766
    766                     <?php if ( function_exists( 'friends_install' ) ) : ?>
     767                    <?php if ( bp_is_active( 'friends' ) ) : ?>
    767768                        <div class="action">
    768769                            <?php bp_add_friend_button( $mod->user_id ) ?>
     
    10341035    global $groups_template, $bp;
    10351036
    1036     if ( !function_exists('friends_install') )
     1037    if ( !bp_is_active( 'friends' ) )
    10371038        return false;
    10381039
     
    10471048
    10481049function bp_group_join_button( $group = false ) {
    1049     global $bp, $groups_template;
    1050 
    1051     if ( !$group )
    1052         $group =& $groups_template->group;
    1053 
    1054     // If they're not logged in or are banned from the group, no join button.
    1055     if ( !is_user_logged_in() || $group->is_banned )
    1056         return false;
    1057 
    1058     if ( !$group->status )
    1059         return false;
    1060 
    1061     if ( 'hidden' == $group->status && !$group->is_member )
    1062         return false;
    1063 
    1064     echo '<div class="generic-button group-button ' . $group->status . '" id="groupbutton-' . $group->id . '">';
    1065 
    1066     switch ( $group->status ) {
    1067         case 'public':
    1068             if ( $group->is_member )
    1069                 echo '<a class="leave-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
    1070             else
    1071                 echo '<a class="join-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>';
    1072         break;
    1073 
    1074         case 'private':
    1075             if ( $group->is_member ) {
    1076                 echo '<a class="leave-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
    1077             } else {
    1078                 if ( !bp_group_has_requested_membership( $group ) )
    1079                     echo '<a class="request-membership" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ) . '">' . __('Request Membership', 'buddypress') . '</a>';
     1050    echo bp_get_group_join_button( $group );
     1051}
     1052    function bp_get_group_join_button( $group = false ) {
     1053        global $bp, $groups_template;
     1054
     1055        if ( !$group )
     1056            $group =& $groups_template->group;
     1057
     1058        // If they're not logged in or are banned from the group, no join button.
     1059        if ( !is_user_logged_in() || $group->is_banned )
     1060            return false;
     1061
     1062        if ( !$group->status )
     1063            return false;
     1064
     1065        if ( 'hidden' == $group->status && !$group->is_member )
     1066            return false;
     1067
     1068        $button = '<div class="generic-button group-button ' . $group->status . '" id="groupbutton-' . $group->id . '">';
     1069
     1070        switch ( $group->status ) {
     1071            case 'public':
     1072                if ( $group->is_member )
     1073                    $button .= '<a class="leave-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
    10801074                else
    1081                     echo '<a class="membership-requested" href="' . bp_get_group_permalink( $group ) . '">' . __( 'Request Sent', 'buddypress' ) . '</a>';
    1082             }
    1083         break;
    1084 
    1085         case 'hidden':
    1086             if ( $group->is_member )
    1087                 echo '<a class="leave-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
    1088         break;
    1089     }
    1090 
    1091     echo '</div>';
    1092 }
     1075                    $button .= '<a class="join-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>';
     1076            break;
     1077
     1078            case 'private':
     1079                if ( $group->is_member ) {
     1080                    $button .= '<a class="leave-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
     1081                } else {
     1082                    if ( !bp_group_has_requested_membership( $group ) )
     1083                        $button .= '<a class="request-membership" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ) . '">' . __('Request Membership', 'buddypress') . '</a>';
     1084                    else
     1085                        $button .= '<a class="membership-requested" href="' . bp_get_group_permalink( $group ) . '">' . __( 'Request Sent', 'buddypress' ) . '</a>';
     1086                }
     1087            break;
     1088
     1089            case 'hidden':
     1090                if ( $group->is_member )
     1091                    $button .= '<a class="leave-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
     1092            break;
     1093        }
     1094
     1095        $button .= '</div>';
     1096
     1097        return apply_filters( 'bp_get_group_join_button', $button );
     1098    }
    10931099
    10941100function bp_group_status_message( $group = false ) {
     
    16401646        global $bp;
    16411647
    1642         if ( !function_exists('friends_install') )
     1648        if ( !bp_is_active( 'friends' ) )
    16431649            return false;
    16441650
Note: See TracChangeset for help on using the changeset viewer.