Skip to:
Content

bbPress.org


Ignore:
Timestamp:
03/20/2017 10:44:00 AM (9 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/common/widgets.php

    r6196 r6384  
    746746                    'post_parent'         => $settings['parent_forum'],
    747747                    'posts_per_page'      => (int) $settings['max_shown'],
    748                     'post_status'         => array( bbp_get_public_status_id(), bbp_get_closed_status_id() ),
     748                    'post_status'         => bbp_get_public_topic_statuses(),
    749749                    'ignore_sticky_posts' => true,
    750750                    'no_found_rows'       => true,
     
    762762                    'post_parent'         => $settings['parent_forum'],
    763763                    'posts_per_page'      => (int) $settings['max_shown'],
    764                     'post_status'         => array( bbp_get_public_status_id(), bbp_get_closed_status_id() ),
     764                    'post_status'         => bbp_get_public_topic_statuses(),
    765765                    'ignore_sticky_posts' => true,
    766766                    'no_found_rows'       => true,
     
    779779                    'post_parent'         => $settings['parent_forum'],
    780780                    'posts_per_page'      => (int) $settings['max_shown'],
    781                     'post_status'         => array( bbp_get_public_status_id(), bbp_get_closed_status_id() ),
     781                    'post_status'         => bbp_get_public_topic_statuses(),
    782782                    'ignore_sticky_posts' => true,
    783783                    'no_found_rows'       => true,
     
    11311131        $widget_query = new WP_Query( array(
    11321132            'post_type'           => bbp_get_reply_post_type(),
    1133             'post_status'         => array( bbp_get_public_status_id(), bbp_get_closed_status_id() ),
     1133            'post_status'         => bbp_get_public_topic_statuses(),
    11341134            'posts_per_page'      => (int) $settings['max_shown'],
    11351135            'ignore_sticky_posts' => true,
Note: See TracChangeset for help on using the changeset viewer.