Skip to:
Content

BuddyPress.org

Ticket #6504: 6504.01.patch

File 6504.01.patch, 3.0 KB (added by johnjamesjacoby, 9 years ago)
  • src/bp-messages/bp-messages-filters.php

     
    6565add_filter( 'bp_get_messages_content_value',     'stripslashes_deep' );
    6666add_filter( 'bp_get_the_thread_message_content', 'stripslashes_deep' );
    6767add_filter( 'bp_get_the_thread_subject',         'stripslashes_deep' );
     68
     69/**
     70 * Enforce limitations on viewing private message contents
     71 *
     72 * @since BuddyPress (2.3.2)
     73 *
     74 * @see bp_has_message_threads() for description of parameters
     75 *
     76 * @param array|string $args See {@link bp_has_message_threads()}.
     77 */
     78function bp_messages_enforce_current_user( $args = array() ) {
     79
     80        // Logged out users can see no member's private messages
     81        if ( ! is_user_logged_in() ) {
     82                $args = array();
     83
     84        // Non-community moderators can only ever see their own messages
     85        } elseif ( ! bp_current_user_can( 'bp_moderate' ) ) {
     86                $_user_id = (int) bp_loggedin_user_id();
     87                if ( $_user_id !== (int) $args['user_id'] ) {
     88                        $args['user_id'] = $_user_id;
     89                }
     90        }
     91
     92        // Return possibly modified $args array
     93        return $args;
     94}
     95add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_enforce_current_user' );
  • src/bp-messages/classes/class-bp-messages-thread.php

     
    439439                        'meta_query'   => array()
    440440                ) );
    441441
    442                 $pag_sql = $type_sql = $search_sql = $user_id_sql = $sender_sql = '';
     442                $user_id_sql = 'AND m.sender_id = 0';
     443                $sender_sql  = 'AND m.sender_id = r.user_id';
     444                $pag_sql = $type_sql = $search_sql = '';
    443445                $meta_query_sql = array(
    444446                        'join'  => '',
    445447                        'where' => ''
    446448                );
    447449
    448450                if ( $r['limit'] && $r['page'] ) {
    449                         $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $r['page'] - 1 ) * $r['limit'] ), intval( $r['limit'] ) );
     451                        $pag_sql = $wpdb->prepare( 'LIMIT %d, %d', intval( ( $r['page'] - 1 ) * $r['limit'] ), intval( $r['limit'] ) );
    450452                }
    451453
    452454                if ( $r['type'] == 'unread' ) {
    453                         $type_sql = " AND r.unread_count != 0 ";
     455                        $type_sql = 'AND r.unread_count != 0 ';
    454456                } elseif ( $r['type'] == 'read' ) {
    455                         $type_sql = " AND r.unread_count = 0 ";
     457                        $type_sql = 'AND r.unread_count = 0 ';
    456458                }
    457459
    458460                if ( ! empty( $r['search_terms'] ) ) {
    459461                        $search_terms_like = '%' . bp_esc_like( $r['search_terms'] ) . '%';
    460                         $search_sql        = $wpdb->prepare( "AND ( subject LIKE %s OR message LIKE %s )", $search_terms_like, $search_terms_like );
     462                        $search_sql        = $wpdb->prepare( 'AND ( subject LIKE %s OR message LIKE %s )', $search_terms_like, $search_terms_like );
    461463                }
    462464
    463465                if ( ! empty( $r['user_id'] ) ) {
    464466                        if ( 'sentbox' == $r['box'] ) {
    465467                                $user_id_sql = 'AND ' . $wpdb->prepare( 'm.sender_id = %d', $r['user_id'] );
    466                                 $sender_sql  = ' AND m.sender_id = r.user_id';
     468                                $sender_sql  = 'AND m.sender_id = r.user_id';
    467469                        } else {
    468470                                $user_id_sql = 'AND ' . $wpdb->prepare( 'r.user_id = %d', $r['user_id'] );
    469                                 $sender_sql  = ' AND r.sender_only = 0';
     471                                $sender_sql  = 'AND r.sender_only = 0';
    470472                        }
    471473                }
    472474