Skip to:
Content

bbPress.org

Ticket #3359: 3359.diff

File 3359.diff, 4.4 KB (added by dontdream, 5 years ago)
  • trunk/src/includes/replies/functions.php

     
    543543
    544544                        // Filter anonymous data
    545545                        $anonymous_data = bbp_filter_anonymous_post_data();
     546
     547                        // Anonymous data checks out, so set cookies, etc...
     548                        bbp_set_current_anonymous_user_data( $anonymous_data );
    546549                }
    547550        }
    548551
     
    22272230 */
    22282231function bbp_check_reply_edit() {
    22292232
    2230         // Bail if not editing a topic
     2233        // Bail if not editing a reply
    22312234        if ( ! bbp_is_reply_edit() ) {
    22322235                return;
    22332236        }
    22342237
    2235         // User cannot edit topic, so redirect back to reply
    2236         if ( ! current_user_can( 'edit_reply', bbp_get_reply_id() ) ) {
     2238        // User cannot edit reply, so redirect back to reply
     2239        if ( ! current_user_can( 'edit_reply', bbp_get_reply_id() ) && ! bbp_anonymous_user_can( 'edit_reply', bbp_get_reply_id() ) ) {
    22372240                bbp_redirect( bbp_get_reply_url() );
    22382241        }
    22392242}
  • trunk/src/includes/replies/template.php

     
    18551855                if ( ! current_user_can( 'edit_others_replies' ) ) {
    18561856
    18571857                        // User cannot edit or it is past the lock time
    1858                         if ( empty( $reply ) || ! current_user_can( 'edit_reply', $reply->ID ) || bbp_past_edit_lock( $reply->post_date_gmt ) ) {
     1858                        if ( empty( $reply ) || (! current_user_can( 'edit_reply', $reply->ID ) && ! bbp_anonymous_user_can( 'edit_reply', $reply->ID ) ) || bbp_past_edit_lock( $reply->post_date_gmt ) ) {
    18591859                                return;
    18601860                        }
    18611861                }
  • trunk/src/includes/topics/functions.php

     
    460460
    461461                        // Filter anonymous data
    462462                        $anonymous_data = bbp_filter_anonymous_post_data();
     463
     464                        // Anonymous data checks out, so set cookies, etc...
     465                        bbp_set_current_anonymous_user_data( $anonymous_data );
    463466                }
    464467        }
    465468
     
    38383841        }
    38393842
    38403843        // User cannot edit topic, so redirect back to topic
    3841         if ( ! current_user_can( 'edit_topic', bbp_get_topic_id() ) ) {
     3844        if ( ! current_user_can( 'edit_topic', bbp_get_topic_id() ) && ! bbp_anonymous_user_can( 'edit_topic', bbp_get_topic_id() ) ) {
    38423845                bbp_redirect( bbp_get_topic_permalink() );
    38433846        }
    38443847}
  • trunk/src/includes/topics/template.php

     
    24102410                if ( ! current_user_can( 'edit_others_topics' ) ) {
    24112411
    24122412                        // User cannot edit or it is past the lock time
    2413                         if ( empty( $topic ) || ! current_user_can( 'edit_topic', $topic->ID ) || bbp_past_edit_lock( $topic->post_date_gmt ) ) {
     2413                        if ( empty( $topic ) || (! current_user_can( 'edit_topic', $topic->ID ) && ! bbp_anonymous_user_can( 'edit_topic', $topic->ID ) ) || bbp_past_edit_lock( $topic->post_date_gmt ) ) {
    24142414                                return;
    24152415                        }
    24162416                }
  • trunk/src/includes/users/capabilities.php

     
    826826        // Filter & return
    827827        return (array) apply_filters( 'bbp_get_moderators', $users, $object_id, $object_type );
    828828}
     829
     830function bbp_anonymous_user_can( $capability, ...$args ) {
     831
     832        switch ( $capability ) {
     833
     834                default:
     835                        return false;
     836
     837                case 'edit_topic':
     838                case 'edit_reply':
     839
     840                        $post_id = $args[0];
     841                        $post = ( 'edit_topic' == $capability ) ? bbp_get_topic( $post_id ) : bbp_get_reply( $post_id );
     842
     843                        if ( empty( $post ) ) {
     844                                return false;
     845                        }
     846                       
     847                        if ( $post->post_author ) {
     848                                return false;
     849                        }
     850
     851                        $current_user = wp_get_current_user();
     852
     853                        if ( $current_user->ID ) {
     854                                return false;
     855                        }
     856
     857                        $anonymous_data = wp_get_current_commenter();
     858
     859                        $retval = $anonymous_data['comment_author']       == get_post_meta( $post_id, '_bbp_anonymous_name',    true ) &&
     860                                          $anonymous_data['comment_author_email'] == get_post_meta( $post_id, '_bbp_anonymous_email',   true ) &&
     861                                          $anonymous_data['comment_author_url']   == get_post_meta( $post_id, '_bbp_anonymous_website', true );
     862
     863                        return $retval;
     864        }
     865}