Skip to:
Content

BuddyPress.org

Ticket #6095: buddypress-2.1.1-customstatus-v2.patch

File buddypress-2.1.1-customstatus-v2.patch, 64.1 KB (added by tandreatta, 5 years ago)

Default theme works! Fixed an "use before set" error. Changed some function names.

  • buddypress/bp-groups/bp-groups-actions.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-actions.php plugins/buddypress/bp-groups/bp-groups-actions.php
    old new  
    2828        $user_has_access = $current_group->user_has_access;
    2929        $no_access_args  = array();
    3030
    31         if ( ! $user_has_access && 'hidden' !== $current_group->status ) {
     31        if ( ! $user_has_access && !groups_is_hidden_group_status($current_group->status) ) {
    3232                // Always allow access to home and request-membership
    3333                if ( bp_is_current_action( 'home' ) || bp_is_current_action( 'request-membership' ) ) {
    3434                        $user_has_access = true;
     
    7979        // Hidden groups should return a 404 for non-members.
    8080        // Unset the current group so that you're not redirected
    8181        // to the default group tab
    82         if ( 'hidden' == $current_group->status ) {
     82        if ( groups_is_hidden_group_status($current_group->status) ) {
    8383                buddypress()->groups->current_group = 0;
    8484                buddypress()->is_single_item        = false;
    8585                bp_do_404();
     
    162162
    163163                        $new_group_id = isset( $bp->groups->new_group_id ) ? $bp->groups->new_group_id : 0;
    164164
    165                         if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $new_group_id, 'name' => $_POST['group-name'], 'description' => $_POST['group-desc'], 'slug' => groups_check_slug( sanitize_title( esc_attr( $_POST['group-name'] ) ) ), 'date_created' => bp_core_current_time(), 'status' => 'public' ) ) ) {
     165                        if ( !$bp->groups->new_group_id = groups_create_group( array(
     166                                'group_id' => $new_group_id,
     167                                'name' => $_POST['group-name'],
     168                                'description' => $_POST['group-desc'],
     169                                'slug' => groups_check_slug( sanitize_title( esc_attr( $_POST['group-name'] ) ) ),
     170                                'date_created' => bp_core_current_time(),
     171                                'status' => groups_get_default_creation_status()
     172                        ) ) ) {
    166173                                bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' );
    167174                                bp_core_redirect( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create/step/' . bp_get_groups_current_create_step() . '/' );
    168175                        }
    169176                }
    170177
    171178                if ( 'group-settings' == bp_get_groups_current_create_step() ) {
    172                         $group_status = 'public';
    173179                        $group_enable_forum = 1;
    174180
    175181                        if ( !isset($_POST['group-show-forum']) ) {
     
    181187                                }
    182188                        }
    183189
    184                         if ( 'private' == $_POST['group-status'] )
    185                                 $group_status = 'private';
    186                         else if ( 'hidden' == $_POST['group-status'] )
    187                                 $group_status = 'hidden';
     190                        if ( groups_is_valid_status( $_POST['group-status'] ) )
     191                                $group_status = $_POST['group-status'];
     192                        else
     193                                $group_status = groups_get_default_creation_status();
    188194
    189195                        if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $bp->groups->new_group_id, 'status' => $group_status, 'enable_forum' => $group_enable_forum ) ) ) {
    190196                                bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' );
     
    333339        if ( !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) && !groups_is_user_banned( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
    334340
    335341                // User wants to join a group that is not public
    336                 if ( $bp->groups->current_group->status != 'public' ) {
     342                if ( groups_is_private_group_status($bp->groups->current_group->status) ) {
    337343                        if ( !groups_check_user_has_invite( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
    338344                                bp_core_add_message( __( 'There was an error joining the group.', 'buddypress' ), 'error' );
    339345                                bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) );
     
    391397
    392398                $redirect = bp_get_group_permalink( groups_get_current_group() );
    393399
    394                 if( 'hidden' == $bp->groups->current_group->status ) {
     400                if ( groups_is_hidden_group_status($bp->groups->current_group->status) ) {
    395401                        $redirect = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() );
    396402                }
    397403
  • buddypress/bp-groups/bp-groups-activity.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-activity.php plugins/buddypress/bp-groups/bp-groups-activity.php
    old new  
    214214                        $group = groups_get_group( array( 'group_id' => $args['item_id'] ) );
    215215                }
    216216
    217                 if ( isset( $group->status ) && 'public' != $group->status ) {
     217                if ( isset( $group->status ) && groups_is_private_group_status( $group->status ) ) {
    218218                        $hide_sitewide = true;
    219219                }
    220220        }
  • buddypress/bp-groups/bp-groups-adminbar.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-adminbar.php plugins/buddypress/bp-groups/bp-groups-adminbar.php
    old new  
    8888        ) );
    8989
    9090        // Group Admin > Membership Requests
    91         if ( bp_get_group_status( $bp->groups->current_group ) == 'private' ) {
     91        if ( groups_is_membership_request_moderated_status( $bp->groups->current_group->status ) ) {
    9292                $wp_admin_bar->add_menu( array(
    9393                        'parent' => $bp->group_admin_menu_id,
    9494                        'id'     => 'membership-requests',
  • buddypress/bp-groups/bp-groups-admin.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-admin.php plugins/buddypress/bp-groups/bp-groups-admin.php
    old new  
    693693                        <legend><?php _e( 'Privacy', 'buddypress' ); ?></legend>
    694694
    695695                        <ul>
    696                                 <li><input type="radio" name="group-status" id="bp-group-status-public" value="public" <?php checked( $item->status, 'public' ) ?> /><label for="bp-group-status-public"><?php _e( 'Public', 'buddypress' ) ?></label></li>
    697                                 <li><input type="radio" name="group-status" id="bp-group-status-private" value="private" <?php checked( $item->status, 'private' ) ?> /><label for="bp-group-status-private"><?php _e( 'Private', 'buddypress' ) ?></label></li>
    698                                 <li><input type="radio" name="group-status" id="bp-group-status-hidden" value="hidden" <?php checked( $item->status, 'hidden' ) ?> /><label for="bp-group-status-hidden"><?php _e( 'Hidden', 'buddypress' ) ?></label></li>
     696<?php
     697        if ( is_super_admin() ) {
     698                foreach ( groups_get_valid_status() as $status ) { ?>
     699                        <li><input type="radio" name="group-status" id="bp-group-status-<?php echo sanitize_html_class( $status, 'x' ); ?>" value="<?php echo esc_attr( $status ); ?>" <?php checked( $item->status, $status ) ?> /><label for="bp-group-status-<?php echo sanitize_html_class( $status, 'x' ); ?>"><?php _e( ucfirst( $status ), 'buddypress' ) ?></label></li>
     700<?php
     701                }
     702        } elseif ( !groups_is_allowed_status( $item->status )) { ?>
     703                        <li><input type="radio" name="group-status" id="bp-group-status-<?php echo sanitize_html_class( $item->status, 'x' ); ?>" value="<?php echo esc_attr( $item->status ); ?>" checked="checked" /><label for="bp-group-status-<?php echo sanitize_html_class( $status, 'x' ); ?>"><?php _e( ucfirst( $status ), 'buddypress' ) ?></label></li>
     704<?php
     705        } else {
     706                foreach ( groups_get_allowed_status() as $status ) { ?>
     707                        <li><input type="radio" name="group-status" id="bp-group-status-<?php echo sanitize_html_class( $status, 'x' ); ?>" value="<?php echo esc_attr( $status ); ?>" <?php checked( $item->status, $status ) ?> /><label for="bp-group-status-<?php echo sanitize_html_class( $status, 'x' ); ?>"><?php _e( ucfirst( $status ), 'buddypress' ) ?></label></li>
     708<?php
     709                }
     710        }
     711?>
    699712                        </ul>
    700713                </fieldset>
    701714        </div>
     
    11241137                        $include_id = (int) $_REQUEST['gid'];
    11251138
    11261139                // Set the current view
    1127                 if ( isset( $_GET['group_status'] ) && in_array( $_GET['group_status'], array( 'public', 'private', 'hidden' ) ) ) {
     1140                if ( isset( $_GET['group_status'] ) && groups_is_valid_status( $_GET['group_status'] ) ) {
    11281141                        $this->view = $_GET['group_status'];
    11291142                }
    11301143
     
    12711284                        <li class="all"><a href="<?php echo esc_attr( esc_url( $url_base ) ); ?>" class="<?php if ( 'all' == $this->view ) echo 'current'; ?>"><?php _e( 'All', 'buddypress' ); ?></a> |</li>
    12721285                        <li class="public"><a href="<?php echo esc_attr( esc_url( add_query_arg( 'group_status', 'public', $url_base ) ) ); ?>" class="<?php if ( 'public' == $this->view ) echo 'current'; ?>"><?php printf( _n( 'Public <span class="count">(%s)</span>', 'Public <span class="count">(%s)</span>', $this->group_counts['public'], 'buddypress' ), number_format_i18n( $this->group_counts['public'] ) ); ?></a> |</li>
    12731286                        <li class="private"><a href="<?php echo esc_attr( esc_url( add_query_arg( 'group_status', 'private', $url_base ) ) ); ?>" class="<?php if ( 'private' == $this->view ) echo 'current'; ?>"><?php printf( _n( 'Private <span class="count">(%s)</span>', 'Private <span class="count">(%s)</span>', $this->group_counts['private'], 'buddypress' ), number_format_i18n( $this->group_counts['private'] ) ); ?></a> |</li>
    1274                         <li class="hidden"><a href="<?php echo esc_attr( esc_url( add_query_arg( 'group_status', 'hidden', $url_base ) ) ); ?>" class="<?php if ( 'hidden' == $this->view ) echo 'current'; ?>"><?php printf( _n( 'Hidden <span class="count">(%s)</span>', 'Hidden <span class="count">(%s)</span>', $this->group_counts['hidden'], 'buddypress' ), number_format_i18n( $this->group_counts['hidden'] ) ); ?></a></li>
     1287                        <li class="hidden"><a href="<?php echo esc_attr( esc_url( add_query_arg( 'group_status', 'hidden', $url_base ) ) ); ?>" class="<?php if ( 'hidden' == $this->view ) echo 'current'; ?>"><?php printf( _n( 'Hidden <span class="count">(%s)</span>', 'Hidden <span class="count">(%s)</span>', $this->group_counts['hidden'], 'buddypress' ), number_format_i18n( $this->group_counts['hidden'] ) ); ?></a><?php
     1288                foreach (groups_get_valid_status() as $status) {
     1289                    if ($status != 'public' && $status != 'private' && $status != 'hidden') { ?>
     1290                        |</li><li class="<?php echo $status ?>"><a href="<?php echo esc_attr( esc_url( add_query_arg( 'group_status', $status, $url_base ) ) ); ?>" class="<?php if ( $status == $this->view ) echo 'current'; ?>"><?php printf( _n( ucfirst($status).' <span class="count">(%s)</span>', ucfirst($status).' <span class="count">(%s)</span>', $this->group_counts[$status], 'buddypress' ), number_format_i18n( $this->group_counts[$status] ) ); ?></a>
     1291<?php
     1292                    }
     1293                }
     1294                                ?></li>
    12751295
    12761296                        <?php do_action( 'bp_groups_list_table_get_views', $url_base, $this->view ); ?>
    12771297                </ul>
     
    14471467         */
    14481468        public function column_status( $item = array() ) {
    14491469                $status      = $item['status'];
    1450                 $status_desc = '';
    1451 
    1452                 // @todo This should be abstracted out somewhere for the whole
    1453                 // Groups component
    1454                 switch ( $status ) {
    1455                         case 'public' :
    1456                                 $status_desc = __( 'Public', 'buddypress' );
    1457                                 break;
    1458                         case 'private' :
    1459                                 $status_desc = __( 'Private', 'buddypress' );
    1460                                 break;
    1461                         case 'hidden' :
    1462                                 $status_desc = __( 'Hidden', 'buddypress' );
    1463                                 break;
    1464                 }
    1465 
     1470                $status_desc = __( ucfirst($status), 'buddypress' );
    14661471                echo apply_filters_ref_array( 'bp_groups_admin_get_group_status', array( $status_desc, $item ) );
    14671472        }
    14681473
  • buddypress/bp-groups/bp-groups-buddybar.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-buddybar.php plugins/buddypress/bp-groups/bp-groups-buddybar.php
    old new  
    4949
    5050                        <li><a href="<?php bp_groups_action_link( 'admin/manage-members' ); ?>"><?php _e( 'Manage Members', 'buddypress' ); ?></a></li>
    5151
    52                         <?php if ( $bp->groups->current_group->status == 'private' ) : ?>
     52                        <?php if ( groups_is_membership_request_moderated_status( $bp->groups->current_group->status ) ) : ?>
    5353
    5454                                <li><a href="<?php bp_groups_action_link( 'admin/membership-requests' ); ?>"><?php _e( 'Membership Requests', 'buddypress' ); ?></a></li>
    5555
  • buddypress/bp-groups/bp-groups-classes.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-classes.php plugins/buddypress/bp-groups/bp-groups-classes.php
    old new  
    238238                        $this->is_pending = BP_Groups_Member::check_for_membership_request( $user_id, $this->id );
    239239
    240240                        // If this is a private or hidden group, does the current user have access?
    241                         if ( ( 'private' === $this->status ) || ( 'hidden' === $this->status ) ) {
     241                        if ( groups_is_private_group_status( $this->status ) ) {
    242242
    243243                                // Assume user does not have access to hidden/private groups
    244244                                $this->user_has_access = false;
     
    506506                }
    507507
    508508                if ( !bp_current_user_can( 'bp_moderate' ) )
    509                         $hidden_sql = "AND status != 'hidden'";
     509                        $hidden_sql = "AND ".bp_groups_is_hidden_group_sql("status", false);
    510510
    511511                $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT id as group_id FROM {$bp->groups->table_name} WHERE ( name LIKE %s OR description LIKE %s ) {$hidden_sql} {$order_sql} {$pag_sql}", $search_terms_like, $search_terms_like ) );
    512512                $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name} WHERE ( name LIKE %s OR description LIKE %s ) {$hidden_sql}", $search_terms_like, $search_terms_like ) );
     
    706706                $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'";
    707707
    708708                if ( empty( $r['show_hidden'] ) ) {
    709                         $sql['hidden'] = " AND g.status != 'hidden'";
     709                        $sql['hidden'] = "AND ".bp_groups_is_hidden_group_sql("g.status", false);
    710710                }
    711711
    712712                if ( ! empty( $r['search_terms'] ) ) {
     
    788788                }
    789789
    790790                if ( ! empty( $sql['hidden'] ) ) {
    791                         $total_sql['where'][] = "g.status != 'hidden'";
     791                        $total_sql['where'][] = bp_groups_is_hidden_group_sql("g.status", false);
    792792                }
    793793
    794794                if ( ! empty( $sql['search'] ) ) {
     
    10231023                }
    10241024
    10251025                if ( !is_user_logged_in() || ( !bp_current_user_can( 'bp_moderate' ) && ( $user_id != bp_loggedin_user_id() ) ) )
    1026                         $hidden_sql = " AND g.status != 'hidden'";
     1026                        $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false);
    10271027
    10281028                if ( !empty( $search_terms ) ) {
    10291029                        $search_terms_like = '%' . bp_esc_like( $search_terms ) . '%';
     
    10871087                }
    10881088
    10891089                if ( !is_user_logged_in() || ( !bp_current_user_can( 'bp_moderate' ) && ( $user_id != bp_loggedin_user_id() ) ) )
    1090                         $hidden_sql = " AND g.status != 'hidden'";
     1090                        $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false);
    10911091
    10921092                if ( !empty( $search_terms ) ) {
    10931093                        $search_terms_like = '%' . bp_esc_like( $search_terms ) . '%';
     
    11591159                }
    11601160
    11611161                if ( !bp_current_user_can( 'bp_moderate' ) )
    1162                         $hidden_sql = " AND status != 'hidden'";
     1162                        $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false);
    11631163
    11641164                $letter_like = bp_esc_like( $letter ) . '%';
    11651165
     
    12141214                        $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    12151215
    12161216                if ( !is_user_logged_in() || ( !bp_current_user_can( 'bp_moderate' ) && ( $user_id != bp_loggedin_user_id() ) ) )
    1217                         $hidden_sql = "AND g.status != 'hidden'";
     1217                        $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false);
    12181218
    12191219                if ( !empty( $search_terms ) ) {
    12201220                        $search_terms_like = '%' . bp_esc_like( $search_terms ) . '%';
     
    13561356
    13571357                $hidden_sql = '';
    13581358                if ( !bp_current_user_can( 'bp_moderate' ) )
    1359                         $hidden_sql = "WHERE status != 'hidden'";
     1359                        $hidden_sql = "WHERE ".bp_groups_is_hidden_group_sql("status", false);
    13601360
    13611361                return $wpdb->get_var( "SELECT COUNT(id) FROM {$bp->groups->table_name} {$hidden_sql}" );
    13621362        }
     
    14081408        public static function get_global_topic_count( $status = 'public', $search_terms = false ) {
    14091409                global $bbdb, $wpdb, $bp;
    14101410
    1411                 switch ( $status ) {
    1412                         case 'all' :
    1413                                 $status_sql = '';
    1414                                 break;
    1415 
    1416                         case 'hidden' :
    1417                                 $status_sql = "AND g.status = 'hidden'";
    1418                                 break;
    1419 
    1420                         case 'private' :
    1421                                 $status_sql = "AND g.status = 'private'";
    1422                                 break;
    1423 
    1424                         case 'public' :
    1425                         default :
    1426                                 $status_sql = "AND g.status = 'public'";
    1427                                 break;
    1428                 }
     1411                if ( $status == 'all' )
     1412                        $status_sql = '';
     1413                else
     1414                        $status_sql = "AND g.status = '".esc_sql($status)."'";
    14291415
    14301416                $sql = array();
    14311417
     
    14571443                $ids = array();
    14581444
    14591445                $ids['all']     = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name}" );
    1460                 $ids['public']  = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name} WHERE status = 'public'" );
    1461                 $ids['private'] = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name} WHERE status = 'private'" );
    1462                 $ids['hidden']  = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name} WHERE status = 'hidden'" );
     1446                foreach (groups_get_valid_status() as $status) {
     1447                  $ids[$status]  = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name} WHERE status = '".esc_sql($status)."'" );
     1448                }
    14631449
    14641450                return $ids;
    14651451        }
     
    22302216
    22312217                // If the user is logged in and viewing their own groups, we can show hidden and private groups
    22322218                if ( $user_id != bp_loggedin_user_id() ) {
    2233                         $group_sql = $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.status != 'hidden' AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0{$pag_sql}", $user_id );
    2234                         $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.status != 'hidden' AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) );
     2219                        $group_sql = $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE ".bp_groups_is_hidden_group_sql("g.status", false)." AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0{$pag_sql}", $user_id );
     2220                        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE ".bp_groups_is_hidden_group_sql("g.status", false)." AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) );
    22352221                } else {
    22362222                        $group_sql = $wpdb->prepare( "SELECT DISTINCT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND is_confirmed = 1 AND is_banned = 0{$pag_sql}", $user_id );
    22372223                        $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT group_id) FROM {$bp->groups->table_name_members} WHERE user_id = %d AND is_confirmed = 1 AND is_banned = 0", $user_id ) );
     
    22732259                }
    22742260
    22752261                if ( $user_id != bp_loggedin_user_id() )
    2276                         $hidden_sql = " AND g.status != 'hidden'";
     2262                        $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false);
    22772263
    22782264                $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}{$filter_sql} AND {$user_id_sql} AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY m.date_modified DESC {$pag_sql}" );
    22792265                $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND {$user_id_sql} AND m.is_banned = 0 AND m.is_confirmed = 1 ORDER BY m.date_modified DESC" );
     
    23122298                }
    23132299
    23142300                if ( $user_id != bp_loggedin_user_id() )
    2315                         $hidden_sql = " AND g.status != 'hidden'";
     2301                        $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false);
    23162302
    23172303                $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}{$filter_sql} AND {$user_id_sql} AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_admin = 1 ORDER BY m.date_modified ASC {$pag_sql}" );
    23182304                $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND {$user_id_sql} AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_admin = 1 ORDER BY date_modified ASC" );
     
    23512337                }
    23522338
    23532339                if ( $user_id != bp_loggedin_user_id() )
    2354                         $hidden_sql = " AND g.status != 'hidden'";
     2340                        $hidden_sql = " AND ".bp_groups_is_hidden_group_sql("g.status", false);
    23552341
    23562342                $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}{$filter_sql} AND {$user_id_sql} AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_mod = 1 ORDER BY m.date_modified ASC {$pag_sql}" );
    23572343                $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND {$user_id_sql} AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_mod = 1 ORDER BY date_modified ASC" );
     
    23722358                        $user_id = bp_displayed_user_id();
    23732359
    23742360                if ( $user_id != bp_loggedin_user_id() && !bp_current_user_can( 'bp_moderate' ) ) {
    2375                         return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) );
     2361                        return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND ".bp_groups_is_hidden_group_sql("g.status", false)." AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) );
    23762362                } else {
    23772363                        return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) );
    23782364                }
     
    26062592                if ( bp_is_my_profile() ) {
    26072593                        return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND is_confirmed = 1 AND is_banned = 0 ORDER BY rand() LIMIT %d", $user_id, $total_groups ) );
    26082594                } else {
    2609                         return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY rand() LIMIT %d", $user_id, $total_groups ) );
     2595                        return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND ".bp_groups_is_hidden_group_sql("g.status", false)." AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY rand() LIMIT %d", $user_id, $total_groups ) );
    26102596                }
    26112597        }
    26122598
  • buddypress/bp-groups/bp-groups-filters.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-filters.php plugins/buddypress/bp-groups/bp-groups-filters.php
    old new  
    163163        $parts['groups'] = "(gm.meta_key = 'forum_id' AND gm.meta_value = t.forum_id)";
    164164
    165165        // Restrict to public...
    166         $parts['private'] = "g.status = 'public'";
     166        $parts['private'] = bp_groups_is_private_group_sql("g.status", false);
    167167
    168168        /**
    169169         * ...but do some checks to possibly remove public restriction.
  • buddypress/bp-groups/bp-groups-functions.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-functions.php plugins/buddypress/bp-groups/bp-groups-functions.php
    old new  
    9393                'name'         => '',
    9494                'description'  => '',
    9595                'slug'         => '',
    96                 'status'       => 'public',
     96                'status'       => groups_get_default_creation_status(),
    9797                'enable_forum' => 0,
    9898                'date_created' => bp_core_current_time()
    9999        );
     
    221221        $group->enable_forum = $enable_forum;
    222222
    223223        /***
    224          * Before we potentially switch the group status, if it has been changed to public
    225          * from private and there are outstanding membership requests, auto-accept those requests.
     224         * Before we potentially switch the group status, if it has been changed to a status
     225         * who not requires membership requests, auto-accept pending requests.
    226226         */
    227         if ( 'private' == $group->status && 'public' == $status )
     227        if ( !groups_is_membership_request_moderated_status( $status ) )
    228228                groups_accept_all_pending_membership_requests( $group->id );
    229229
    230230        // Now update the status
     
    290290        return in_array( $status, (array) $bp->groups->valid_status );
    291291}
    292292
     293function groups_get_valid_status() {
     294        global $bp;
     295
     296        return $bp->groups->valid_status;
     297}
     298
     299/**
     300 * Check a group status (eg 'private') against the whitelist of creation statuses.
     301 *
     302 * @param string $status Status to check.
     303 * @return bool True if status is allowed, otherwise false.
     304 */
     305function groups_is_allowed_status( $status ) {
     306        global $bp;
     307
     308        return in_array( $status, (array) $bp->groups->allowed_status );
     309}
     310
     311function groups_get_allowed_status() {
     312        global $bp;
     313
     314        return $bp->groups->allowed_status;
     315}
     316
     317
     318/**
     319 * Returns the default group status (eg 'public').
     320 *
     321 * @return string First valid creation status
     322 */
     323function groups_get_default_creation_status() {
     324        global $bp;
     325
     326        return apply_filters( 'groups_default_creation_status',
     327                reset($bp->groups->allowed_status));
     328}
     329
     330/**
     331 * Check if this group status (eg 'private') allows membership requests.
     332 *
     333 * @param string $status Status to check.
     334 * @return bool True if status requires join moderation, otherwise false.
     335 */
     336function groups_is_membership_request_allowed_status( $status ) {
     337        global $bp;
     338
     339        return in_array( $status, $bp->groups->membership_request_allowed_status );
     340}
     341
     342/**
     343 * Check if membership request to this group status (eg 'private') is moderated.
     344 *
     345 * @param string $status Status to check.
     346 * @return bool True if status allows joining, otherwise false.
     347 */
     348function groups_is_membership_request_moderated_status( $status ) {
     349        global $bp;
     350
     351        return in_array( $status, $bp->groups->membership_request_moderated_status );
     352}
     353
     354
     355/**
     356 * Display membership request description for group status.
     357 *
     358 * @param string $status Status to check.
     359 */
     360function group_membership_request_description( $status ) {
     361   if ( groups_is_membership_request_moderated_status( $status ) )
     362     _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' );
     363   elseif ( groups_is_membership_request_allowed_status( $status ) )
     364     _e( 'Any site member can join this group.', 'buddypress' );
     365   else
     366     _e( 'Only users who are invited can join the group.', 'buddypress' );
     367}
     368
     369/**
     370 * Display group listing visibility description for group status.
     371 *
     372 * @param string $status Status to check.
     373 */
     374function group_listing_visibility_description( $status ) {
     375   if ( groups_is_hidden_group_status( $status ) )
     376     _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' );
     377   else
     378     _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' );
     379}
     380
     381/**
     382 * Display group content visibility description for group status.
     383 *
     384 * @param string $status Status to check.
     385 */
     386function group_content_visibility_description( $status ) {
     387   if ( groups_is_private_group_status( $status ) )
     388     _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' );
     389   else
     390     _e( 'Group content and activity will be visible to any site member.', 'buddypress' );
     391}
     392
     393/**
     394 * Check if this group status (eg 'private') make contents private.
     395 *
     396 * @param string $status Status to check.
     397 * @return bool True if status deny content visibility to non-members
     398 */
     399function groups_is_private_group_status( $status ) {
     400        global $bp;
     401
     402        return in_array( $status, $bp->groups->private_status );
     403}
     404
     405function bp_groups_is_private_group_sql($column, $mode = true) {
     406  if (count($bp->groups->private_status) == 0)
     407        return $mode ? '0=1' : '1=1';
     408  return $column
     409        .($mode?" IN ('":" NOT IN ('")
     410        .join("','", esc_sql($bp->groups->private_status) )
     411        ."')";
     412}
     413
     414
     415/**
     416 * Check if this group status (eg 'hidden') make group hidden to non-members.
     417 *
     418 * @param string $status Status to check.
     419 * @return bool True if status deny listing visibility to non-members
     420 */
     421function groups_is_hidden_group_status( $status ) {
     422        global $bp;
     423
     424        return in_array( $status, $bp->groups->hidden_status );
     425}
     426
     427function bp_groups_is_hidden_group_sql($column, $mode = true) {
     428  if (count($bp->groups->hidden_status) == 0)
     429        return $mode ? '0=1' : '1=1';
     430  return $column
     431        .($mode?" IN ('":" NOT IN ('")
     432        .join("','", esc_sql($bp->groups->hidden_status) )
     433        ."')";
     434}
     435
     436
    293437/**
    294438 * Provide a unique, sanitized version of a group slug.
    295439 *
  • buddypress/bp-groups/bp-groups-loader.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-loader.php plugins/buddypress/bp-groups/bp-groups-loader.php
    old new  
    8080        public $valid_status;
    8181
    8282        /**
     83         * Allowed group statuses (for non-super-admins) (Public, Private, Hidden).
     84         *
     85         * @since BuddyPress (1.5.0)
     86         * @access public
     87         * @var array
     88         */
     89        public $allowed_status;
     90
     91        /**
     92         * Group statuses who allows membership request (Public, Private).
     93         *
     94         * @since BuddyPress (2.1.0)
     95         * @access public
     96         * @var array
     97         */
     98        public $membeship_request_allowed_status;
     99
     100        /**
     101         * Group statuses who requires membership request moderation (Private).
     102         *
     103         * @since BuddyPress (2.1.0)
     104         * @access public
     105         * @var array
     106         */
     107        public $membeship_request_moderated_status;
     108
     109        /**
     110         * Group statuses hidden to non-members in directory
     111         *
     112         * @since BuddyPress (2.1.0)
     113         * @access public
     114         * @var array
     115         */
     116        public $hidden_status;
     117
     118        /**
     119         * Group statuses whose contents are hidden to non-members
     120         *
     121         * @since BuddyPress (2.1.0)
     122         * @access public
     123         * @var array
     124         */
     125        public $private_status;
     126
     127
     128        /**
    83129         * Start the groups component creation process.
    84130         *
    85131         * @since BuddyPress (1.5.0)
     
    172218
    173219                parent::setup_globals( $args );
    174220
     221                /*
     222                 * Initialize groups statuses
     223                 */
     224                $this->valid_status = apply_filters( 'groups_valid_status', array(
     225                        'public',
     226                        'private',
     227                        'hidden'
     228                ) );
     229
     230                $this->allowed_status = apply_filters( 'groups_allowed_status', array(
     231                        'public',
     232                        'private',
     233                        'hidden'
     234                ) );
     235
     236
     237                $this->membership_request_allowed_status = apply_filters( 'groups_membership_request_allowed', array(
     238                        'public',
     239                        'private'
     240                ) );
     241
     242                $this->membership_request_moderated_status = apply_filters( 'groups_membership_request_moderated', array(
     243                        'private'
     244                ) );
     245
     246                $this->hidden_status = apply_filters( 'groups_hidden_status', array(
     247                        'hidden'
     248                ) );
     249
     250                $this->private_status = apply_filters( 'groups_private_status', array(
     251                        'private',
     252                        'hidden'
     253                ) );
     254
     255
     256                // Auto join group when non group member performs group activity
     257                $this->auto_join = defined( 'BP_DISABLE_AUTO_GROUP_JOIN' ) && BP_DISABLE_AUTO_GROUP_JOIN ? false : true;
     258
    175259                /** Single Group Globals **********************************************/
    176260
    177261                // Are we viewing a single group?
     
    213297                                $this->current_group->is_user_member = false;
    214298
    215299                        // Should this group be visible to the logged in user?
    216                         if ( 'public' == $this->current_group->status || $this->current_group->is_user_member )
    217                                 $this->current_group->is_visible = true;
    218                         else
    219                                 $this->current_group->is_visible = false;
     300                        $this->current_group->is_visible = ( $this->current_group->is_user_member ||
     301                                !groups_is_hidden_group_status( $this->current_group->status ) );
    220302
    221303                        // If this is a private or hidden group, does the user have access?
    222                         if ( 'private' == $this->current_group->status || 'hidden' == $this->current_group->status ) {
     304                        if ( groups_is_private_group_status($this->current_group->status) ) {
    223305                                if ( $this->current_group->is_user_member && is_user_logged_in() || bp_current_user_can( 'bp_moderate' ) )
    224306                                        $this->current_group->user_has_access = true;
    225307                                else
     
    284366                                'position' => 30
    285367                        );
    286368                }
    287 
    288                 // Groups statuses
    289                 $this->valid_status = apply_filters( 'groups_valid_status', array(
    290                         'public',
    291                         'private',
    292                         'hidden'
    293                 ) );
    294 
    295                 // Auto join group when non group member performs group activity
    296                 $this->auto_join = defined( 'BP_DISABLE_AUTO_GROUP_JOIN' ) && BP_DISABLE_AUTO_GROUP_JOIN ? false : true;
    297369        }
    298370
    299371        /**
     
    440512                        if ( is_user_logged_in() &&
    441513                                 ! $this->current_group->is_user_member &&
    442514                                 ! groups_check_for_membership_request( bp_loggedin_user_id(), $this->current_group->id ) &&
    443                                  $this->current_group->status == 'private' &&
     515                                 groups_is_membership_request_allowed_status( $this->current_group->status ) &&
     516                                 groups_is_membership_request_moderated_status( $this->current_group->status ) &&
    444517                                 ! groups_check_user_has_invite( bp_loggedin_user_id(), $this->current_group->id )
    445518                                ) {
    446519
  • buddypress/bp-groups/bp-groups-screens.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-screens.php plugins/buddypress/bp-groups/bp-groups-screens.php
    old new  
    150150                        check_admin_referer( 'bp_forums_new_reply' );
    151151
    152152                        // Auto join this user if they are not yet a member of this group
    153                         if ( bp_groups_auto_join() && !bp_current_user_can( 'bp_moderate' ) && 'public' == $bp->groups->current_group->status && !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
     153                        if ( bp_groups_auto_join() &&
     154                             !bp_current_user_can( 'bp_moderate' ) &&
     155                             groups_is_membership_request_allowed_status($bp->groups->current_group->status) &&
     156                             !groups_is_membership_request_moderated_status($bp->groups->current_group->status) &&
     157                             !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
    154158                                groups_join_group( $bp->groups->current_group->id, bp_loggedin_user_id() );
    155159                        }
    156160
     
    372376                        if ( $user_is_banned ) {
    373377                                $error_message = __( "You have been banned from this group.", 'buddypress' );
    374378
    375                         } elseif ( bp_groups_auto_join() && !bp_current_user_can( 'bp_moderate' ) && 'public' == $bp->groups->current_group->status && !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
     379                        } elseif ( bp_groups_auto_join() &&
     380                                   !bp_current_user_can( 'bp_moderate' ) &&
     381                                   groups_is_membership_request_allowed_status($bp->groups->current_group->status) &&
     382                                   !groups_is_membership_request_moderated_status($bp->groups->current_group->status) &&
     383                                   !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
    376384                                // Auto join this user if they are not yet a member of this group
    377385                                groups_join_group( $bp->groups->current_group->id, bp_loggedin_user_id() );
    378386                        }
     
    516524
    517525        $bp = buddypress();
    518526
    519         if ( 'private' != $bp->groups->current_group->status )
     527        if ( !groups_is_membership_request_moderated_status( $bp->groups->current_group->status ) )
    520528                return false;
    521529
    522530        // If the user is already invited, accept invitation
     
    628636
    629637        // If the edit form has been submitted, save the edited details
    630638        if ( isset( $_POST['save'] ) ) {
     639
     640                // Check the nonce
     641                if ( !check_admin_referer( 'groups_edit_group_settings' ) )
     642                        return false;
     643
    631644                $enable_forum   = ( isset($_POST['group-show-forum'] ) ) ? 1 : 0;
    632645
    633646                // Checked against a whitelist for security
    634                 $allowed_status = apply_filters( 'groups_allowed_status', array( 'public', 'private', 'hidden' ) );
    635                 $status         = ( in_array( $_POST['group-status'], (array) $allowed_status ) ) ? $_POST['group-status'] : 'public';
     647                $status = groups_is_valid_status( $_POST['group-status'] ) ? $_POST['group-status'] : groups_get_default_creation_status();
    636648
    637649                // Checked against a whitelist for security
    638650                $allowed_invite_status = apply_filters( 'groups_allowed_invite_status', array( 'members', 'mods', 'admins' ) );
    639651                $invite_status         = isset( $_POST['group-invite-status'] ) && in_array( $_POST['group-invite-status'], (array) $allowed_invite_status ) ? $_POST['group-invite-status'] : 'members';
    640652
    641                 // Check the nonce
    642                 if ( !check_admin_referer( 'groups_edit_group_settings' ) )
    643                         return false;
    644 
    645653                if ( !groups_edit_group_settings( $_POST['group-id'], $enable_forum, $status, $invite_status ) ) {
    646654                        bp_core_add_message( __( 'There was an error updating group settings; please try again.', 'buddypress' ), 'error' );
    647655                } else {
     
    866874                return false;
    867875        }
    868876
    869         if ( ! bp_is_item_admin() || ( 'public' == $bp->groups->current_group->status ) ) {
     877        if ( !bp_is_item_admin() ||
     878             !groups_is_membership_request_moderated_status( $bp->groups->current_group->status )) {
    870879                return false;
    871880        }
    872881
  • buddypress/bp-groups/bp-groups-template.php

    diff -ur plugins.orig/buddypress/bp-groups/bp-groups-template.php plugins/buddypress/bp-groups/bp-groups-template.php
    old new  
    573573        if ( empty( $group ) )
    574574                $group =& $groups_template->group;
    575575
    576         if ( 'public' == $group->status ) {
     576        if ( !groups_is_private_group_status( $group->status ) ) {
    577577                return true;
    578578        } else {
    579579                if ( groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) {
     
    711711                } else if ( 'private' == $group->status ) {
    712712                        $type = __( "Private Group", "buddypress" );
    713713                } else {
    714                         $type = ucwords( $group->status ) . ' ' . __( 'Group', 'buddypress' );
     714                        $type = __(  ucwords( $group->status ) .' Group', 'buddypress' );
    715715                }
    716716
    717717                return apply_filters( 'bp_get_group_type', $type );
     
    20832083
    20842084        <li<?php if ( 'manage-members' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/manage-members' ) ?>"><?php _e( 'Members', 'buddypress' ); ?></a></li>
    20852085
    2086         <?php if ( $groups_template->group->status == 'private' ) : ?>
     2086        <?php if ( groups_is_membership_request_moderated_status( $groups_template->group->status ) ) : ?>
    20872087
    20882088                <li<?php if ( 'membership-requests' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/membership-requests' ) ?>"><?php _e( 'Requests', 'buddypress' ); ?></a></li>
    20892089
     
    24042404                } else {
    24052405
    24062406                        // Show different buttons based on group status
    2407                         switch ( $group->status ) {
    2408                                 case 'hidden' :
    2409                                         return false;
    2410                                         break;
    2411 
    2412                                 case 'public':
    2413                                         $button = array(
    2414                                                 'id'                => 'join_group',
    2415                                                 'component'         => 'groups',
    2416                                                 'must_be_logged_in' => true,
    2417                                                 'block_self'        => false,
    2418                                                 'wrapper_class'     => 'group-button ' . $group->status,
    2419                                                 'wrapper_id'        => 'groupbutton-' . $group->id,
    2420                                                 'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ),
    2421                                                 'link_text'         => __( 'Join Group', 'buddypress' ),
    2422                                                 'link_title'        => __( 'Join Group', 'buddypress' ),
    2423                                                 'link_class'        => 'group-button join-group',
    2424                                         );
    2425                                         break;
    2426 
    2427                                 case 'private' :
     2407                        if ( !groups_is_membership_request_allowed_status($group->status) ) {
     2408                                return false;
     2409                        }
    24282410
    2429                                         // Member has outstanding invitation -
    2430                                         // show an "Accept Invitation" button
    2431                                         if ( $group->is_invited ) {
    2432                                                 $button = array(
    2433                                                         'id'                => 'accept_invite',
    2434                                                         'component'         => 'groups',
    2435                                                         'must_be_logged_in' => true,
    2436                                                         'block_self'        => false,
    2437                                                         'wrapper_class'     => 'group-button ' . $group->status,
    2438                                                         'wrapper_id'        => 'groupbutton-' . $group->id,
    2439                                                         'link_href'         => add_query_arg( 'redirect_to', bp_get_group_permalink( $group ), bp_get_group_accept_invite_link( $group ) ),
    2440                                                         'link_text'         => __( 'Accept Invitation', 'buddypress' ),
    2441                                                         'link_title'        => __( 'Accept Invitation', 'buddypress' ),
    2442                                                         'link_class'        => 'group-button accept-invite',
    2443                                                 );
    2444 
    2445                                         // Member has requested membership but request is pending -
    2446                                         // show a "Request Sent" button
    2447                                         } elseif ( $group->is_pending ) {
    2448                                                 $button = array(
    2449                                                         'id'                => 'membership_requested',
    2450                                                         'component'         => 'groups',
    2451                                                         'must_be_logged_in' => true,
    2452                                                         'block_self'        => false,
    2453                                                         'wrapper_class'     => 'group-button pending ' . $group->status,
    2454                                                         'wrapper_id'        => 'groupbutton-' . $group->id,
    2455                                                         'link_href'         => bp_get_group_permalink( $group ),
    2456                                                         'link_text'         => __( 'Request Sent', 'buddypress' ),
    2457                                                         'link_title'        => __( 'Request Sent', 'buddypress' ),
    2458                                                         'link_class'        => 'group-button pending membership-requested',
    2459                                                 );
    2460 
    2461                                         // Member has not requested membership yet -
    2462                                         // show a "Request Membership" button
    2463                                         } else {
    2464                                                 $button = array(
    2465                                                         'id'                => 'request_membership',
    2466                                                         'component'         => 'groups',
    2467                                                         'must_be_logged_in' => true,
    2468                                                         'block_self'        => false,
    2469                                                         'wrapper_class'     => 'group-button ' . $group->status,
    2470                                                         'wrapper_id'        => 'groupbutton-' . $group->id,
    2471                                                         'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ),
    2472                                                         'link_text'         => __( 'Request Membership', 'buddypress' ),
    2473                                                         'link_title'        => __( 'Request Membership', 'buddypress' ),
    2474                                                         'link_class'        => 'group-button request-membership',
    2475                                                 );
    2476                                         }
     2411                        if ( !groups_is_membership_request_moderated_status($group->status) ) {
     2412                                $button = array(
     2413                                        'id'                => 'join_group',
     2414                                        'component'         => 'groups',
     2415                                        'must_be_logged_in' => true,
     2416                                        'block_self'        => false,
     2417                                        'wrapper_class'     => 'group-button ' . $group->status,
     2418                                        'wrapper_id'        => 'groupbutton-' . $group->id,
     2419                                        'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ),
     2420                                        'link_text'         => __( 'Join Group', 'buddypress' ),
     2421                                        'link_title'        => __( 'Join Group', 'buddypress' ),
     2422                                        'link_class'        => 'group-button join-group',
     2423                                );
     2424                        } elseif ( $group->is_invited ) {
     2425                                // Member has outstanding invitation -
     2426                                // show an "Accept Invitation" button
     2427                                $button = array(
     2428                                        'id'                => 'accept_invite',
     2429                                        'component'         => 'groups',
     2430                                        'must_be_logged_in' => true,
     2431                                        'block_self'        => false,
     2432                                        'wrapper_class'     => 'group-button ' . $group->status,
     2433                                        'wrapper_id'        => 'groupbutton-' . $group->id,
     2434                                        'link_href'         => add_query_arg( 'redirect_to', bp_get_group_permalink( $group ), bp_get_group_accept_invite_link( $group ) ),
     2435                                        'link_text'         => __( 'Accept Invitation', 'buddypress' ),
     2436                                        'link_title'        => __( 'Accept Invitation', 'buddypress' ),
     2437                                        'link_class'        => 'group-button accept-invite',
     2438                                );
     2439
     2440                        } elseif ( $group->is_pending ) {
     2441                                // Member has requested membership but request is pending -
     2442                                // show a "Request Sent" button
     2443                                $button = array(
     2444                                        'id'                => 'membership_requested',
     2445                                        'component'         => 'groups',
     2446                                        'must_be_logged_in' => true,
     2447                                        'block_self'        => false,
     2448                                        'wrapper_class'     => 'group-button pending ' . $group->status,
     2449                                        'wrapper_id'        => 'groupbutton-' . $group->id,
     2450                                        'link_href'         => bp_get_group_permalink( $group ),
     2451                                        'link_text'         => __( 'Request Sent', 'buddypress' ),
     2452                                        'link_title'        => __( 'Request Sent', 'buddypress' ),
     2453                                        'link_class'        => 'group-button pending membership-requested',
     2454                                );
    24772455
    2478                                         break;
     2456                        } else {
     2457                                // Member has not requested membership yet -
     2458                                // show a "Request Membership" button
     2459                                $button = array(
     2460                                        'id'                => 'request_membership',
     2461                                        'component'         => 'groups',
     2462                                        'must_be_logged_in' => true,
     2463                                        'block_self'        => false,
     2464                                        'wrapper_class'     => 'group-button ' . $group->status,
     2465                                        'wrapper_id'        => 'groupbutton-' . $group->id,
     2466                                        'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ),
     2467                                        'link_text'         => __( 'Request Membership', 'buddypress' ),
     2468                                        'link_title'        => __( 'Request Membership', 'buddypress' ),
     2469                                        'link_class'        => 'group-button request-membership',
     2470                                );
    24792471                        }
    24802472                }
    24812473
     
    25342526        if ( ! $group )
    25352527                $group =& $groups_template->group;
    25362528
    2537         if ( 'private' == $group->status ) {
     2529        if ( groups_is_membership_request_moderated_status( $group->status ) ) {
    25382530                if ( ! bp_group_has_requested_membership() ) {
    25392531                        if ( is_user_logged_in() && bp_group_is_invited() ) {
    25402532                                $message = __( 'You must accept your pending invitation before you can access this private group.', 'buddypress' );
  • buddypress/bp-templates/bp-legacy/buddypress/groups/create.php

    diff -ur plugins.orig/buddypress/bp-templates/bp-legacy/buddypress/groups/create.php plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/create.php
    old new  
    5050
    5151                                <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4>
    5252
    53                                 <div class="radio">
    54                                         <label><input type="radio" name="group-status" value="public"<?php if ( 'public' == bp_get_new_group_status() || !bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> /> <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong></label>
    55                                         <ul>
    56                                                 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li>
    57                                                 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    58                                                 <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li>
    59                                         </ul>
    60 
    61 
    62                                         <label>
    63                                                 <input type="radio" name="group-status" value="private"<?php if ( 'private' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> />
    64                                                 <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong>
    65                                         </label>
    66                                         <ul>
    67                                                 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li>
    68                                                 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    69                                                 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    70                                         </ul>
    71 
     53                                <div class="radio"><?php
     54                                $new_status = bp_get_new_group_status();
     55                                if (!$new_status)
     56                                        $new_status = groups_get_default_creation_status();
    7257
     58                                foreach ( groups_get_valid_status() as $status ) {
     59                                        if ( is_super_admin() || groups_is_allowed_status( $status ) ) : ?>
    7360                                        <label>
    74                                                 <input type="radio" name="group-status" value="hidden"<?php if ( 'hidden' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> />
    75                                                 <strong><?php _e('This is a hidden group', 'buddypress' ); ?></strong>
    76                                         </label>
     61                                                <input type="radio" name="group-status" value="<?php echo esc_attr($status); ?>"<?php if ( $status == $new_status ) { ?> checked="checked"<?php } ?> /> <strong><?php _e( 'This is a '.$status.' group', 'buddypress' ); ?></strong></label>
    7762                                        <ul>
    78                                                 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li>
    79                                                 <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>
    80                                                 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    81                                         </ul>
    82 
     63                                                <li><?php group_membership_request_description( $status ); ?></li>
     64                                                <li><?php group_listing_visibility_description( $status ); ?></li>
     65                                                <li><?php group_content_visibility_description( $status ); ?></li>
     66                                        </ul><?php
     67                                        endif;
     68                                } ?>
    8369                                </div>
    8470
    8571                                <h4><?php _e( 'Group Invitations', 'buddypress' ); ?></h4>
     
    306292
    307293</div>
    308294
    309 <?php do_action( 'bp_after_create_group_page' ); ?>
    310  No newline at end of file
     295<?php do_action( 'bp_after_create_group_page' ); ?>
  • buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php

    diff -ur plugins.orig/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php
    old new  
    5656        <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4>
    5757
    5858        <div class="radio">
     59<?php
     60        $current_group_status = bp_get_group_status();
     61        if (!is_super_admin() && !groups_is_allowed_status( $current_group_status ) ) { ?>
    5962                <label>
    60                         <input type="radio" name="group-status" value="public"<?php bp_group_show_status_setting( 'public' ); ?> />
    61                         <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong>
    62                         <ul>
    63                                 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li>
    64                                 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    65                                 <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li>
    66                         </ul>
     63                        <input type="hidden" name="group-status" value="<?php
     64                                echo esc_attr($current_group_status);
     65                        ?>" />
     66                        <strong><?php
     67                                _e( 'This is a '.$current_group_status.' group', 'buddypress' );
     68                        ?></strong>
    6769                </label>
    68 
     70                <ul>
     71                        <li><?php group_membership_request_description( $current_group_status ); ?></li>
     72                        <li><?php group_listing_visibility_description( $current_group_status ); ?></li>
     73                        <li><?php group_content_visibility_description( $current_group_status ); ?></li>
     74                </ul>
     75<?php   } else {
     76                foreach ( groups_get_valid_status() as $status ) {
     77                        if ( is_super_admin() || groups_is_allowed_status( $status ) ) { ?>
    6978                <label>
    70                         <input type="radio" name="group-status" value="private"<?php bp_group_show_status_setting( 'private' ); ?> />
    71                         <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong>
     79                        <input type="radio" name="group-status" value="<?php echo esc_attr($current_group_status); ?>"<?php bp_group_show_status_setting( $status ); ?> />
     80                        <strong><?php _e( 'This is a '.$status.' group', 'buddypress' ); ?></strong>
    7281                        <ul>
    73                                 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li>
    74                                 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    75                                 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
     82                                <li><?php group_membership_request_description( $current_group_status ); ?></li>
     83                                <li><?php group_listing_visibility_description( $current_group_status ); ?></li>
     84                                <li><?php group_content_visibility_description( $current_group_status ); ?></li>
    7685                        </ul>
    7786                </label>
     87                <?php
     88                        }
     89                }
     90        }
     91?>
    7892
    79                 <label>
    80                         <input type="radio" name="group-status" value="hidden"<?php bp_group_show_status_setting( 'hidden' ); ?> />
    81                         <strong><?php _e( 'This is a hidden group', 'buddypress' ); ?></strong>
    82                         <ul>
    83                                 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li>
    84                                 <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>
    85                                 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    86                         </ul>
    87                 </label>
    8893        </div>
    8994
    9095        <hr />
  • buddypress/bp-templates/bp-legacy/buddypress-functions.php

    diff -ur plugins.orig/buddypress/bp-templates/bp-legacy/buddypress-functions.php plugins/buddypress/bp-templates/bp-legacy/buddypress-functions.php
    old new  
    11881188                return;
    11891189
    11901190        if ( ! groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) {
    1191                 if ( 'public' == $group->status ) {
     1191            if ( groups_is_membership_request_allowed_status($group->status) ) {
     1192                if ( !groups_is_membership_request_moderated_status($group->status) ) {
    11921193                        check_ajax_referer( 'groups_join_group' );
    11931194
    11941195                        if ( ! groups_join_group( $group->id ) ) {
     
    11971198                                echo '<a id="group-' . esc_attr( $group->id ) . '" class="leave-group" rel="leave" title="' . __( 'Leave Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
    11981199                        }
    11991200
    1200                 } elseif ( 'private' == $group->status ) {
    1201 
     1201                } else {
    12021202                        // If the user has already been invited, then this is
    12031203                        // an Accept Invitation button
    12041204                        if ( groups_check_user_has_invite( bp_loggedin_user_id(), $group->id ) ) {
     
    12091209                                } else {
    12101210                                        echo '<a id="group-' . esc_attr( $group->id ) . '" class="leave-group" rel="leave" title="' . __( 'Leave Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
    12111211                                }
    1212 
    12131212                        // Otherwise, it's a Request Membership button
    12141213                        } else {
    12151214                                check_ajax_referer( 'groups_request_membership' );
     
    12171216                                if ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) {
    12181217                                        _e( 'Error requesting membership', 'buddypress' );
    12191218                                } else {
    1220                                         echo '<a id="group-' . esc_attr( $group->id ) . '" class="membership-requested" rel="membership-requested" title="' . __( 'Membership Requested', 'buddypress' ) . '" href="' . bp_get_group_permalink( $group ) . '">' . __( 'Membership Requested', 'buddypress' ) . '</a>';
     1219                                        echo '<a id="group-' . esc_attr( $group->id ) . '" class="membership-requested disabled" rel="membership-requested" title="' . __( 'Membership Requested', 'buddypress' ) . '" href="' . bp_get_group_permalink( $group ) . '" onClick="return false;">' . __( 'Membership Requested', 'buddypress' ) . '</a>';
    12211220                                }
    12221221                        }
    12231222                }
    1224 
     1223            }
    12251224        } else {
    12261225                check_ajax_referer( 'groups_leave_group' );
    12271226
    12281227                if ( ! groups_leave_group( $group->id ) ) {
     1228
    12291229                        _e( 'Error leaving group', 'buddypress' );
    1230                 } elseif ( 'public' == $group->status ) {
     1230                } elseif ( !groups_is_membership_request_moderated_status($group->status) ) {
    12311231                        echo '<a id="group-' . esc_attr( $group->id ) . '" class="join-group" rel="join" title="' . __( 'Join Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>';
    1232                 } elseif ( 'private' == $group->status ) {
     1232
     1233                } elseif ( groups_is_membership_request_allowed_status($group->status) ) {
     1234
    12331235                        echo '<a id="group-' . esc_attr( $group->id ) . '" class="request-membership" rel="join" title="' . __( 'Request Membership', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_send_membership_request' ) . '">' . __( 'Request Membership', 'buddypress' ) . '</a>';
    12341236                }
    12351237        }
  • buddypress/bp-themes/bp-default/groups/create.php

    diff -ur plugins.orig/buddypress/bp-themes/bp-default/groups/create.php plugins/buddypress/bp-themes/bp-default/groups/create.php
    old new  
    5858                                        <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4>
    5959
    6060                                        <div class="radio">
    61                                                 <label><input type="radio" name="group-status" value="public"<?php if ( 'public' == bp_get_new_group_status() || !bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> />
    62                                                         <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong>
    63                                                         <ul>
    64                                                                 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li>
    65                                                                 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    66                                                                 <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li>
    67                                                         </ul>
    68                                                 </label>
    69 
    70                                                 <label><input type="radio" name="group-status" value="private"<?php if ( 'private' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> />
    71                                                         <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong>
    72                                                         <ul>
    73                                                                 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li>
    74                                                                 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    75                                                                 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    76                                                         </ul>
    77                                                 </label>
     61<?php
     62        global $bp;
    7863
    79                                                 <label><input type="radio" name="group-status" value="hidden"<?php if ( 'hidden' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> />
    80                                                         <strong><?php _e('This is a hidden group', 'buddypress'); ?></strong>
     64        $new_group_status = bp_get_new_group_status();
     65        if ( !$new_group_status )
     66                $new_group_status = groups_get_default_creation_status();
     67
     68        foreach ( $bp->groups->valid_status as $group_status ) {
     69                if ( is_super_admin() || groups_is_allowed_status( $group_status ) ) { ?>
     70                                                <label><input type="radio" name="group-status" value="<?php echo esc_attr($group_status) ?>"<?php if ( $group_status == $new_group_status ) { ?> checked="checked"<?php } ?> />
     71                                                        <strong><?php _e( 'This is a '.$group_status.' group', 'buddypress' ); ?></strong>
    8172                                                        <ul>
    82                                                                 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li>
    83                                                                 <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>
    84                                                                 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
     73                                                                <li><?php group_membership_request_description( 'public' ); ?></li>
     74                                                                <li><?php group_listing_visibility_description( 'public' ); ?></li>
     75                                                                <li><?php group_content_visibility_description( 'public' ); ?></li>
    8576                                                        </ul>
    8677                                                </label>
     78<?php
     79                }
     80        }
     81?>
    8782                                        </div>
    8883
    8984                                        <h4><?php _e( 'Group Invitations', 'buddypress' ); ?></h4>
  • buddypress/bp-themes/bp-default/groups/single/admin.php

    diff -ur plugins.orig/buddypress/bp-themes/bp-default/groups/single/admin.php plugins/buddypress/bp-themes/bp-default/groups/single/admin.php
    old new  
    6060                        <input type="radio" name="group-status" value="public"<?php bp_group_show_status_setting( 'public' ); ?> />
    6161                        <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong>
    6262                        <ul>
    63                                 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li>
    64                                 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    65                                 <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li>
     63                                <li><?php group_membership_request_description( 'public' ); ?></li>
     64                                <li><?php group_listing_visibility_description( 'public' ); ?></li>
     65                                <li><?php group_content_visibility_description( 'public' ); ?></li>
    6666                        </ul>
    6767                </label>
    6868
     
    7070                        <input type="radio" name="group-status" value="private"<?php bp_group_show_status_setting( 'private' ); ?> />
    7171                        <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong>
    7272                        <ul>
    73                                 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li>
    74                                 <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    75                                 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
     73                                <li><?php group_membership_request_description( 'private' ); ?></li>
     74                                <li><?php group_listing_visibility_description( 'private' ); ?></li>
     75                                <li><?php group_content_visibility_description( 'private' ); ?></li>
    7676                        </ul>
    7777                </label>
    7878
     
    8080                        <input type="radio" name="group-status" value="hidden"<?php bp_group_show_status_setting( 'hidden' ); ?> />
    8181                        <strong><?php _e( 'This is a hidden group', 'buddypress' ); ?></strong>
    8282                        <ul>
    83                                 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li>
    84                                 <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>
    85                                 <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
     83                                <li><?php group_membership_request_description( 'hidden' ); ?></li>
     84                                <li><?php group_listing_visibility_description( 'hidden' ); ?></li>
     85                                <li><?php group_content_visibility_description( 'hidden' ); ?></li>
    8686                        </ul>
    8787                </label>
    8888        </div>
  • buddypress/bp-themes/bp-default/_inc/ajax.php

    diff -ur plugins.orig/buddypress/bp-themes/bp-default/_inc/ajax.php plugins/buddypress/bp-themes/bp-default/_inc/ajax.php
    old new  
    735735                return;
    736736
    737737        if ( ! groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) {
    738                 if ( 'public' == $group->status ) {
     738            if ( groups_is_membership_request_allowed_status( $group->status ) ) {
     739                if ( ! groups_is_membership_request_moderated_status( $group->status ) ) {
    739740                        check_ajax_referer( 'groups_join_group' );
    740741
    741742                        if ( ! groups_join_group( $group->id ) ) {
     
    744745                                echo '<a id="group-' . esc_attr( $group->id ) . '" class="leave-group" rel="leave" title="' . __( 'Leave Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
    745746                        }
    746747
    747                 } elseif ( 'private' == $group->status ) {
     748                } else {
    748749
    749750                        // If the user has already been invited, then this is
    750751                        // an Accept Invitation button
     
    768769                                }
    769770                        }
    770771                }
    771 
     772            }
    772773        } else {
    773774                check_ajax_referer( 'groups_leave_group' );
    774775
    775776                if ( ! groups_leave_group( $group->id ) ) {
    776777                        _e( 'Error leaving group', 'buddypress' );
    777                 } elseif ( 'public' == $group->status ) {
    778                         echo '<a id="group-' . esc_attr( $group->id ) . '" class="join-group" rel="join" title="' . __( 'Join Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>';
    779                 } elseif ( 'private' == $group->status ) {
     778                } elseif ( groups_is_membership_request_moderated_status( $group->status ) ) {
    780779                        echo '<a id="group-' . esc_attr( $group->id ) . '" class="request-membership" rel="join" title="' . __( 'Request Membership', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_send_membership_request' ) . '">' . __( 'Request Membership', 'buddypress' ) . '</a>';
     780                } elseif ( groups_is_membership_request_allowed_status( $group->status ) ) {
     781                        echo '<a id="group-' . esc_attr( $group->id ) . '" class="join-group" rel="join" title="' . __( 'Join Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>';
    781782                }
    782783        }
    783784