Opened 15 years ago
Closed 15 years ago
#3858 closed defect (bug) (fixed)
When posting a new topic from forums directory, tags won't be added to topic
| Reported by: | deschle | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.6 |
| Component: | Forums | Version: | 1.5.1 |
| Severity: | normal | Keywords: | |
| Cc: |
Description
Tags are added correctly when creating a new topic from a group page.
Change History (3)
#2
@
15 years ago
- Milestone Awaiting Review → 1.6
Confirmed.
The problem is that we use groups_get_group() to populate the current_group property when a post is being created from the Forum directory, but groups_get_group() (BP_Groups_Group) doesn't have a user_has_access property. That seems like the right fix to me.
Note:
See TracTickets
for help on using tickets.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)
As far is I can see, the user rights for adding tags is checked in bp-groups-filters.php:
function groups_filter_bbpress_caps( $value, $cap, $args ) { global $bp; if ( is_super_admin() ) return true; if ( 'add_tag_to' == $cap ) if ( $bp->groups->current_group->user_has_access ) return true; if ( 'manage_forums' == $cap && is_user_logged_in() ) return true; return $value; }When creating a topic from a non group page, the $bp->groups->current_group->user_has_access is not initialized.
As a workaround I added the following code to my theme function.php:
function current_user_can_add_tag( $value, $cap, $args ) { global $bp; if ( 'add_tag_to' == $cap ) { $topic_id = $args[1]; $topic = get_topic( $topic_id ); if ( !$topic ) return false; // is current user super admin or the topic poster? // maybe check if group admin? if ( is_super_admin() || $topic->topic_poster == $bp->loggedin_user->id ) return true; } return $value; } add_filter( 'bb_current_user_can', 'current_user_can_add_tag', 10, 3 );