Last active
December 22, 2015 04:58
-
-
Save anandkumar/6420388 to your computer and use it in GitHub Desktop.
bbPress Membership levels, Basic, Premium and Lifetime Premium. Based on some codes in bbPress forums.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function my_custom_get_dynamic_roles( $bbp_roles ) | |
{ | |
/* Add a role called Community Contributor */ | |
$bbp_roles['bbp_basic_member'] = array( | |
'name' => 'Basic Member', | |
'capabilities' => my_custom_get_caps_for_role( 'bbp_basic_member' ) | |
); | |
/* Add a role called Community Contributor */ | |
$bbp_roles['bbp_premium_member'] = array( | |
'name' => 'Premium Member', | |
'capabilities' => my_custom_get_caps_for_role( 'bbp_premium_member' ) | |
); | |
/* Add a role called Community Contributor */ | |
$bbp_roles['bbp_lifetime_premium_member'] = array( | |
'name' => 'Lifetime Premium Member', | |
'capabilities' => my_custom_get_caps_for_role( 'bbp_lifetime_premium_member' ) | |
); | |
return $bbp_roles; | |
} | |
add_filter( 'bbp_get_dynamic_roles', 'my_custom_get_dynamic_roles', 1 ); | |
function my_custom_get_caps_for_role_filter( $caps, $role ) | |
{ | |
/* Only filter for roles we are interested in! */ | |
if( $role == 'bbp_participant' || $role == 'bbp_community_contributor' || $role == 'bbp_basic_member' || $role == 'bbp_premium_member' || $role == 'bbp_lifetime_premium_member') | |
$caps = my_custom_get_caps_for_role( $role ); | |
return $caps; | |
} | |
add_filter( 'bbp_get_caps_for_role', 'my_custom_get_caps_for_role_filter', 10, 2 ); | |
function my_custom_get_caps_for_role( $role ) | |
{ | |
switch ( $role ) | |
{ | |
/* Disable viewing of private forums by 'Participants' */ | |
case 'bbp_participant': | |
return array( | |
// Primary caps | |
'spectate' => true, | |
'participate' => true, | |
'moderate' => false, | |
'throttle' => false, | |
'view_trash' => false, | |
// Forum caps | |
'publish_forums' => false, | |
'edit_forums' => false, | |
'edit_others_forums' => false, | |
'delete_forums' => false, | |
'delete_others_forums' => false, | |
'read_private_forums' => false, | |
'read_hidden_forums' => false, | |
// Topic caps | |
'publish_topics' => true, | |
'edit_topics' => true, | |
'edit_others_topics' => false, | |
'delete_topics' => false, | |
'delete_others_topics' => false, | |
'read_private_topics' => false, | |
// Reply caps | |
'publish_replies' => true, | |
'edit_replies' => true, | |
'edit_others_replies' => false, | |
'delete_replies' => false, | |
'delete_others_replies' => false, | |
'read_private_replies' => false, | |
// Topic tag caps | |
'manage_topic_tags' => false, | |
'edit_topic_tags' => false, | |
'delete_topic_tags' => false, | |
'assign_topic_tags' => true, | |
); | |
break; | |
/* Capabilities for 'Basic Member' */ | |
case 'bbp_basic_member': | |
return array( | |
// Primary caps | |
'spectate' => true, | |
'participate' => true, | |
'moderate' => false, | |
'throttle' => false, | |
'view_trash' => false, | |
// Forum caps | |
'publish_forums' => false, | |
'edit_forums' => false, | |
'edit_others_forums' => false, | |
'delete_forums' => false, | |
'delete_others_forums' => false, | |
'read_private_forums' => false, | |
'read_hidden_forums' => false, | |
// Topic caps | |
'publish_topics' => true, | |
'edit_topics' => true, | |
'edit_others_topics' => false, | |
'delete_topics' => false, | |
'delete_others_topics' => false, | |
'read_private_topics' => false, | |
// Reply caps | |
'publish_replies' => true, | |
'edit_replies' => true, | |
'edit_others_replies' => false, | |
'delete_replies' => false, | |
'delete_others_replies' => false, | |
'read_private_replies' => false, | |
// Topic tag caps | |
'manage_topic_tags' => false, | |
'edit_topic_tags' => false, | |
'delete_topic_tags' => false, | |
'assign_topic_tags' => true, | |
); | |
break; | |
/* Capabilities for 'Premium Member' */ | |
case 'bbp_premium_member': | |
return array( | |
// Primary caps | |
'spectate' => true, | |
'participate' => true, | |
'moderate' => false, | |
'throttle' => false, | |
'view_trash' => false, | |
// Forum caps | |
'publish_forums' => false, | |
'edit_forums' => false, | |
'edit_others_forums' => false, | |
'delete_forums' => false, | |
'delete_others_forums' => false, | |
'read_private_forums' => true, | |
'read_hidden_forums' => false, | |
// Topic caps | |
'publish_topics' => true, | |
'edit_topics' => true, | |
'edit_others_topics' => false, | |
'delete_topics' => false, | |
'delete_others_topics' => false, | |
'read_private_topics' => false, | |
// Reply caps | |
'publish_replies' => true, | |
'edit_replies' => true, | |
'edit_others_replies' => false, | |
'delete_replies' => false, | |
'delete_others_replies' => false, | |
'read_private_replies' => false, | |
// Topic tag caps | |
'manage_topic_tags' => false, | |
'edit_topic_tags' => false, | |
'delete_topic_tags' => false, | |
'assign_topic_tags' => true, | |
); | |
break; | |
/* Capabilities for 'Lifetime Premium' */ | |
case 'bbp_lifetime_premium_member': | |
return array( | |
// Primary caps | |
'spectate' => true, | |
'participate' => true, | |
'moderate' => false, | |
'throttle' => false, | |
'view_trash' => false, | |
// Forum caps | |
'publish_forums' => false, | |
'edit_forums' => false, | |
'edit_others_forums' => false, | |
'delete_forums' => false, | |
'delete_others_forums' => false, | |
'read_private_forums' => true, | |
'read_hidden_forums' => false, | |
// Topic caps | |
'publish_topics' => true, | |
'edit_topics' => true, | |
'edit_others_topics' => false, | |
'delete_topics' => false, | |
'delete_others_topics' => false, | |
'read_private_topics' => false, | |
// Reply caps | |
'publish_replies' => true, | |
'edit_replies' => true, | |
'edit_others_replies' => false, | |
'delete_replies' => false, | |
'delete_others_replies' => false, | |
'read_private_replies' => false, | |
// Topic tag caps | |
'manage_topic_tags' => false, | |
'edit_topic_tags' => false, | |
'delete_topic_tags' => false, | |
'assign_topic_tags' => true, | |
); | |
break; | |
default : | |
return $role; | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment