Make WordPress Core

Ticket #17737: 17737.diff

File 17737.diff, 4.4 KB (added by wonderboymusic, 11 years ago)
  • src/wp-includes/query.php

     
    14711471                $qv['paged'] = absint($qv['paged']);
    14721472                $qv['cat'] = preg_replace( '|[^0-9,-]|', '', $qv['cat'] ); // comma separated list of positive or negative integers
    14731473                $qv['author'] = preg_replace( '|[^0-9,-]|', '', $qv['author'] ); // comma separated list of positive or negative integers
    1474                 $qv['pagename'] = trim( $qv['pagename'] );
    1475                 $qv['name'] = trim( $qv['name'] );
     1474                $qv['pagename'] = ! is_array( $qv['pagename'] ) ? trim( $qv['pagename'] ) : '';
     1475                $qv['name'] = ! is_array( $qv['name'] ) ? trim( $qv['name'] ) : '';
    14761476                if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']);
    14771477                if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']);
    14781478                if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']);
     
    14831483                        $qv['s'] = '';
    14841484
    14851485                // Compat. Map subpost to attachment.
    1486                 if ( '' != $qv['subpost'] )
     1486                if ( '' != $qv['subpost'] && ! is_array( $qv['subpost'] ) )
    14871487                        $qv['attachment'] = $qv['subpost'];
    14881488                if ( '' != $qv['subpost_id'] )
    14891489                        $qv['attachment_id'] = $qv['subpost_id'];
     
    17391739                        if ( 'post_tag' == $taxonomy )
    17401740                                continue;       // Handled further down in the $q['tag'] block
    17411741
    1742                         if ( $t->query_var && !empty( $q[$t->query_var] ) ) {
     1742                        if ( $t->query_var && ! empty( $q[ $t->query_var ] ) && ! is_array( $q[ $t->query_var ] ) ) {
    17431743                                $tax_query_defaults = array(
    17441744                                        'taxonomy' => $taxonomy,
    17451745                                        'field' => 'slug',
     
    17671767                }
    17681768
    17691769                // Category stuff
    1770                 if ( !empty($q['cat']) && '0' != $q['cat'] && !$this->is_singular && $this->query_vars_changed ) {
    1771                         $q['cat'] = ''.urldecode($q['cat']).'';
     1770                if ( ! empty( $q['cat'] ) && ! is_array( $q['cat'] ) && '0' != $q['cat'] && ! $this->is_singular && $this->query_vars_changed ) {
     1771                        $q['cat'] = urldecode($q['cat']);
    17721772                        $q['cat'] = addslashes_gpc($q['cat']);
    17731773                        $cat_array = preg_split('/[,\s]+/', $q['cat']);
    17741774                        $q['cat'] = '';
     
    18291829                }
    18301830
    18311831                // Tag stuff
    1832                 if ( '' != $q['tag'] && !$this->is_singular && $this->query_vars_changed ) {
     1832                if ( '' != $q['tag'] && ! is_array( $q['tag'] ) && ! $this->is_singular && $this->query_vars_changed ) {
    18331833                        if ( strpos($q['tag'], ',') !== false ) {
    18341834                                $tags = preg_split('/[,\r\n\t ]+/', $q['tag']);
    18351835                                foreach ( (array) $tags as $tag ) {
     
    22432243                        $q['page_id'] = get_option('page_on_front');
    22442244                }
    22452245
    2246                 if ( isset($q['page']) ) {
     2246                if ( isset( $q['page'] ) && ! is_array( $q['page'] ) ) {
    22472247                        $q['page'] = trim($q['page'], '/');
    22482248                        $q['page'] = absint($q['page']);
    22492249                }
     
    24252425                }
    24262426
    24272427                // If a search pattern is specified, load the posts that match.
    2428                 if ( ! empty( $q['s'] ) )
     2428                if ( ! empty( $q['s'] ) && ! is_array( $q['s'] ) )
    24292429                        $search = $this->parse_search( $q );
    24302430
    24312431                // Taxonomies
     
    25132513
    25142514                // Author/user stuff
    25152515
    2516                 if ( ! empty( $q['author'] ) && $q['author'] != '0' ) {
    2517                         $q['author'] = addslashes_gpc( '' . urldecode( $q['author'] ) );
     2516                if ( ! empty( $q['author'] ) && ! is_array( $q['author'] ) && $q['author'] != '0' ) {
     2517                        $q['author'] = addslashes_gpc( urldecode( $q['author'] ) );
    25182518                        $authors = array_unique( array_map( 'intval', preg_split( '/[,\s]+/', $q['author'] ) ) );
    25192519                        foreach ( $authors as $author ) {
    25202520                                $key = $author > 0 ? 'author__in' : 'author__not_in';
     
    25332533
    25342534                // Author stuff for nice URLs
    25352535
    2536                 if ( '' != $q['author_name'] ) {
     2536                if ( '' != $q['author_name'] && ! is_array( $q['author_name'] ) ) {
    25372537                        if ( strpos($q['author_name'], '/') !== false ) {
    25382538                                $q['author_name'] = explode('/', $q['author_name']);
    25392539                                if ( $q['author_name'][ count($q['author_name'])-1 ] ) {
     
    25562556
    25572557                $where .= $search . $whichauthor . $whichmimetype;
    25582558
    2559                 if ( empty($q['order']) || ((strtoupper($q['order']) != 'ASC') && (strtoupper($q['order']) != 'DESC')) )
     2559                if ( empty( $q['order'] ) || is_array( $q['order'] ) || ! in_array( strtoupper( $q['order'] ), array( 'ASC', 'DESC' ) ) )
    25602560                        $q['order'] = 'DESC';
    25612561
    25622562                // Order by
    25632563                if ( empty($q['orderby']) ) {
    25642564                        $orderby = "$wpdb->posts.post_date " . $q['order'];
    2565                 } elseif ( 'none' == $q['orderby'] ) {
     2565                } elseif ( 'none' == $q['orderby'] || is_array( $q['orderby'] ) ) {
    25662566                        $orderby = '';
    25672567                } elseif ( $q['orderby'] == 'post__in' && ! empty( $post__in ) ) {
    25682568                        $orderby = "FIELD( {$wpdb->posts}.ID, $post__in )";