Skip to:
Content

bbPress.org

Changeset 3134


Ignore:
Timestamp:
05/10/2011 07:27:35 PM (15 years ago)
Author:
johnjamesjacoby
Message:

Fix topic and reply edit locking. Props christopher-jon.

Location:
branches/plugin/bbp-includes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/plugin/bbp-includes/bbp-general-functions.php

    r3120 r3134  
    258258
    259259    return $data;
     260}
     261
     262/**
     263 * Check the date against the _bbp_edit_lock setting.
     264 *
     265 * @since bbPress (r3133)
     266 *
     267 * @param string $post_date_gmt
     268 *
     269 * @uses get_option() Get the edit lock time
     270 * @uses current_time() Get the current time
     271 * @uses strtotime() Convert strings to time
     272 * @uses apply_filters() Allow output to be manipulated
     273 *
     274 * @return bool
     275 */
     276function bbp_past_edit_lock( $post_date_gmt ) {
     277
     278    // Assume editing is allowed
     279    $retval = false;
     280
     281    // Bail if empty date
     282    if ( ! empty( $post_date_gmt ) ) {
     283
     284        // Period of time
     285        $lockable  = '+' . get_option( '_bbp_edit_lock', '5' ) . ' minutes';
     286
     287        // Now
     288        $cur_time  = current_time( 'timestamp', true );
     289
     290        // Add lockable time to post time
     291        $lock_time = strtotime( $lockable, strtotime( $post_date_gmt ) );
     292
     293        // Compare
     294        if ( $cur_time >= $lock_time ) {
     295            $retval = true;
     296        }
     297    }
     298
     299    return apply_filters( 'bbp_past_edit_lock', (bool) $retval, $cur_time, $lock_time, $post_date_gmt );
    260300}
    261301
  • branches/plugin/bbp-includes/bbp-reply-template.php

    r3125 r3134  
    13311331        $reply = bbp_get_reply( bbp_get_reply_id( (int) $id ) );
    13321332
    1333         if ( empty( $reply ) || !current_user_can( 'edit_reply', $reply->ID ) )
    1334             return;
    1335 
     1333        // Bypass check if user has caps
     1334        if ( !is_super_admin() || !current_user_can( 'edit_others_replies' ) ) {
     1335
     1336            // User cannot edit or it is past the lock time
     1337            if ( empty( $reply ) || !current_user_can( 'edit_reply', $reply->ID ) || bbp_past_edit_lock( $reply->post_date_gmt ) )
     1338                return;
     1339        }
     1340
     1341        // No uri to edit reply
    13361342        if ( !$uri = bbp_get_reply_edit_url( $id ) )
    13371343            return;
  • branches/plugin/bbp-includes/bbp-topic-template.php

    r3125 r3134  
    19011901        $topic = bbp_get_topic( bbp_get_topic_id( (int) $id ) );
    19021902
    1903         if ( empty( $topic ) || !current_user_can( 'edit_topic', $topic->ID ) )
    1904             return;
    1905 
     1903        // Bypass check if user has caps
     1904        if ( !is_super_admin() || !current_user_can( 'edit_others_topics' ) ) {
     1905
     1906            // User cannot edit or it is past the lock time
     1907            if ( empty( $topic ) || !current_user_can( 'edit_topic', $topic->ID ) || bbp_past_edit_lock( $topic->post_date_gmt ) )
     1908                return;
     1909        }
     1910
     1911        // No uri to edit topic
    19061912        if ( !$uri = bbp_get_topic_edit_url( $id ) )
    19071913            return;
Note: See TracChangeset for help on using the changeset viewer.