Skip to content

Commit

Permalink
Restructure args array passed when checking 'view_private_members_of_…
Browse files Browse the repository at this point in the history
…group' cap.

This is necessary because of the way that `bp_current_user_can()`
interprets an integer `$args` param as a site ID.

See cuny-academic-commons/commons-in-a-box#458.
  • Loading branch information
boonebgorges committed Nov 18, 2024
1 parent 0135215 commit 7550e87
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
2 changes: 1 addition & 1 deletion includes/portfolios.php
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ function openlab_portfolio_list_group_display() {
$portfolio_data = openlab_get_group_member_portfolios();

// Hide private-member portfolios from non-members.
if ( current_user_can( 'view_private_members_of_group', $group->id ) ) {
if ( current_user_can( 'view_private_members_of_group', [ 'group_id' => $group->id ] ) ) {
$group_private_members = [];
} else {
$group_private_members = openlab_get_private_members_of_group( $group->id );
Expand Down
12 changes: 10 additions & 2 deletions includes/private-group-membership.php
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ function openlab_filter_docs_query_to_exclude_private_group_members( $args, $doc

$group_id = $docs_query->query_args['group_id'];

if ( bp_current_user_can( 'view_private_members_of_group', $group_id ) ) {
if ( bp_current_user_can( 'view_private_members_of_group', [ 'group_id' => $group_id ] ) ) {
return $args;
}

Expand Down Expand Up @@ -361,7 +361,15 @@ function openlab_filter_map_meta_cap_for_private_group_members( $caps, $cap, $us
return $caps;
}

$group_id = isset( $args[0] ) ? intval( $args[0] ) : bp_get_current_group_id();
// Due to confusing behavior by BuddyPress, $args can be nested in some cases.
if ( isset( $args['group_id'] ) ) {
$group_id = intval( $args['group_id'] );
} elseif ( isset( $args[0]['group_id'] ) ) {
$group_id = intval( $args[0]['group_id'] );
} else {
$group_id = bp_get_current_group_id();
}

if ( ! $group_id ) {
return $caps;
}
Expand Down

0 comments on commit 7550e87

Please sign in to comment.