Participant Role Can’t Read Private Topics
-
Does anyone know the correct way to enable the participant role to read private topics? I found a bit of a work around (see below). But I’d like to know how to enable it correctly.
Even though bbPress’ documentation says that users with the Participant role can read private forums and topics, the current version of bbPress (2.5.14) allows participants to read private forum names, but not private topics names or content.
I did some searching on this site and it looks like people have been complaining and notifying bbPress about this bug for about seven years and it’s STILL not fixed. The most support help I’ve seen is someone saying the issue is because of another plugin. But that’s not the case.
I checked the bbPress code in the capabilities.php file located in wp-content/plugins/bbpress/includes/core/capabilities.php, and sure enough, the capability to ‘read_private_topics’ is not listed under the Participant’s Topic Caps section:
// Participant/Default
case bbp_get_participant_role() :
default :
$caps = array(// Primary caps
‘spectate’ => true,
‘participate’ => true,// Forum caps
‘read_private_forums’ => true,// Topic caps
‘publish_topics’ => true,
‘edit_topics’ => true,// Reply caps
‘publish_replies’ => true,
‘edit_replies’ => true,// Topic tag caps
‘assign_topic_tags’ => true,
);I tried adding the ‘read_private_topics’ capability to the Participant capabilities section:
// Topic caps
‘publish_topics’ => true,
‘edit_topics’ => true,
‘read_private_topics’ => true,But that didn’t work. So then I tried copying and pasting all the capabilities from the Moderator role to the participant role, including the first part of the code under the “Primary Caps” section that lists spectate, participate, moderate, throttle, and view trash.
// Moderator
case bbp_get_moderator_role() :
$caps = array(// Primary caps
‘spectate’ => true,
‘participate’ => true,
‘moderate’ => true,
‘throttle’ => true,
‘view_trash’ => true,// Forum caps
‘publish_forums’ => true,
‘edit_forums’ => true,
‘read_private_forums’ => true,
‘read_hidden_forums’ => true,// Topic caps
‘publish_topics’ => true,
‘edit_topics’ => true,
‘edit_others_topics’ => true,
‘delete_topics’ => true,
‘delete_others_topics’ => true,
‘read_private_topics’ => true,// Reply caps
‘publish_replies’ => true,
‘edit_replies’ => true,
‘edit_others_replies’ => true,
‘delete_replies’ => true,
‘delete_others_replies’ => true,
‘read_private_replies’ => true,// Topic tag caps
‘manage_topic_tags’ => true,
‘edit_topic_tags’ => true,
‘delete_topic_tags’ => true,
‘assign_topic_tags’ => true,
);And it worked! Participants could then read private topics. However, it meant that they had the exact same capabilities as moderators, which defeats the purpose of having those two different user roles. And I don’t want to make all participant users moderators. So I kept the moderator capabilities under the Participant section, however, any of the moderator capabilities that I didn’t want the participant to have, I changed it from “true” to “false.” For example, I do not want participants to be able to edit others’ topics, so I changed this part of the code:
‘edit_others_topics’ => true,
To this:
‘edit_others_topics’ => false,
That worked. However, the button to edit others’ topics still show up for the participant, but if they click on it, either nothing happens or they get an error message saying they don’t have that privilege.
The first time I tried this I deleted most of the first section, called Primary Caps:
// Primary caps
‘spectate’ => true,
‘participate’ => true,
‘moderate’ => true,
‘throttle’ => true,
‘view_trash’ => true,But when I did that, it didn’t work again. It seems like the “‘moderate’ = > true,” part has to stay there in order for this work around to work.
So in conclusion, the participant caps section was replaced with this code:
// Participant/Default
case bbp_get_participant_role() :
default :
$caps = array(// Primary caps
‘spectate’ => true,
‘participate’ => true,
‘moderate’ => true,// Forum caps
‘publish_forums’ => false,
‘edit_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’ => true,// Reply caps
‘publish_replies’ => true,
‘edit_replies’ => true,
‘edit_others_replies’ => false,
‘delete_replies’ => false,
‘delete_others_replies’ => false,
‘read_private_replies’ => true,// Topic tag caps
‘manage_topic_tags’ => false,
‘edit_topic_tags’ => false,
‘delete_topic_tags’ => false,
‘assign_topic_tags’ => true,
);So that’s a work around for now. But I’d still like to know: When is bbPress going to fix this bug issue? And if they have already (and I’ve just missed it somehow): How do I correct it so that the participant user role can read private topics? If anyone has any ideas, can you please leave a DETAILED reply below, including WHERE to find the files that need to be altered. (Ex: wp-content/plugins/bbpress/includes/core/capabilities.php. I noticed that many people in this forum don’t really write down all the steps to fix things, which causes more confusion.)
- You must be logged in to reply to this topic.