Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
10/17/2013 07:00:46 PM (12 years ago)
Author:
boonebgorges
Message:

Improve UX flow around overlapping group invites and requests

This changeset introduces a number of improvements to the flow surrounding
invitations and membership requests to private groups:

  • When a user has previously requested membership in a group, add a note to that effect when the user is being invited to the group via the Send Invites interface.
  • When a user has previously requested membership in a group, automatically accept that invitation and add the user to the group when an invitation is sent by an existing group member.
  • When a user has previously been invited to a group, buttons in the group directory and in the group header should read Accept Invitation instead of Request Membership

The end result is a more logical user experience with regard to joining private
groups.

Fixes #5032

Props Mike_Cowobo

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-groups/bp-groups-classes.php

    r7441 r7442  
    3232     */
    3333    public $is_member;
     34
     35    /**
     36     * Does the current user have an outstanding invitation to this group?
     37     *
     38     * @since BuddyPress (1.9.0)
     39     * @var bool
     40     */
     41    public $is_invited;
     42
     43    /**
     44     * Does the current user have a pending membership request to this group?
     45     *
     46     * @since BuddyPress (1.9.0)
     47     * @var bool
     48     */
     49    public $is_pending;
    3450
    3551    /**
     
    7389            $this->total_member_count = groups_get_groupmeta( $this->id, 'total_member_count' );
    7490            $this->is_member          = BP_Groups_Member::check_is_member( bp_loggedin_user_id(), $this->id );
     91            $this->is_invited         = BP_Groups_Member::check_has_invite( bp_loggedin_user_id(), $this->id );
     92            $this->is_pending         = BP_Groups_Member::check_for_membership_request( bp_loggedin_user_id(), $this->id );
    7593
    7694            // If this is a private or hidden group, does the current user have access?
     
    828846        $group_ids = implode( ',', wp_parse_id_list( $group_ids ) );
    829847
    830         // Fetch the logged in users status within each group
    831         $user_status = $wpdb->get_col( $wpdb->prepare( "SELECT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id IN ( {$group_ids} ) AND is_confirmed = 1 AND is_banned = 0", bp_loggedin_user_id() ) );
     848        // Fetch the logged-in user's status within each group
     849        $user_status = $wpdb->get_results( $wpdb->prepare( "SELECT group_id, is_confirmed, invite_sent FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id IN ( {$group_ids} ) AND is_banned = 0", bp_loggedin_user_id() ) );
     850
    832851        for ( $i = 0, $count = count( $paged_groups ); $i < $count; ++$i ) {
    833852            $paged_groups[$i]->is_member = false;
    834853
    835             foreach ( (array) $user_status as $group_id ) {
    836                 if ( $group_id == $paged_groups[$i]->id ) {
    837                     $paged_groups[$i]->is_member = true;
     854            foreach ( (array) $user_status as $group ) {
     855                $is_member = $is_invited = $is_pending = false;
     856                if ( $group->group_id == $paged_groups[ $i ]->id ) {
     857                    // is_confirmed means the user is a member
     858                    if ( $group->is_confirmed ) {
     859                        $is_member = true;
     860
     861                    // invite_sent means the user has been invited
     862                    } else if ( $group->invite_sent ) {
     863                        $is_invited = true;
     864
     865                    // User has sent request, but has not been confirmed
     866                    } else {
     867                        $is_pending = true;
     868                    }
    838869                }
     870
     871                $paged_groups[ $i ]->is_member = $is_member;
     872                $paged_groups[ $i ]->is_invited = $is_invited;
     873                $paged_groups[ $i ]->is_pending = $is_pending;
    839874            }
    840875        }
Note: See TracChangeset for help on using the changeset viewer.