Make WordPress Core


Ignore:
Timestamp:
06/27/2011 08:47:04 PM (15 years ago)
Author:
ryan
Message:

Sanitize sort_column and sort_order in get_pages(). Escape search_term in WP_User_Search. Cast blog_id to int in get_blog_prefix(). Props duck_

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/post.php

    r18261 r18350  
    34493449        }
    34503450
     3451        $orderby_array = array();
     3452        $allowed_keys = array('author', 'post_author', 'date', 'post_date', 'title', 'post_title', 'modified',
     3453                                                  'post_modified', 'modified_gmt', 'post_modified_gmt', 'menu_order', 'parent', 'post_parent',
     3454                                                  'ID', 'rand', 'comment_count');
     3455        foreach ( explode( ',', $sort_column ) as $orderby ) {
     3456                $orderby = trim( $orderby );
     3457                if ( !in_array( $orderby, $allowed_keys ) )
     3458                        continue;
     3459
     3460                switch ( $orderby ) {
     3461                        case 'menu_order':
     3462                                break;
     3463                        case 'ID':
     3464                                $orderby = "$wpdb->posts.ID";
     3465                                break;
     3466                        case 'rand':
     3467                                $orderby = 'RAND()';
     3468                                break;
     3469                        case 'comment_count':
     3470                                $orderby = "$wpdb->posts.comment_count";
     3471                                break;
     3472                        default:
     3473                                if ( 0 === strpos( $orderby, 'post_' ) )
     3474                                        $orderby = "$wpdb->posts." . $orderby;
     3475                                else
     3476                                        $orderby = "$wpdb->posts.post_" . $orderby;
     3477                }
     3478
     3479                $orderby_array[] = $orderby;
     3480
     3481        }
     3482        $sort_column = ! empty( $orderby_array ) ? implode( ',', $orderby_array ) : "$wpdb->posts.post_title";
     3483
     3484        $sort_order = strtoupper( $sort_order );
     3485        if ( '' !== $sort_order && !in_array( $sort_order, array( 'ASC', 'DESC' ) ) )
     3486                $sort_order = 'ASC';
     3487
    34513488        $query = "SELECT * FROM $wpdb->posts $join WHERE ($where_post_type) $where ";
    34523489        $query .= $author_query;
Note: See TracChangeset for help on using the changeset viewer.