Skip to:
Content

BuddyPress.org

Ticket #4989: 4989.core.1.patch

File 4989.core.1.patch, 7.1 KB (added by DJPaul, 11 years ago)
  • bp-core/bp-core-cache.php

    diff --git a/bp-core/bp-core-cache.php b/bp-core/bp-core-cache.php
    index 1c0ba2d..66d8890 100644
    a b function bp_update_meta_cache( $args = array() ) { 
    9292                $object_column = $object_type . '_id';
    9393        }
    9494
    95         if ( !is_array( $object_ids ) ) {
    96                 $object_ids = preg_replace( '|[^0-9,]|', '', $object_ids );
    97                 $object_ids = explode( ',', $object_ids );
    98         }
    99 
    100         $object_ids = array_map( 'intval', $object_ids );
    101 
     95        $object_ids = wp_parse_id_list( $object_ids );
    10296        $cache = array();
    10397
    10498        // Get meta info
    105         $id_list   = join( ',', $object_ids );
     99        $id_list   = esc_sql( join( ',', $object_ids ) );
    106100        $meta_list = $wpdb->get_results( $wpdb->prepare( "SELECT {$object_column}, meta_key, meta_value FROM {$meta_table} WHERE {$object_column} IN ($id_list)", $object_type ), ARRAY_A );
    107101
    108102        if ( !empty( $meta_list ) ) {
  • bp-core/bp-core-classes.php

    diff --git a/bp-core/bp-core-classes.php b/bp-core/bp-core-classes.php
    index 102dbd8..57ee5ba 100644
    a b class BP_User_Query { 
    298298                // 'user_id' - When a user id is passed, limit to the friends of the user
    299299                // @todo remove need for bp_is_active() check
    300300                if ( ! empty( $user_id ) && bp_is_active( 'friends' ) ) {
    301                         $friend_ids = friends_get_friend_user_ids( $user_id );
     301                        $friend_ids = wp_parse_id_list( friends_get_friend_user_ids( $user_id ) );
    302302                        $friend_ids = $wpdb->escape( implode( ',', (array) $friend_ids ) );
    303303
    304304                        if ( ! empty( $friend_ids ) ) {
    class BP_User_Query { 
    323323                        $found_user_ids = $wpdb->get_col( $found_user_ids_query );
    324324
    325325                        if ( ! empty( $found_user_ids ) ) {
    326                                 $sql['where'][] = "u.{$this->uid_name} IN (" . implode( ',', wp_parse_id_list( $found_user_ids ) ) . ")";
     326                                $sql['where'][] = "u.{$this->uid_name} IN (" . esc_sql( implode( ',', wp_parse_id_list( $found_user_ids ) ) ) . ")";
    327327                        } else {
    328328                                $sql['where'][] = $this->no_results['where'];
    329329                        }
    class BP_User_Query { 
    341341                        $found_user_ids = $wpdb->get_col( $meta_sql );
    342342
    343343                        if ( ! empty( $found_user_ids ) ) {
    344                                 $sql['where'][] = "u.{$this->uid_name} IN (" . implode( ',', wp_parse_id_list( $found_user_ids ) ) . ")";
     344                                $found_user_ids = esc_sql( implode( ',', wp_parse_id_list( $found_user_ids ) ) );
     345                                $sql['where'][] = "u.{$this->uid_name} IN ({$found_user_ids})";
    345346                        }
    346347                }
    347348
    class BP_User_Query { 
    458459                }
    459460
    460461                // Turn user ID's into a query-usable, comma separated value
    461                 $user_ids_sql = implode( ',', wp_parse_id_list( $this->user_ids ) );
     462                $user_ids_sql = esc_sql( implode( ',', wp_parse_id_list( $this->user_ids ) ) );
    462463
    463464                /**
    464465                 * Use this action to independently populate your own custom extras.
    class BP_Core_User { 
    805806                }
    806807
    807808                if ( !empty( $exclude ) ) {
     809                        $exclude = esc_sql( implode( ',', wp_parse_id_list( $exclude ) ) );
    808810                        $sql['where_exclude'] = "AND u.ID NOT IN ({$exclude})";
    809811                }
    810812
    class BP_Core_User { 
    814816                        $sql['where_users'] = "AND 0 = 1";
    815817                } else {
    816818                        if ( !empty( $include ) ) {
    817                                 if ( is_array( $include ) ) {
    818                                         $uids = $wpdb->escape( implode( ',', (array) $include ) );
    819                                 } else {
    820                                         $uids = $wpdb->escape( $include );
    821                                 }
     819                                $uids = esc_sql( implode( ',', wp_parse_id_list( $include ) ) );;
    822820
    823821                                if ( !empty( $uids ) ) {
    824822                                        $sql['where_users'] = "AND u.ID IN ({$uids})";
    825823                                }
    826824                        } elseif ( !empty( $user_id ) && bp_is_active( 'friends' ) ) {
    827825                                $friend_ids = friends_get_friend_user_ids( $user_id );
    828                                 $friend_ids = $wpdb->escape( implode( ',', (array) $friend_ids ) );
     826                                $friend_ids = $wpdb->escape( implode( ',', wp_parse_id_list( $friend_ids ) ) );
    829827
    830828                                if ( !empty( $friend_ids ) ) {
    831829                                        $sql['where_friends'] = "AND u.ID IN ({$friend_ids})";
    class BP_Core_User { 
    910908                        $user_ids = array();
    911909
    912910                        foreach ( (array) $paged_users as $user ) {
    913                                 $user_ids[] = $user->id;
     911                                $user_ids[] = (int) $user->id;
    914912                        }
    915913
    916                         $user_ids = $wpdb->escape( join( ',', (array) $user_ids ) );
     914                        $user_ids = $wpdb->escape( join( ',', $user_ids ) );
    917915
    918916                        // Add additional data to the returned results
    919917                        $paged_users = BP_Core_User::get_user_extras( $paged_users, $user_ids, $type );
    class BP_Core_User { 
    981979                 */
    982980                $user_ids = array();
    983981                foreach ( (array) $paged_users as $user )
    984                         $user_ids[] = $user->id;
     982                        $user_ids[] = (int) $user->id;
    985983
    986                 $user_ids = $wpdb->escape( join( ',', (array) $user_ids ) );
     984                $user_ids = $wpdb->escape( join( ',', $user_ids ) );
    987985
    988986                // Add additional data to the returned results
    989987                if ( $populate_extras ) {
    class BP_Core_User { 
    10131011
    10141012                $status_sql = bp_core_get_status_sql();
    10151013
     1014                $user_ids = implode( ',', wp_parse_id_list( $user_ids ) );
    10161015                $total_users_sql = apply_filters( 'bp_core_get_specific_users_count_sql', "SELECT COUNT(DISTINCT ID) FROM {$wpdb->users} WHERE {$status_sql} AND ID IN ( " . $wpdb->escape( $user_ids ) . " ) " );
    10171016                $paged_users_sql = apply_filters( 'bp_core_get_specific_users_count_sql', "SELECT DISTINCT ID as id, user_registered, user_nicename, user_login, user_email FROM {$wpdb->users} WHERE {$status_sql} AND ID IN ( " . $wpdb->escape( $user_ids ) . " ) {$pag_sql}" );
    10181017
    class BP_Core_User { 
    10971096                if ( empty( $user_ids ) )
    10981097                        return $paged_users;
    10991098
     1099                $user_ids = esc_sql( implode( ',', wp_parse_id_list( $user_ids ) ) );
     1100
    11001101                // Fetch the user's full name
    11011102                if ( bp_is_active( 'xprofile' ) && 'alphabetical' != $type ) {
    11021103                        $names = $wpdb->get_results( $wpdb->prepare( "SELECT pd.user_id as id, pd.value as fullname FROM {$bp->profile->table_name_fields} pf, {$bp->profile->table_name_data} pd WHERE pf.id = pd.field_id AND pf.name = %s AND pd.user_id IN ( {$user_ids} )", bp_xprofile_fullname_field_name() ) );
  • bp-core/bp-core-filters.php

    diff --git a/bp-core/bp-core-filters.php b/bp-core/bp-core-filters.php
    index d984c24..2a70dc6 100644
    a b function bp_core_filter_comments( $comments, $post_id ) { 
    130130        if ( empty( $user_ids ) )
    131131                return $comments;
    132132
    133         $user_ids = implode( ',', $user_ids );
     133        $user_ids = esc_sql( implode( ',', wp_parse_id_list( $user_ids ) ) );
    134134
    135135        if ( !$userdata = $wpdb->get_results( "SELECT ID as user_id, user_login, user_nicename FROM {$wpdb->users} WHERE ID IN ({$user_ids})" ) )
    136136                return $comments;
  • bp-core/bp-core-functions.php

    diff --git a/bp-core/bp-core-functions.php b/bp-core/bp-core-functions.php
    index 96b7564..0d24386 100644
    a b function bp_core_get_directory_pages() { 
    141141                // Always get page data from the root blog, except on multiblog mode, when it comes
    142142                // from the current blog
    143143                $posts_table_name = bp_is_multiblog_mode() ? $wpdb->posts : $wpdb->get_blog_prefix( bp_get_root_blog_id() ) . 'posts';
    144                 $page_ids_sql     = implode( ',', (array) $page_ids );
     144                $page_ids_sql     = esc_sql( implode( ',', wp_parse_id_list( $page_ids ) ) );
    145145                $page_names       = $wpdb->get_results( "SELECT ID, post_name, post_parent, post_title FROM {$posts_table_name} WHERE ID IN ({$page_ids_sql}) AND post_status = 'publish' " );
    146146
    147147                foreach ( (array) $page_ids as $component_id => $page_id ) {