WordPress.org

Make WordPress Core

Ticket #6772: 6772-absint-concat-and-parent.diff

File 6772-absint-concat-and-parent.diff, 6.9 KB (added by mdawaffe, 6 years ago)
  • wp-includes/query.php

     
    515515                if ( ! empty($qv['robots']) ) 
    516516                        $this->is_robots = true; 
    517517 
    518                 $qv['p'] =  (int) $qv['p']; 
    519                 $qv['page_id'] =  (int) $qv['page_id']; 
    520                 $qv['year'] = (int) $qv['year']; 
    521                 $qv['monthnum'] = (int) $qv['monthnum']; 
    522                 $qv['day'] = (int) $qv['day']; 
    523                 $qv['w'] = (int) $qv['w']; 
    524                 $qv['m'] =  (int) $qv['m']; 
     518                $qv['p'] =  absint($qv['p']); 
     519                $qv['page_id'] =  absint($qv['page_id']); 
     520                $qv['year'] = absint($qv['year']); 
     521                $qv['monthnum'] = absint($qv['monthnum']); 
     522                $qv['day'] = absint($qv['day']); 
     523                $qv['w'] = absint($qv['w']); 
     524                $qv['m'] = absint($qv['m']); 
    525525                $qv['cat'] = preg_replace( '|[^0-9,-]|', '', $qv['cat'] ); // comma separated list of positive or negative integers 
    526                 if ( '' !== $qv['hour'] ) $qv['hour'] = (int) $qv['hour']; 
    527                 if ( '' !== $qv['minute'] ) $qv['minute'] = (int) $qv['minute']; 
    528                 if ( '' !== $qv['second'] ) $qv['second'] = (int) $qv['second']; 
     526                if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']); 
     527                if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']); 
     528                if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']); 
    529529 
    530530                // Compat.  Map subpost to attachment. 
    531531                if ( '' != $qv['subpost'] ) 
     
    533533                if ( '' != $qv['subpost_id'] ) 
    534534                        $qv['attachment_id'] = $qv['subpost_id']; 
    535535 
    536                 $qv['attachment_id'] = (int) $qv['attachment_id']; 
     536                $qv['attachment_id'] = absint($qv['attachment_id']); 
    537537 
    538538                if ( ('' != $qv['attachment']) || !empty($qv['attachment_id']) ) { 
    539539                        $this->is_single = true; 
     
    624624                        if ( !is_array($qv['category__in']) || empty($qv['category__in']) ) { 
    625625                                $qv['category__in'] = array(); 
    626626                        } else { 
    627                                 $qv['category__in'] = array_map('intval', $qv['category__in']); 
     627                                $qv['category__in'] = array_map('absint', $qv['category__in']); 
    628628                                $this->is_category = true; 
    629629                        } 
    630630 
    631631                        if ( !is_array($qv['category__not_in']) || empty($qv['category__not_in']) ) { 
    632632                                $qv['category__not_in'] = array(); 
    633633                        } else { 
    634                                 $qv['category__not_in'] = array_map('intval', $qv['category__not_in']); 
     634                                $qv['category__not_in'] = array_map('absint', $qv['category__not_in']); 
    635635                        } 
    636636 
    637637                        if ( !is_array($qv['category__and']) || empty($qv['category__and']) ) { 
    638638                                $qv['category__and'] = array(); 
    639639                        } else { 
    640                                 $qv['category__and'] = array_map('intval', $qv['category__and']); 
     640                                $qv['category__and'] = array_map('absint', $qv['category__and']); 
    641641                                $this->is_category = true; 
    642642                        } 
    643643 
    644644                        if (  '' != $qv['tag'] ) 
    645645                                $this->is_tag = true; 
    646646 
    647                         $qv['tag_id'] = (int) $qv['tag_id']; 
     647                        $qv['tag_id'] = absint($qv['tag_id']); 
    648648                        if (  !empty($qv['tag_id']) ) 
    649649                                $this->is_tag = true; 
    650650 
    651651                        if ( !is_array($qv['tag__in']) || empty($qv['tag__in']) ) { 
    652652                                $qv['tag__in'] = array(); 
    653653                        } else { 
    654                                 $qv['tag__in'] = array_map('intval', $qv['tag__in']); 
     654                                $qv['tag__in'] = array_map('absint', $qv['tag__in']); 
    655655                                $this->is_tag = true; 
    656656                        } 
    657657 
    658658                        if ( !is_array($qv['tag__not_in']) || empty($qv['tag__not_in']) ) { 
    659659                                $qv['tag__not_in'] = array(); 
    660660                        } else { 
    661                                 $qv['tag__not_in'] = array_map('intval', $qv['tag__not_in']); 
     661                                $qv['tag__not_in'] = array_map('absint', $qv['tag__not_in']); 
    662662                        } 
    663663 
    664664                        if ( !is_array($qv['tag__and']) || empty($qv['tag__and']) ) { 
    665665                                $qv['tag__and'] = array(); 
    666666                        } else { 
    667                                 $qv['tag__and'] = array_map('intval', $qv['tag__and']); 
     667                                $qv['tag__and'] = array_map('absint', $qv['tag__and']); 
    668668                                $this->is_category = true; 
    669669                        } 
    670670 
     
    871871 
    872872                if (isset($q['page'])) { 
    873873                        $q['page'] = trim($q['page'], '/'); 
    874                         $q['page'] = (int) $q['page']; 
    875                         $q['page'] = abs($q['page']); 
     874                        $q['page'] = absint($q['page']); 
    876875                } 
    877876 
    878877                // If a month is specified in the querystring, load that month 
     
    949948                        $where .= " AND WEEK($wpdb->posts.post_date, 1)='" . $q['w'] . "'"; 
    950949 
    951950                if ( intval($q['comments_popup']) ) 
    952                         $q['p'] = intval($q['comments_popup']); 
     951                        $q['p'] = absint($q['comments_popup']); 
    953952 
    954953                // If an attachment is requested by number, let it supercede any post number. 
    955954                if ( $q['attachment_id'] ) 
    956                         $q['p'] = $q['attachment_id']; 
     955                        $q['p'] = absint($q['attachment_id']); 
    957956 
    958957                // If a post number is specified, load that post 
    959                 if ( $q['p'] ) 
    960                         $where = " AND {$wpdb->posts}.ID = " . $q['p']; 
    961                 elseif ( $q['post_parent'] )  
    962                         $where = $wpdb->prepare("AND $wpdb->posts.post_parent = %d ", $q['post_parent']); 
    963                 elseif ( $q['post__in'] ) { 
    964                         $post__in = "'" . implode("', '", $q['post__in']) . "'"; 
    965                         $where = " AND {$wpdb->posts}.ID IN ($post__in)"; 
     958                if ( $q['p'] ) { 
     959                        $where .= " AND {$wpdb->posts}.ID = " . $q['p']; 
     960                } elseif ( $q['post__in'] ) { 
     961                        $post__in = implode(',', array_map( 'absint', $q['post__in'] )); 
     962                        $where .= " AND {$wpdb->posts}.ID IN ($post__in)"; 
    966963                } elseif ( $q['post__not_in'] ) { 
    967                         $post__not_in = "'" . implode("', '", $q['post__not_in']) . "'"; 
    968                         $where = " AND {$wpdb->posts}.ID NOT IN ($post__not_in)"; 
     964                        $post__not_in = implode(',',  array_map( 'absint', $q['post__not_in'] )); 
     965                        $where .= " AND {$wpdb->posts}.ID NOT IN ($post__not_in)"; 
    969966                } 
    970967 
     968                if ( $q['post_parent'] ) 
     969                        $where .= $wpdb->prepare( " AND $wpdb->posts.post_parent = %d ", $q['post_parent'] ); 
     970 
    971971                if ( $q['page_id'] ) { 
    972972                        if  ( ('page' != get_option('show_on_front') ) || ( $q['page_id'] != get_option('page_for_posts') ) ) { 
    973973                                $q['p'] = $q['page_id']; 
     
    12071207                                $eq = '!='; 
    12081208                                $andor = 'AND'; 
    12091209                                $q['author'] = explode('-', $q['author']); 
    1210                                 $q['author'] = ''.intval($q['author'][1]); 
     1210                                $q['author'] = '' . absint($q['author'][1]); 
    12111211                        } else { 
    12121212                                $eq = '='; 
    12131213                                $andor = 'OR'; 
    12141214                        } 
    12151215                        $author_array = preg_split('/[,\s]+/', $q['author']); 
    1216                         $whichauthor .= " AND ($wpdb->posts.post_author ".$eq.' '.intval($author_array[0]); 
     1216                        $whichauthor .= " AND ($wpdb->posts.post_author ".$eq.' '.absint($author_array[0]); 
    12171217                        for ($i = 1; $i < (count($author_array)); $i = $i + 1) { 
    1218                                 $whichauthor .= ' '.$andor." $wpdb->posts.post_author ".$eq.' '.intval($author_array[$i]); 
     1218                                $whichauthor .= ' '.$andor." $wpdb->posts.post_author ".$eq.' '.absint($author_array[$i]); 
    12191219                        } 
    12201220                        $whichauthor .= ')'; 
    12211221                } 
     
    12331233                        } 
    12341234                        $q['author_name'] = sanitize_title($q['author_name']); 
    12351235                        $q['author'] = $wpdb->get_var("SELECT ID FROM $wpdb->users WHERE user_nicename='".$q['author_name']."'"); 
    1236                         $whichauthor .= " AND ($wpdb->posts.post_author = ".intval($q['author']).')'; 
     1236                        $whichauthor .= " AND ($wpdb->posts.post_author = ".absint($q['author']).')'; 
    12371237                } 
    12381238 
    12391239                // MIME-Type stuff for attachment browsing 
     
    13731373 
    13741374                        if ( empty($q['offset']) ) { 
    13751375                                $pgstrt = ''; 
    1376                                 $pgstrt = (intval($page) -1) * $q['posts_per_page'] . ', '; 
     1376                                $pgstrt = ($page - 1) * $q['posts_per_page'] . ', '; 
    13771377                                $limits = 'LIMIT '.$pgstrt.$q['posts_per_page']; 
    13781378                        } else { // we're ignoring $page and using 'offset' 
    13791379                                $q['offset'] = absint($q['offset']);