BP_REST_Forums_Endpoint::can_access_content( int $forum_id, bool $create = false )

Check current access permission.

Description

Parameters

$forum_id

(Required) ID of the forum.

$create

(Optional) force validate.

Default value: false

Return

(bool)

Source

File: bp-forums/classes/class-bp-rest-forums-endpoint.php

1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
public function can_access_content( $forum_id, $create = false ) {
 
    if (
        function_exists( 'bbp_is_forum_group_forum' )
        && bbp_is_forum_group_forum( $forum_id )
    ) {
        $group_ids = bbp_get_forum_group_ids( $forum_id );
        $user_id   = get_current_user_id();
        $flag      = false;
        if ( ! empty( $group_ids ) ) {
            foreach ( $group_ids as $group_id ) {
 
                if ( function_exists( 'bp_is_active' ) && bp_is_active( 'groups' ) ) {
 
                    // if we checking access for showing forums, topic and replies then we need to check group is public or not.
                    if ( ! $create ) {
                        $group = groups_get_group( $group_id );
                        if ( 'public' === $group->status ) {
                            $flag = true;
                        }
                    }
 
                    if (
                        groups_is_user_member( $user_id, $group_id )
                        || groups_is_user_mod( $user_id, $group_id )
                        || groups_is_user_admin( $user_id, $group_id )
                        || bbp_is_user_keymaster( $user_id )
                    ) {
                        $flag = true;
                    }
                }
            }
        }
 
        return $flag;
 
    } elseif (
        empty( $forum_id )
        || ! bbp_user_can_view_forum(
            array(
                'forum_id' => $forum_id,
            )
        )
    ) {
        return false;
    } else {
        return true;
    }
}

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.