Skip to:
Content

BuddyPress.org

Ticket #5032: 5032.003.diff

File 5032.003.diff, 10.7 KB (added by Mike_Cowobo, 6 years ago)

Changes 'Request Membership' to 'Accept Invite' for invited users

  • bp-groups/bp-groups-classes.php

    class BP_Groups_Member { 
    14751475                return $wpdb->get_var( $wpdb->prepare( $sql, $user_id, $group_id ) );
    14761476        }
    14771477
     1478        function get_invites_and_requests( $user_id, $group_id ) {
     1479                global $wpdb, $bp;
     1480
     1481                if ( empty( $user_id ) )
     1482                        return false;
     1483
     1484                $sql = "SELECT id, inviter_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND is_banned = 0";
     1485
     1486                return $wpdb->get_results( $wpdb->prepare( $sql, $user_id, $group_id ), "ARRAY_A" );
     1487        }
     1488
    14781489        function delete_invite( $user_id, $group_id ) {
    14791490                global $wpdb, $bp;
    14801491
  • bp-groups/bp-groups-functions.php

    function groups_invite_user( $args = '' ) { 
    655655                return false;
    656656
    657657        if ( !groups_is_user_member( $user_id, $group_id ) && !groups_check_user_has_invite( $user_id, $group_id, 'all' ) ) {
     658
     659                // Check if the user already requested membership - if so, simply accept membership request
     660                if ( $membership_id = groups_check_for_membership_request ( $user_id, $group_id ) ) {
     661                        groups_accept_membership_request ($membership_id, $user_id, $group_id);
     662                        return true;
     663                }
     664
    658665                $invite                = new BP_Groups_Member;
    659666                $invite->group_id      = $group_id;
    660667                $invite->user_id       = $user_id;
    function groups_send_membership_request( $requesting_user_id, $group_id ) { 
    872879        if ( groups_is_user_member( $requesting_user_id, $group_id ) || groups_is_user_banned( $requesting_user_id, $group_id ) )
    873880                return false;
    874881
     882        // Check if the user is already invited - if so, simply accept invite
     883        if ( groups_check_user_has_invite ( $requesting_user_id, $group_id ) ) {
     884                groups_accept_invite ( $requesting_user_id, $group_id );
     885                return true;
     886        }
     887
    875888        $requesting_user                = new BP_Groups_Member;
    876889        $requesting_user->group_id      = $group_id;
    877890        $requesting_user->user_id       = $requesting_user_id;
    function groups_accept_all_pending_membership_requests( $group_id ) { 
    973986        return true;
    974987}
    975988
     989function groups_check_for_membership_request_and_invite( $user_id, $group_id ) {
     990        $ret = array(
     991                'has_invite'    => false,
     992                'has_request'   => false,
     993        );
     994
     995        $data = BP_Groups_Member::get_invites_and_requests( $user_id, $group_id );
     996        foreach ( $data as $row ) {
     997                if ( $row['inviter_id'] != 0 ) {
     998                        $ret['has_invite'] = true;
     999                } else {
     1000                        $ret['has_request'] = true;
     1001                }
     1002        }
     1003
     1004        return $ret;
     1005}
     1006
    9761007/*** Group Meta ****************************************************/
    9771008
    9781009function groups_delete_groupmeta( $group_id, $meta_key = false, $meta_value = false ) {
  • bp-groups/bp-groups-loader.php

    class BP_Groups_Component extends BP_Component { 
    423423                                 !groups_check_for_membership_request( bp_loggedin_user_id(), $this->current_group->id ) &&
    424424                                 $this->current_group->status == 'private'
    425425                                ) {
     426                                if ( groups_check_user_has_invite( bp_loggedin_user_id(), $this->current_group->id ) )
     427                                        $label = __( 'Accept Invitation', 'buddypress' );
     428                                else
     429                                        $label = __( 'Request Membership', 'buddypress' );
     430
    426431                                $sub_nav[] = array(
    427                                         'name'               => __( 'Request Membership', 'buddypress' ),
     432                                        'name'               => $label,
    428433                                        'slug'               => 'request-membership',
    429434                                        'parent_url'         => $group_link,
    430435                                        'parent_slug'        => $this->current_group->slug,
  • bp-groups/bp-groups-screens.php

    function groups_screen_group_request_membership() { 
    467467        if ( 'private' != $bp->groups->current_group->status )
    468468                return false;
    469469
     470        // If the user is already invited, accept invitation
     471        if ( groups_check_user_has_invite( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
     472                if ( groups_accept_invite( bp_loggedin_user_id(), $bp->groups->current_group->id ) )
     473                        bp_core_add_message( __( 'Group invite accepted', 'buddypress' ) );
     474                else
     475                        bp_core_add_message( __( 'There was an error accepting the group invitation, please try again.', 'buddypress' ), 'error' );
     476                bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) );
     477        }
     478
    470479        // If the user has submitted a request, send it.
    471480        if ( isset( $_POST['group-request-send']) ) {
    472481
    class BP_Groups_Theme_Compat { 
    11151124        /** Single ****************************************************************/
    11161125
    11171126        /**
    1118          * Add custom template hierarchy to theme compat for group pages. 
     1127         * Add custom template hierarchy to theme compat for group pages.
    11191128         *
    11201129         * This is to mirror how WordPress has {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}.
    11211130         *
  • bp-groups/bp-groups-template.php

    function bp_group_join_button( $group = false ) { 
    17801780
    17811781                                case 'private' :
    17821782
    1783                                         // Member has not requested membership yet
    1784                                         if ( !bp_group_has_requested_membership( $group ) ) {
     1783                                        $membership_status = groups_check_for_membership_request_and_invite( bp_loggedin_user_id(), $group->id );
     1784
     1785                                        // Member has invite
     1786                                        if (  $membership_status['has_invite'] ) {
    17851787                                                $button = array(
    1786                                                         'id'                => 'request_membership',
     1788                                                        'id'                => 'accept_invite',
    17871789                                                        'component'         => 'groups',
    17881790                                                        'must_be_logged_in' => true,
    17891791                                                        'block_self'        => false,
    17901792                                                        'wrapper_class'     => 'group-button ' . $group->status,
    17911793                                                        'wrapper_id'        => 'groupbutton-' . $group->id,
    17921794                                                        'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ),
    1793                                                         'link_text'         => __( 'Request Membership', 'buddypress' ),
    1794                                                         'link_title'        => __( 'Request Membership', 'buddypress' ),
    1795                                                         'link_class'        => 'group-button request-membership',
     1795                                                        'link_text'         => __( 'Accept Invitation', 'buddypress' ),
     1796                                                        'link_title'        => __( 'Accept Invitation', 'buddypress' ),
     1797                                                        'link_class'        => 'group-button accept-invite',
    17961798                                                );
    17971799
    17981800                                        // Member has requested membership already
    1799                                         } else {
     1801                                        } elseif ( $membership_status['has_request'] ) {
    18001802                                                $button = array(
    18011803                                                        'id'                => 'membership_requested',
    18021804                                                        'component'         => 'groups',
    function bp_group_join_button( $group = false ) { 
    18091811                                                        'link_title'        => __( 'Request Sent', 'buddypress' ),
    18101812                                                        'link_class'        => 'group-button pending membership-requested',
    18111813                                                );
     1814
     1815                                        // Member has not requested membership yet
     1816                                        } else {
     1817                                                $button = array(
     1818                                                        'id'                => 'request_membership',
     1819                                                        'component'         => 'groups',
     1820                                                        'must_be_logged_in' => true,
     1821                                                        'block_self'        => false,
     1822                                                        'wrapper_class'     => 'group-button ' . $group->status,
     1823                                                        'wrapper_id'        => 'groupbutton-' . $group->id,
     1824                                                        'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ),
     1825                                                        'link_text'         => __( 'Request Membership', 'buddypress' ),
     1826                                                        'link_title'        => __( 'Request Membership', 'buddypress' ),
     1827                                                        'link_class'        => 'group-button request-membership',
     1828                                                );
    18121829                                        }
    18131830
    18141831                                        break;
  • bp-templates/bp-legacy/buddypress-functions.php

    function bp_legacy_theme_ajax_joinleave_group() { 
    10561056                } elseif ( 'private' == $group->status ) {
    10571057                        check_ajax_referer( 'groups_request_membership' );
    10581058
    1059                         if ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) {
     1059                        if ( groups_check_user_has_invite ( bp_loggedin_user_id(), $group->id ) ) {
     1060                                if ( ! groups_accept_invite ( bp_loggedin_user_id(), $group->id ) ) {
     1061                                        _e( 'Error requesting membership', 'buddypress' );
     1062                                } else {
     1063                                        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>';
     1064                                }
     1065                        } elseif ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) {
    10601066                                _e( 'Error requesting membership', 'buddypress' );
    10611067                        } else {
    10621068                                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>';
  • bp-themes/bp-default/_inc/ajax.php

    function bp_dtheme_ajax_joinleave_group() { 
    718718                } elseif ( 'private' == $group->status ) {
    719719                        check_ajax_referer( 'groups_request_membership' );
    720720
    721                         if ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) {
     721                        if ( groups_check_user_has_invite ( bp_loggedin_user_id(), $group->id ) ) {
     722                                if ( ! groups_accept_invite ( bp_loggedin_user_id(), $group->id ) ) {
     723                                        _e( 'Error requesting membership', 'buddypress' );
     724                                } else {
     725                                        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>';
     726                                }
     727                        } elseif ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) {
    722728                                _e( 'Error requesting membership', 'buddypress' );
    723729                        } else {
    724730                                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>';