Skip to:
Content

BuddyPress.org

Changeset 13876


Ignore:
Timestamp:
05/27/2024 07:30:17 PM (2 years 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.