bbp_map_primary_meta_caps( array $caps = array(), string $cap = '', int $user_id, array $args = array() )
Maps primary capabilities
Description Description
Parameters Parameters
- $caps
-
(Optional) Capabilities for meta capability.
Default value: array()
- $cap
-
(Optional) Capability name.
Default value: ''
- $user_id
-
(Required) User id.
- $args
-
(Optional) Arguments.
Default value: array()
Return Return
(array) Actual capabilities for meta capability
Source Source
File: includes/users/capabilities.php
function bbp_map_primary_meta_caps( $caps = array(), $cap = '', $user_id = 0, $args = array() ) { // What capability is being checked? switch ( $cap ) { case 'spectate' : // Do not allow inactive users. if ( bbp_is_user_inactive( $user_id ) ) { $caps = array( 'do_not_allow' ); // Default to the current cap. } else { $caps = array( $cap ); } break; case 'participate' : // Do not allow inactive users. if ( bbp_is_user_inactive( $user_id ) ) { $caps = array( 'do_not_allow' ); // Default to the current cap. } else { $caps = array( $cap ); } break; case 'moderate' : // Do not allow inactive users. if ( bbp_is_user_inactive( $user_id ) ) { $caps = array( 'do_not_allow' ); // Keymasters can always moderate. } elseif ( bbp_is_user_keymaster( $user_id ) ) { $caps = array( 'spectate' ); // Check if user can moderate forum. } elseif ( bbp_allow_forum_mods() ) { $caps = array( $cap ); // Bail if no post to check. if ( empty( $args[0] ) ) { break; } // Get the post. $_post = get_post( $args[0] ); if ( empty( $_post ) ) { break; } // Get forum ID for specific type of post. switch ( $_post->post_type ) { // Forum. case bbp_get_forum_post_type() : $forum_id = bbp_get_forum_id( $_post->ID ); break; // Topic. case bbp_get_topic_post_type() : $forum_id = bbp_get_topic_forum_id( $_post->ID ); break; // Reply. case bbp_get_reply_post_type() : $forum_id = bbp_get_reply_forum_id( $_post->ID ); break; // Any other post type defaults to 0. default : $forum_id = 0; break; } // Bail if no forum ID. if ( empty( $forum_id ) ) { break; } // User is mod of this forum if ( bbp_is_object_of_user( $forum_id, $user_id, '_bbp_moderator_id' ) ) { $caps = array( 'spectate' ); } } break; /** Super Moderators **************************************************/ case 'edit_user' : case 'edit_users' : // Moderators can edit users if super moderators is enabled if ( bbp_allow_super_mods() ) { // Get the user ID $_user_id = ! empty( $args[0] ) ? (int) $args[0] : bbp_get_displayed_user_id(); // Users can always edit themselves, so only map for others if ( ! empty( $_user_id ) && ( $_user_id !== $user_id ) ) { // Super moderators cannot edit keymasters if ( ! bbp_is_user_keymaster( $_user_id ) ) { $caps = array( 'moderate' ); } } } break; } // Filter & return return (array) apply_filters( 'bbp_map_primary_meta_caps', $caps, $cap, $user_id, $args ); }
Changelog Changelog
Version | Description |
---|---|
2.2.0 | Introduced. |