Skip to:
Content

BuddyPress.org

Ticket #7494: 7494.1.diff

File 7494.1.diff, 4.1 KB (added by dcavins, 3 years ago)

Add $is_visible and $is_user_member properties to BP_Groups_Group object. Use magic methods in BP Groups Component single group setup.

  • src/bp-groups/classes/class-bp-groups-component.php

    diff --git src/bp-groups/classes/class-bp-groups-component.php src/bp-groups/classes/class-bp-groups-component.php
    index 8515a5b..1df6542 100644
    class BP_Groups_Component extends BP_Component { 
    242242                                bp_update_is_item_mod  ( groups_is_user_mod  ( bp_loggedin_user_id(), $this->current_group->id ), 'groups' );
    243243                        }
    244244
    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;
    257                         }
    258 
    259245                        // Check once if the current group has a custom front template.
    260246                        $this->current_group->front_template = bp_groups_get_front_template( $this->current_group );
    261247
    class BP_Groups_Component extends BP_Component { 
    557543                        // member and does not have an outstanding invitation,
    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' &&
    563549                                 ! groups_check_user_has_invite( bp_loggedin_user_id(), $this->current_group->id )
  • src/bp-groups/classes/class-bp-groups-group.php

    diff --git src/bp-groups/classes/class-bp-groups-group.php src/bp-groups/classes/class-bp-groups-group.php
    index a851750..1eee026 100644
    class BP_Groups_Group { 
    126126        protected $is_member;
    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         *
    131140         * @since 1.9.0
    class BP_Groups_Group { 
    158167        protected $user_has_access;
    159168
    160169        /**
     170         * Can the current user know that this group exists?
     171         *
     172         * @since 2.9.0
     173         * @var bool
     174         */
     175        protected $is_visible;
     176
     177        /**
    161178         * Raw arguments passed to the constructor.
    162179         *
    163180         * @since 2.0.0
    class BP_Groups_Group { 
    416433                                return $this->get_mods();
    417434
    418435                        case 'is_member' :
     436                        case 'is_user_member' :
    419437                                return $this->get_is_member();
    420438
    421439                        case 'is_invited' :
    class BP_Groups_Group { 
    427445                        case 'user_has_access' :
    428446                                return $this->get_user_has_access();
    429447
     448                        case 'is_visible' :
     449                                return $this->is_visible();
     450
    430451                        default :
    431452                                return isset( $this->{$key} ) ? $this->{$key} : null;
    432453                }
    class BP_Groups_Group { 
    448469                        case 'admins' :
    449470                        case 'is_invited' :
    450471                        case 'is_member' :
     472                        case 'is_user_member' :
    451473                        case 'is_pending' :
    452474                        case 'last_activity' :
    453475                        case 'mods' :
    454476                        case 'total_member_count' :
    455477                        case 'user_has_access' :
     478                        case 'is_visible' :
    456479                        case 'forum_id' :
    457480                                return true;
    458481
    class BP_Groups_Group { 
    604627                return $this->user_has_access;
    605628        }
    606629
     630        /**
     631         * Checks whether the current user can know the group exists.
     632         *
     633         * @since 2.9.0
     634         *
     635         * @return bool
     636         */
     637        protected function is_visible() {
     638                if ( isset( $this->is_visible ) ) {
     639                        return $this->is_visible;
     640                }
     641
     642                if ( 'hidden' === $this->status ) {
     643
     644                        // Assume user can not know about hidden groups.
     645                        $this->is_visible = false;
     646
     647                        // Group members or community moderators have access.
     648                        if ( ( is_user_logged_in() && $this->get_is_member() ) || bp_current_user_can( 'bp_moderate' ) ) {
     649                                $this->is_visible = true;
     650                        }
     651                } else {
     652                        $this->is_visible = true;
     653                }
     654
     655                return $this->is_visible;
     656        }
     657
    607658        /** Static Methods ****************************************************/
    608659
    609660        /**