Skip to:
Content

BuddyPress.org

Ticket #6095: buddypress-2.1.1-status.patch

File buddypress-2.1.1-status.patch, 35.0 KB (added by tandreatta, 10 years ago)
  • buddypress/bp-groups/bp-groups-actions.php

    diff -ur ../plugins.orig/buddypress/bp-groups/bp-groups-actions.php buddypress/bp-groups/bp-groups-actions.php
    old new  
    169169                }
    170170
    171171                if ( 'group-settings' == bp_get_groups_current_create_step() ) {
    172                         $group_status = 'public';
    173172                        $group_enable_forum = 1;
    174173
    175174                        if ( !isset($_POST['group-show-forum']) ) {
     
    181180                                }
    182181                        }
    183182
    184                         if ( 'private' == $_POST['group-status'] )
    185                                 $group_status = 'private';
    186                         else if ( 'hidden' == $_POST['group-status'] )
    187                                 $group_status = 'hidden';
     183                        if ( groups_is_valid_status( $_POST['group-status'] ) )
     184                                $group_status = $_POST['group-status'];
     185                        else
     186                                $group_status = 'public';
    188187
    189188                        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 ) ) ) {
    190189                                bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' );
  • buddypress/bp-groups/bp-groups-adminbar.php

    diff -ur ../plugins.orig/buddypress/bp-groups/bp-groups-adminbar.php 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_membership_request_moderated( bp_get_group_status( $bp->groups->current_group ) ) ) {
    9292                $wp_admin_bar->add_menu( array(
    9393                        'parent' => $bp->group_admin_menu_id,
    9494                        'id'     => 'membership-requests',
  • buddypress/bp-groups/bp-groups-buddybar.php

    diff -ur ../plugins.orig/buddypress/bp-groups/bp-groups-buddybar.php 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_membership_request_moderated( $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-functions.php

    diff -ur ../plugins.orig/buddypress/bp-groups/bp-groups-functions.php buddypress/bp-groups/bp-groups-functions.php
    old new  
    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_membership_request_moderated( $status ) )
    228228                groups_accept_all_pending_membership_requests( $group->id );
    229229
    230230        // Now update the status
     
    291291}
    292292
    293293/**
     294 * Check if this group status (eg 'private') allows membership requests.
     295 *
     296 * @param string $status Status to check.
     297 * @return bool True if status requires join moderation, otherwise false.
     298 */
     299function groups_membership_request_allowed( $status ) {
     300        global $bp;
     301
     302        return in_array( $status, $bp->groups->membership_request_allowed_status );
     303}
     304
     305/**
     306 * Check if membership request to this group status (eg 'private') is moderated.
     307 *
     308 * @param string $status Status to check.
     309 * @return bool True if status allows joining, otherwise false.
     310 */
     311function groups_membership_request_moderated( $status ) {
     312        global $bp;
     313
     314        return in_array( $status, $bp->groups->membership_request_moderated_status );
     315}
     316
     317/**
     318 * Check a group status (eg 'private') against the whitelist of creation statuses.
     319 *
     320 * @param string $status Status to check.
     321 * @return bool True if status is allowed, otherwise false.
     322 */
     323function groups_is_valid_creation_status( $status ) {
     324        global $bp;
     325
     326        return in_array( $status, (array) $bp->groups->valid_creation_status );
     327}
     328
     329/**
     330 * Display membership request description for group status.
     331 *
     332 * @param string $status Status to check.
     333 */
     334function group_membership_request_description( $status ) {
     335   if ( groups_membership_request_moderated( $status ) )
     336     _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' );
     337   elseif ( groups_membership_request_allowed( $status ) )
     338     _e( 'Any site member can join this group.', 'buddypress' );
     339   else
     340     _e( 'Only users who are invited can join the group.', 'buddypress' );
     341}
     342
     343/**
    294344 * Provide a unique, sanitized version of a group slug.
    295345 *
    296346 * @param string $slug Group slug to check.
  • buddypress/bp-groups/bp-groups-loader.php

    diff -ur ../plugins.orig/buddypress/bp-groups/bp-groups-loader.php 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 $valid_creation_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        /**
    83111         * Start the groups component creation process.
    84112         *
    85113         * @since BuddyPress (1.5.0)
     
    292320                        'hidden'
    293321                ) );
    294322
     323                $this->valid_creation_status = apply_filters( 'groups_valid_creation_status', array(
     324                        'public',
     325                        'private',
     326                        'hidden'
     327                ) );
     328
     329
     330                $this->membership_request_allowed_status = apply_filters( 'groups_membership_request_allowed', array(
     331                        'public',
     332                        'private'
     333                ) );
     334
     335                $this->membership_request_moderated_status = apply_filters( 'groups_membership_request_moderated', array(
     336                        'private'
     337                ) );
     338
    295339                // Auto join group when non group member performs group activity
    296340                $this->auto_join = defined( 'BP_DISABLE_AUTO_GROUP_JOIN' ) && BP_DISABLE_AUTO_GROUP_JOIN ? false : true;
    297341        }
     
    440484                        if ( is_user_logged_in() &&
    441485                                 ! $this->current_group->is_user_member &&
    442486                                 ! groups_check_for_membership_request( bp_loggedin_user_id(), $this->current_group->id ) &&
    443                                  $this->current_group->status == 'private' &&
     487                                 groups_membership_request_allowed( $this->current_group->status ) &&
     488                                 groups_membership_request_moderated( $this->current_group->status ) &&
    444489                                 ! groups_check_user_has_invite( bp_loggedin_user_id(), $this->current_group->id )
    445490                                ) {
    446491
  • buddypress/bp-groups/bp-groups-screens.php

    diff -ur ../plugins.orig/buddypress/bp-groups/bp-groups-screens.php 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_membership_request_allowed($bp->groups->current_group->status) &&
     156                             !groups_membership_request_moderated($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_membership_request_allowed($bp->groups->current_group->status) &&
     382                                   !groups_membership_request_moderated($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_membership_request_moderated( $bp->groups->current_group->status ) )
    520528                return false;
    521529
    522530        // If the user is already invited, accept invitation
     
    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_membership_request_moderated( $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 buddypress/bp-groups/bp-groups-template.php
    old new  
    711711                } else if ( 'private' == $group->status ) {
    712712                        $type = __( "Private Group", "buddypress" );
    713713                } else {
    714                         $type = ucwords( $group->status ) . ' ' . __( 'Group', 'buddypress' );
     714                        $type = sprintf ( __( '%s Group', 'buddypress' ), ucwords( $group->status ) );
    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_membership_request_moderated( $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_membership_request_allowed($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_membership_request_moderated($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_membership_request_moderated( $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 buddypress/bp-templates/bp-legacy/buddypress/groups/create.php
    old new  
    5151                                <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4>
    5252
    5353                                <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>
     54<?php if ( is_super_admin() || groups_is_valid_creation_status( 'public' ) ) : ?>
     55                                        <label>
     56                                                <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>
    5557                                        <ul>
    56                                                 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li>
     58                                                <li><?php group_membership_request_description( 'public' ); ?></li>
    5759                                                <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    5860                                                <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li>
    5961                                        </ul>
     62<?php endif; ?>
    6063
    61 
     64<?php if ( is_super_admin() || groups_is_valid_creation_status( 'private' ) ) : ?>
    6265                                        <label>
    6366                                                <input type="radio" name="group-status" value="private"<?php if ( 'private' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> />
    6467                                                <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong>
    6568                                        </label>
    6669                                        <ul>
    67                                                 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li>
     70                                                <li><?php group_membership_request_description( 'private' ); ?></li>
    6871                                                <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    6972                                                <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    7073                                        </ul>
     74<?php endif; ?>
     75
    7176
     77<?php if ( is_super_admin() || groups_is_valid_creation_status( 'hidden' ) ) : ?>
    7278
    7379                                        <label>
    7480                                                <input type="radio" name="group-status" value="hidden"<?php if ( 'hidden' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> />
    7581                                                <strong><?php _e('This is a hidden group', 'buddypress' ); ?></strong>
    7682                                        </label>
    7783                                        <ul>
    78                                                 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li>
     84                                                <li><?php group_membership_request_description( 'hidden' ); ?></li>
    7985                                                <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>
    8086                                                <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    8187                                        </ul>
     88<?php endif; ?>
    8289
    8390                                </div>
    8491
     
    306313
    307314</div>
    308315
    309 <?php do_action( 'bp_after_create_group_page' ); ?>
    310  No newline at end of file
     316<?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 buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php
    old new  
    5555
    5656        <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4>
    5757
     58<?php
     59
     60$current_group_status = bp_get_group_status();
     61if (!is_super_admin() && !is_valid_creation_status( $current_group_status ) ) : ?>
     62        <div class="radio">
     63                <label>
     64                        <input type="hidden" name="group-status" value="<?php
     65                                echo esc_attr($current_group_status);
     66                        ?>" />
     67                        <strong>
     68        <?php
     69                switch ($current_group_status) {
     70                  case 'public':
     71                        _e( 'This is a public group', 'buddypress' );
     72                        break;
     73                  case 'private':
     74                        _e( 'This is a private group', 'buddypress' );
     75                        break;
     76                  case 'hidden':
     77                        _e( 'This is a hidden group', 'buddypress' );
     78                        break;
     79                  default:
     80                        printf( __( 'This is a %s group', 'buddypress' ),
     81                                $current_group_status );
     82                        break;
     83                }
     84        ?>
     85                        </strong>
     86                </label>
     87        </div>
     88<?php else : ?>
    5889        <div class="radio">
     90        <?php if (is_super_admin() || is_valid_creation_status( 'public' ) ) : ?>
    5991                <label>
    6092                        <input type="radio" name="group-status" value="public"<?php bp_group_show_status_setting( 'public' ); ?> />
    6193                        <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong>
    6294                        <ul>
    63                                 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li>
     95                                <li><?php group_membership_request_description( 'public' ); ?></li>
    6496                                <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    6597                                <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li>
    6698                        </ul>
    6799                </label>
     100        <?php endif; ?>
    68101
     102        <?php if (is_super_admin() || is_valid_creation_status( 'private' ) ) : ?>
    69103                <label>
    70104                        <input type="radio" name="group-status" value="private"<?php bp_group_show_status_setting( 'private' ); ?> />
    71105                        <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong>
    72106                        <ul>
    73                                 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li>
     107                                <li><?php group_membership_request_description( 'public' ); ?></li>
    74108                                <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    75109                                <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    76110                        </ul>
    77111                </label>
     112        <?php endif; ?>
    78113
     114        <?php if (is_super_admin() || is_valid_creation_status( 'hidden' ) ) : ?>
    79115                <label>
    80116                        <input type="radio" name="group-status" value="hidden"<?php bp_group_show_status_setting( 'hidden' ); ?> />
    81117                        <strong><?php _e( 'This is a hidden group', 'buddypress' ); ?></strong>
    82118                        <ul>
    83                                 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li>
     119                                <li><?php group_membership_request_description( 'public' ); ?></li>
    84120                                <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>
    85121                                <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    86122                        </ul>
    87123                </label>
     124
     125        <?php endif; ?>
     126
     127<?php endif; ?>
     128
    88129        </div>
    89130
    90131        <hr />
  • buddypress/bp-templates/bp-legacy/buddypress-functions.php

    diff -ur ../plugins.orig/buddypress/bp-templates/bp-legacy/buddypress-functions.php 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_membership_request_allowed($group->status) ) {
     1192                if ( !groups_membership_request_moderated($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_membership_request_moderated($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_membership_request_allowed($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 buddypress/bp-themes/bp-default/groups/create.php
    old new  
    5858                                        <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4>
    5959
    6060                                        <div class="radio">
     61
     62<?php if ( is_super_admin() || groups_is_valid_creation_status( 'public' ) ) : ?>
    6163                                                <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 } ?> />
    6264                                                        <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong>
    6365                                                        <ul>
    64                                                                 <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li>
     66                                                                <li><?php group_membership_request_description( 'public' ); ?></li>
    6567                                                                <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    6668                                                                <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li>
    6769                                                        </ul>
    6870                                                </label>
     71<?php endif; ?>
    6972
     73<?php if ( is_super_admin() || groups_is_valid_creation_status( 'private' ) ) : ?>
    7074                                                <label><input type="radio" name="group-status" value="private"<?php if ( 'private' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> />
    7175                                                        <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong>
    7276                                                        <ul>
    73                                                                 <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li>
     77                                                                <li><?php group_membership_request_description( 'private' ); ?></li>
    7478                                                                <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    7579                                                                <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    7680                                                        </ul>
    7781                                                </label>
     82<?php endif; ?>
    7883
     84<?php if ( is_super_admin() || groups_is_valid_creation_status( 'hidden' ) ) : ?>
    7985                                                <label><input type="radio" name="group-status" value="hidden"<?php if ( 'hidden' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> />
    8086                                                        <strong><?php _e('This is a hidden group', 'buddypress'); ?></strong>
    8187                                                        <ul>
    82                                                                 <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li>
     88                                                                <li><?php group_membership_request_description( 'hidden' ); ?></li>
    8389                                                                <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>
    8490                                                                <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    8591                                                        </ul>
    8692                                                </label>
     93<?php endif; ?>
    8794                                        </div>
    8895
    8996                                        <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 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>
     63                                <li><?php group_membership_request_description( 'public' ); ?></li>
    6464                                <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    6565                                <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li>
    6666                        </ul>
     
    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>
     73                                <li><?php group_membership_request_description( 'private' ); ?></li>
    7474                                <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li>
    7575                                <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    7676                        </ul>
     
    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>
     83                                <li><?php group_membership_request_description( 'hidden' ); ?></li>
    8484                                <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li>
    8585                                <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li>
    8686                        </ul>
  • buddypress/bp-themes/bp-default/_inc/ajax.php

    diff -ur ../plugins.orig/buddypress/bp-themes/bp-default/_inc/ajax.php 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_membership_request_allowed( $group->status ) ) {
     739                if ( ! groups_membership_request_moderated( $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_membership_request_moderated( $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_membership_request_allowed( $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