Skip to:
Content

BuddyPress.org

Changeset 13876


Ignore:
Timestamp:
05/27/2024 07:30:17 PM (20 months ago)
Author:
imath
Message:

Groups: improve the way BuddyPress handles public group invites

  • In bp_group_join_button(): use specific arguments in case a user has been invited to join a public group to generate the action button.
  • In BP Legacy, update the bp_legacy_theme_ajax_joinleave_group() ajax callback to move the group request capability check at the right place & remove a wrong extra check about the invite approvement case.

Fixes #9054
Closes https://github.com/buddypress/buddypress/pull/292

Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-groups/bp-groups-template.php

    r13844 r13876  
    34733473     *
    34743474     * @since 11.0.0
     3475     * @since 14.0.0 Handles the case when a user has an invite to join a public group.
    34753476     *
    34763477     * @param BP_Groups_Group $group The group object.
     
    35343535
    35353536                case 'public':
    3536                     $url = wp_nonce_url(
    3537                         bp_get_group_url(
    3538                             $group,
    3539                             bp_groups_get_path_chunks( array( 'join' ) )
    3540                         ),
    3541                         'groups_join_group'
    3542                     );
    3543 
    3544                     $button_args = array(
    3545                         'id'                => 'join_group',
    3546                         'component'         => 'groups',
    3547                         'must_be_logged_in' => true,
    3548                         'block_self'        => false,
    3549                         'wrapper_class'     => 'group-button ' . $group->status,
    3550                         'wrapper_id'        => 'groupbutton-' . $group->id,
    3551                         'link_href'         => $url,
    3552                         'link_text'         => __( 'Join Group', 'buddypress' ),
    3553                         'link_title'        => __( 'Join Group', 'buddypress' ),
    3554                         'link_class'        => 'group-button join-group',
    3555                     );
     3537
     3538                    // Member has outstanding invitation -
     3539                    // show an "Accept Invitation" button.
     3540                    if ( $group->is_invited ) {
     3541                        $url = add_query_arg( 'redirect_to', bp_get_group_url( $group ), bp_get_group_accept_invite_link( $group ) );
     3542
     3543                        $button_args = array(
     3544                            'id'                => 'accept_invite',
     3545                            'component'         => 'groups',
     3546                            'must_be_logged_in' => true,
     3547                            'block_self'        => false,
     3548                            'wrapper_class'     => 'group-button ' . $group->status,
     3549                            'wrapper_id'        => 'groupbutton-' . $group->id,
     3550                            'link_href'         => $url,
     3551                            'link_text'         => __( 'Accept Invitation', 'buddypress' ),
     3552                            'link_title'        => __( 'Accept Invitation', 'buddypress' ),
     3553                            'link_class'        => 'group-button accept-invite',
     3554                        );
     3555
     3556                        // Member has no outstanding invitation -
     3557                        // show a "Join Group" button.
     3558                    } else {
     3559                        $url = wp_nonce_url(
     3560                            bp_get_group_url(
     3561                                $group,
     3562                                bp_groups_get_path_chunks( array( 'join' ) )
     3563                            ),
     3564                            'groups_join_group'
     3565                        );
     3566
     3567                        $button_args = array(
     3568                            'id'                => 'join_group',
     3569                            'component'         => 'groups',
     3570                            'must_be_logged_in' => true,
     3571                            'block_self'        => false,
     3572                            'wrapper_class'     => 'group-button ' . $group->status,
     3573                            'wrapper_id'        => 'groupbutton-' . $group->id,
     3574                            'link_href'         => $url,
     3575                            'link_text'         => __( 'Join Group', 'buddypress' ),
     3576                            'link_title'        => __( 'Join Group', 'buddypress' ),
     3577                            'link_class'        => 'group-button join-group',
     3578                        );
     3579                    }
     3580
    35563581                    break;
    35573582
     
    35743599                        );
    35753600
    3576                     // Member has requested membership but request is pending -
    3577                     // show a "Request Sent" button.
     3601                        // Member has requested membership but request is pending -
     3602                        // show a "Request Sent" button.
    35783603                    } elseif ( $group->is_pending ) {
    35793604                        $button_args = array(
     
    35903615                        );
    35913616
    3592                     // Member has not requested membership yet -
    3593                     // show a "Request Membership" button.
     3617                        // Member has not requested membership yet -
     3618                        // show a "Request Membership" button.
    35943619                    } else {
    35953620                        $url = wp_nonce_url(
  • trunk/src/bp-templates/bp-legacy/buddypress-functions.php

    r13822 r13876  
    77 * @package BuddyPress
    88 * @subpackage BP_Theme_Compat
    9  * @version 12.0.0
     9 * @version 14.0.0
    1010 */
    1111
     
    16111611    if ( groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) {
    16121612        $request_type = 'leave_group';
    1613     } elseif ( groups_check_user_has_invite( bp_loggedin_user_id(), $group->id ) && 'joinleave_group' !== $action ) {
     1613    } elseif ( groups_check_user_has_invite( bp_loggedin_user_id(), $group->id ) ) {
    16141614        $request_type = 'accept_invite';
    16151615    } elseif ( 'private' === $group->status ) {
     
    16421642
    16431643        case 'accept_invite' :
    1644             if ( ! bp_current_user_can( 'groups_request_membership', array( 'group_id' => $group->id ) ) ) {
    1645                 esc_html_e( 'Error accepting invitation', 'buddypress' );
    1646             }
    1647 
    16481644            check_ajax_referer( 'groups_accept_invite' );
    16491645
     
    16651661            check_ajax_referer( 'groups_request_membership' );
    16661662
    1667             if ( ! groups_send_membership_request( [ 'user_id' => bp_loggedin_user_id(), 'group_id' => $group->id ] ) ) {
     1663            if ( ! bp_current_user_can( 'groups_request_membership', array( 'group_id' => $group->id ) ) || ! groups_send_membership_request( [ 'user_id' => bp_loggedin_user_id(), 'group_id' => $group->id ] ) ) {
    16681664                esc_html_e( 'Error requesting membership', 'buddypress' );
    16691665            } else {
Note: See TracChangeset for help on using the changeset viewer.