Skip to:
Content

bbPress.org


Ignore:
Timestamp:
03/20/2017 10:44:00 AM (5 years ago)
Author:
johnjamesjacoby
Message:

Moderation: Allow per-forum moderators to edit topics & replies inside of forums they have moderation control over.

This feature require the following changes:

  • Prefer read_forum capability check over read_private_forums or read_hidden_forums, and include a $forum_id parameter to assist map_meta_cap filters
  • Prefer edit_others_topics|replies over moderate where appropriate, to ensure capability mappings work as intended
  • Introduce bbp_get_public_topic_statuses() to replace several duplicate occurrences of the same array usage (also allow these to be filtered)
  • Introduce bbp_is_topic_public() (not to be confused with bbp_is_topic_published()) to provide parity with bbp_is_forum_public() and also utilize bbp_get_public_topic_statuses() from above
  • Add local caching to bbp_exclude_forum_ids() as a performance optimization to reduce the depth of current_user_can() calls when private & hidden forums are in use
  • Add user_can( 'moderate' ) capability checks to various mappings, to ensure forum moderators can read/edit/delete content inside of the individual forums they are moderators of
  • Use bbp_get_user_id() where appropriate, rather than casting as int
  • Various surrounding code clean-ups

See #2593.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/admin/topics.php

    r6334 r6384  
    550550
    551551        // Bail if current user cannot edit this topic
    552         if ( !current_user_can( 'edit_topic', $topic_id ) ) {
     552        if ( ! current_user_can( 'edit_topic', $topic_id ) ) {
    553553            return $topic_id;
    554554        }
     
    617617
    618618            // What is the user doing here?
    619             if ( !current_user_can( 'moderate', $topic->ID ) ) {
     619            if ( ! current_user_can( 'moderate', $topic->ID ) ) {
    620620                wp_die( __( 'You do not have permission to do that.', 'bbpress' ) );
    621621            }
     
    979979            // Close
    980980            // Show the 'close' and 'open' link on published and closed posts only
    981             if ( in_array( $topic->post_status, array( bbp_get_public_status_id(), bbp_get_closed_status_id() ) ) ) {
     981            if ( bbp_is_topic_public( $topic->ID ) ) {
    982982                $close_uri = wp_nonce_url( add_query_arg( array( 'topic_id' => $topic->ID, 'action' => 'bbp_toggle_topic_close' ), remove_query_arg( array( 'bbp_topic_toggle_notice', 'topic_id', 'failed', 'super' ) ) ), 'close-topic_' . $topic->ID );
    983983                if ( bbp_is_topic_open( $topic->ID ) ) {
Note: See TracChangeset for help on using the changeset viewer.