Skip to:
Content

bbPress.org

Ticket #3330: 3330.patch

File 3330.patch, 12.2 KB (added by fayazgabol, 21 months ago)

Patch

  • src/includes/replies/capabilities.php

     
    11<?php
    22
    33/**
    4  * bbPress Reply Capabilites
     4 * bbPress Reply Capabilities
    55 *
    66 * Used to map reply capabilities to WordPress's existing capabilities.
    77 *
     
    1818 */
    1919function bbp_get_reply_caps() {
    2020
    21         // Filter & return
     21        // Filter & return.
    2222        return (array) apply_filters( 'bbp_get_reply_caps', array(
    2323                'edit_posts'          => 'edit_replies',
    2424                'edit_others_posts'   => 'edit_others_replies',
     
    5050
    5151                case 'read_reply' :
    5252
    53                         // User cannot spectate
     53                        // User cannot spectate.
    5454                        if ( ! user_can( $user_id, 'spectate' ) ) {
    5555                                $caps = array( 'do_not_allow' );
    5656
     
    5757                        // Do some post ID based logic
    5858                        } else {
    5959
    60                                 // Bail if no post ID
     60                                // Bail if no post ID.
    6161                                if ( empty( $args[0] ) ) {
    6262                                        break;
    6363                                }
     
    6666                                $_post = get_post( $args[0] );
    6767                                if ( ! empty( $_post ) ) {
    6868
    69                                         // Get post type object
     69                                        // Get post type object.
    7070                                        $post_type = get_post_type_object( $_post->post_type );
    7171
    72                                         // Post is public
     72                                        // Post is public.
    7373                                        if ( bbp_get_public_status_id() === $_post->post_status ) {
    7474                                                $caps = array( 'spectate' );
    7575
    76                                         // User is author so allow read
     76                                        // User is author so allow read.
    7777                                        } elseif ( (int) $user_id === (int) $_post->post_author ) {
    7878                                                $caps = array( 'spectate' );
    7979
    80                                         // Moderators can always edit forum content
     80                                        // Moderators can always edit forum content.
    8181                                        } elseif ( user_can( $user_id, 'moderate', $_post->ID ) ) {
    8282                                                $caps = array( 'spectate' );
    8383
    84                                         // Unknown so map to private posts
     84                                        // Unknown so map to private posts.
    8585                                        } else {
    8686                                                $caps = array( $post_type->cap->read_private_posts );
    8787                                        }
     
    9494
    9595                case 'publish_replies' :
    9696
    97                         // Moderators can always publish
     97                        // Moderators can always publish.
    9898                        if ( user_can( $user_id, 'moderate' ) ) {
    9999                                $caps = array( 'moderate' );
    100100                        }
     
    103103
    104104                /** Editing ***********************************************************/
    105105
    106                 // Used primarily in wp-admin
     106                // Used primarily in wp-admin.
    107107                case 'edit_replies'        :
    108108                case 'edit_others_replies' :
    109109
    110                         // Moderators can always edit
     110                        // Moderators can always edit.
    111111                        if ( user_can( $user_id, 'moderate' ) ) {
    112112                                $caps = array( 'moderate' );
    113113
    114                         // Otherwise, check forum
     114                        // Otherwise, check forum.
    115115                        } else {
    116116                                $forum_id = bbp_get_forum_id();
    117117
     
    119119                                if ( user_can( $user_id, 'moderate', $forum_id ) ) {
    120120                                        $caps = array( 'spectate' );
    121121
    122                                 // Fallback to do_not_allow
     122                                // Fallback to do_not_allow.
    123123                                } else {
    124124                                        $caps = array( 'do_not_allow' );
    125125                                }
     
    127127
    128128                        break;
    129129
    130                 // Used everywhere
     130                // Used everywhere.
    131131                case 'edit_reply' :
    132132
    133                         // Bail if no post ID
     133                        // Bail if no post ID.
    134134                        if ( empty( $args[0] ) ) {
    135135                                break;
    136136                        }
     
    139139                        $_post = get_post( $args[0] );
    140140                        if ( ! empty( $_post ) ) {
    141141
    142                                 // Get post type object
     142                                // Get post type object.
    143143                                $post_type = get_post_type_object( $_post->post_type );
    144144
    145                                 // Add 'do_not_allow' cap if user is spam or deleted
     145                                // Add 'do_not_allow' cap if user is spam or deleted.
    146146                                if ( bbp_is_user_inactive( $user_id ) ) {
    147147                                        $caps = array( 'do_not_allow' );
    148148
    149                                 // Moderators can always edit forum content
     149                                // Moderators can always edit forum content.
    150150                                } elseif ( user_can( $user_id, 'moderate', $_post->ID ) ) {
    151151                                        $caps = array( 'spectate' );
    152152
    153                                 // Allow author or mod to edit if not in admin, unless past edit lock time
     153                                // Allow author or mod to edit if not in admin, unless past edit lock time.
    154154                                } elseif ( ! is_admin() && ( (int) $user_id === (int) $_post->post_author ) ) {
    155155
    156156                                        // If editing...
    157157                                        if ( bbp_is_reply_edit() ) {
    158158
    159                                                 // Only allow if not past the edit-lock period
     159                                                // Only allow if not past the edit-lock period.
    160160                                                $caps = ! bbp_past_edit_lock( $_post->post_date_gmt )
    161161                                                        ? array( $post_type->cap->edit_posts )
    162162                                                        : array( 'do_not_allow' );
     
    178178
    179179                case 'delete_reply' :
    180180
    181                         // Bail if no post ID
     181                        // Bail if no post ID.
    182182                        if ( empty( $args[0] ) ) {
    183183                                break;
    184184                        }
    185185
    186                         // Get the post
     186                        // Get the post.
    187187                        $_post = get_post( $args[0] );
    188188                        if ( ! empty( $_post ) ) {
    189189
    190                                 // Get post type object
     190                                // Get post type object.
    191191                                $post_type = get_post_type_object( $_post->post_type );
    192192
    193                                 // Add 'do_not_allow' cap if user is spam or deleted
     193                                // Add 'do_not_allow' cap if user is spam or deleted.
    194194                                if ( bbp_is_user_inactive( $user_id ) ) {
    195195                                        $caps = array( 'do_not_allow' );
    196196
    197                                 // Moderators can always edit forum content
     197                                // Moderators can always edit forum content.
    198198                                } elseif ( user_can( $user_id, 'moderate', $_post->ID ) ) {
    199199                                        $caps = array( 'spectate' );
    200200
    201                                 // User is author so allow delete if not in admin
     201                                // User is author so allow delete if not in admin.
    202202                                } elseif ( ! is_admin() && ( (int) $user_id === (int) $_post->post_author ) ) {
    203203                                        $caps = array( $post_type->cap->delete_posts );
    204204
    205                                 // Unknown so map to delete_others_posts
     205                                // Unknown so map to delete_others_posts.
    206206                                } else {
    207207                                        $caps = array( $post_type->cap->delete_others_posts );
    208208                                }
     
    210210
    211211                        break;
    212212
    213                 // Moderation override
     213                // Moderation override.
    214214                case 'delete_replies'        :
    215215                case 'delete_others_replies' :
    216216
    217                         // Moderators can always delete
     217                        // Moderators can always delete.
    218218                        if ( user_can( $user_id, 'moderate' ) ) {
    219219                                $caps = array( 'moderate' );
    220220                        }
     
    228228                        break;
    229229        }
    230230
    231         // Filter & return
     231        // Filter & return.
    232232        return (array) apply_filters( 'bbp_map_reply_meta_caps', $caps, $cap, $user_id, $args );
    233233}
  • src/templates/default/bbpress/alert-topic-lock.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313do_action( 'bbp_theme_before_alert_topic_lock' ); ?>
  • src/templates/default/bbpress/content-archive-forum.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/content-archive-topic.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/content-search.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/content-single-forum.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/content-single-reply.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/content-single-topic-lead.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313do_action( 'bbp_template_before_lead_topic' ); ?>
  • src/templates/default/bbpress/content-single-topic.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/content-single-user.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/content-single-view.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/content-statistics.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313// Get the statistics
  • src/templates/default/bbpress/content-topic-tag-edit.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/feedback-logged-in.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/feedback-no-access.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>
  • src/templates/default/bbpress/feedback-no-forums.php

     
    77 * @subpackage Theme
    88 */
    99
    10 // Exit if accessed directly
     10// Exit if accessed directly.
    1111defined( 'ABSPATH' ) || exit;
    1212
    1313?>