Skip to:
Content

BuddyPress.org

Changeset 11544


Ignore:
Timestamp:
04/28/2017 02:36:15 PM (2 years ago)
Author:
dcavins
Message:

Add $is_visible and $is_user_member properties to BP_Groups_Group object.

During single group setup in the BP_Groups_Component, we're doing
some checks that duplicate logic that is, or should be, handled in
BP_Groups_Group. Then, BP_Groups_Component can rely on
BP_Groups_Group to provide the details via recently added magic
methods.

Note: $is_user_member is an alias of $is_member for backward
compatibility.

Fixes #7494.

Location:
trunk/src/bp-groups/classes
Files:
2 edited

Legend:

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

    r11405 r11544  
    241241            if ( ! bp_is_item_admin() ) {
    242242                bp_update_is_item_mod  ( groups_is_user_mod  ( bp_loggedin_user_id(), $this->current_group->id ), 'groups' );
    243             }
    244 
    245             // Is the logged in user a member of the group?
    246             if ( ( is_user_logged_in() && groups_is_user_member( bp_loggedin_user_id(), $this->current_group->id ) ) ) {
    247                 $this->current_group->is_user_member = true;
    248             } else {
    249                 $this->current_group->is_user_member = false;
    250             }
    251 
    252             // Should this group be visible to the logged in user?
    253             if ( 'public' == $this->current_group->status || $this->current_group->is_user_member ) {
    254                 $this->current_group->is_visible = true;
    255             } else {
    256                 $this->current_group->is_visible = false;
    257243            }
    258244
     
    558544            // show a "Request Membership" nav item.
    559545            if ( is_user_logged_in() &&
    560                  ! $this->current_group->is_user_member &&
     546                 ! $this->current_group->is_member &&
    561547                 ! groups_check_for_membership_request( bp_loggedin_user_id(), $this->current_group->id ) &&
    562548                 $this->current_group->status == 'private' &&
  • trunk/src/bp-groups/classes/class-bp-groups-group.php

    r11533 r11544  
    127127
    128128    /**
     129     * Is the current user a member of this group?
     130     * Alias of $is_member for backward compatibility.
     131     *
     132     * @since 2.9.0
     133     * @var bool
     134     */
     135    protected $is_user_member;
     136
     137    /**
    129138     * Does the current user have an outstanding invitation to this group?
    130139     *
     
    157166     */
    158167    protected $user_has_access;
     168
     169    /**
     170     * Can the current user know that this group exists?
     171     *
     172     * @since 2.9.0
     173     * @var bool
     174     */
     175    protected $is_visible;
    159176
    160177    /**
     
    417434
    418435            case 'is_member' :
     436            case 'is_user_member' :
    419437                return $this->get_is_member();
    420438
     
    427445            case 'user_has_access' :
    428446                return $this->get_user_has_access();
     447
     448            case 'is_visible' :
     449                return $this->is_visible();
    429450
    430451            default :
     
    449470            case 'is_invited' :
    450471            case 'is_member' :
     472            case 'is_user_member' :
    451473            case 'is_pending' :
    452474            case 'last_activity' :
     
    454476            case 'total_member_count' :
    455477            case 'user_has_access' :
     478            case 'is_visible' :
    456479            case 'forum_id' :
    457480                return true;
     
    606629
    607630        return $this->user_has_access;
     631    }
     632
     633    /**
     634     * Checks whether the current user can know the group exists.
     635     *
     636     * @since 2.9.0
     637     *
     638     * @return bool
     639     */
     640    protected function is_visible() {
     641        if ( isset( $this->is_visible ) ) {
     642            return $this->is_visible;
     643        }
     644
     645        if ( 'hidden' === $this->status ) {
     646
     647            // Assume user can not know about hidden groups.
     648            $this->is_visible = false;
     649
     650            // Group members or community moderators have access.
     651            if ( ( is_user_logged_in() && $this->get_is_member() ) || bp_current_user_can( 'bp_moderate' ) ) {
     652                $this->is_visible = true;
     653            }
     654        } else {
     655            $this->is_visible = true;
     656        }
     657
     658        return $this->is_visible;
    608659    }
    609660
Note: See TracChangeset for help on using the changeset viewer.