WordPress.org

Make WordPress Core

Ticket #43759: 43759-fix-coding-standards.patch

File 43759-fix-coding-standards.patch, 12.5 KB (added by jipmoors, 20 months ago)
  • src/wp-includes/class-wp-comment-query.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    429429                // Fetch full comment objects from the primed cache.
    430430                $_comments = array();
    431431                foreach ( $comment_ids as $comment_id ) {
    432                         if ( $_comment = get_comment( $comment_id ) ) {
     432                        $_comment = get_comment( $comment_id );
     433                        if ( ! empty( $_comment ) ) {
    433434                                $_comments[] = $_comment;
    434435                        }
    435436                }
     
    524525                                $include_unapproved = preg_split( '/[\s,]+/', $include_unapproved );
    525526                        }
    526527
    527                         $unapproved_ids = $unapproved_emails = array();
    528528                        foreach ( $include_unapproved as $unapproved_identifier ) {
    529529                                // Numeric values are assumed to be user ids.
    530530                                if ( is_numeric( $unapproved_identifier ) ) {
     
    557557                                preg_split( '/[,\s]/', $this->query_vars['orderby'] );
    558558
    559559                        $orderby_array            = array();
    560                         $found_orderby_comment_ID = false;
     560                        $found_orderby_comment_id = false;
    561561                        foreach ( $ordersby as $_key => $_value ) {
    562562                                if ( ! $_value ) {
    563563                                        continue;
     
    571571                                        $_order   = $_value;
    572572                                }
    573573
    574                                 if ( ! $found_orderby_comment_ID && in_array( $_orderby, array( 'comment_ID', 'comment__in' ) ) ) {
    575                                         $found_orderby_comment_ID = true;
     574                                if ( ! $found_orderby_comment_id && in_array( $_orderby, array( 'comment_ID', 'comment__in' ) ) ) {
     575                                        $found_orderby_comment_id = true;
    576576                                }
    577577
    578578                                $parsed = $this->parse_orderby( $_orderby );
     
    595595                        }
    596596
    597597                        // To ensure determinate sorting, always include a comment_ID clause.
    598                         if ( ! $found_orderby_comment_ID ) {
    599                                 $comment_ID_order = '';
     598                        if ( ! $found_orderby_comment_id ) {
     599                                $comment_id_order = '';
    600600
    601601                                // Inherit order from comment_date or comment_date_gmt, if available.
    602602                                foreach ( $orderby_array as $orderby_clause ) {
    603603                                        if ( preg_match( '/comment_date(?:_gmt)*\ (ASC|DESC)/', $orderby_clause, $match ) ) {
    604                                                 $comment_ID_order = $match[1];
     604                                                $comment_id_order = $match[1];
    605605                                                break;
    606606                                        }
    607607                                }
    608608
    609609                                // If no date-related order is available, use the date from the first available clause.
    610                                 if ( ! $comment_ID_order ) {
     610                                if ( ! $comment_id_order ) {
    611611                                        foreach ( $orderby_array as $orderby_clause ) {
    612612                                                if ( false !== strpos( 'ASC', $orderby_clause ) ) {
    613                                                         $comment_ID_order = 'ASC';
     613                                                        $comment_id_order = 'ASC';
    614614                                                } else {
    615                                                         $comment_ID_order = 'DESC';
     615                                                        $comment_id_order = 'DESC';
    616616                                                }
    617617
    618618                                                break;
     
    620620                                }
    621621
    622622                                // Default to DESC.
    623                                 if ( ! $comment_ID_order ) {
    624                                         $comment_ID_order = 'DESC';
     623                                if ( ! $comment_id_order ) {
     624                                        $comment_id_order = 'DESC';
    625625                                }
    626626
    627                                 $orderby_array[] = "$wpdb->comments.comment_ID $comment_ID_order";
     627                                $orderby_array[] = "$wpdb->comments.comment_ID $comment_id_order";
    628628                        }
    629629
    630630                        $orderby = implode( ', ', $orderby_array );
     
    657657
    658658                // Parse comment IDs for an IN clause.
    659659                if ( ! empty( $this->query_vars['comment__in'] ) ) {
     660                        // @todo Use wpdb->prepare on this statement.
    660661                        $this->sql_clauses['where']['comment__in'] = "$wpdb->comments.comment_ID IN ( " . implode( ',', wp_parse_id_list( $this->query_vars['comment__in'] ) ) . ' )';
    661662                }
    662663
    663664                // Parse comment IDs for a NOT IN clause.
    664665                if ( ! empty( $this->query_vars['comment__not_in'] ) ) {
     666                        // @todo Use wpdb->prepare on this statement.
    665667                        $this->sql_clauses['where']['comment__not_in'] = "$wpdb->comments.comment_ID NOT IN ( " . implode( ',', wp_parse_id_list( $this->query_vars['comment__not_in'] ) ) . ' )';
    666668                }
    667669
    668670                // Parse comment parent IDs for an IN clause.
    669671                if ( ! empty( $this->query_vars['parent__in'] ) ) {
     672                        // @todo Use wpdb->prepare on this statement.
    670673                        $this->sql_clauses['where']['parent__in'] = 'comment_parent IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['parent__in'] ) ) . ' )';
    671674                }
    672675
    673676                // Parse comment parent IDs for a NOT IN clause.
    674677                if ( ! empty( $this->query_vars['parent__not_in'] ) ) {
     678                        // @todo Use wpdb->prepare on this statement.
    675679                        $this->sql_clauses['where']['parent__not_in'] = 'comment_parent NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['parent__not_in'] ) ) . ' )';
    676680                }
    677681
    678682                // Parse comment post IDs for an IN clause.
    679683                if ( ! empty( $this->query_vars['post__in'] ) ) {
     684                        // @todo Use wpdb->prepare on this statement.
    680685                        $this->sql_clauses['where']['post__in'] = 'comment_post_ID IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post__in'] ) ) . ' )';
    681686                }
    682687
    683688                // Parse comment post IDs for a NOT IN clause.
    684689                if ( ! empty( $this->query_vars['post__not_in'] ) ) {
     690                        // @todo Use wpdb->prepare on this statement.
    685691                        $this->sql_clauses['where']['post__not_in'] = 'comment_post_ID NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post__not_in'] ) ) . ' )';
    686692                }
    687693
     
    732738
    733739                        if ( ! empty( $comment_types[ $operator ] ) ) {
    734740                                $types_sql = implode( ', ', $comment_types[ $operator ] );
     741                                // @todo Use wpdb->prepare on this statement.
    735742                                $this->sql_clauses['where'][ 'comment_type__' . strtolower( str_replace( ' ', '_', $operator ) ) ] = "comment_type $operator ($types_sql)";
    736743                        }
    737744                }
     
    771778                        $join_posts_table = true;
    772779                        foreach ( $post_fields as $field_name => $field_value ) {
    773780                                // $field_value may be an array.
    774                                 $esses                                     = array_fill( 0, count( (array) $field_value ), '%s' );
    775                                 $this->sql_clauses['where'][ $field_name ] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
     781                                $esses            = implode( ', ', array_fill( 0, count( (array) $field_value ), '%s' ) );
     782                                $field_name_where = sprintf( " {$wpdb->posts}.{$field_name} IN ( %s )", $esses );
     783
     784                                $this->sql_clauses['where'][ $field_name ] = $wpdb->prepare(
     785                                        $field_name_where, // phpcs:ignore WordPress.WP.PreparedSQL.NotPrepared
     786                                        $field_value
     787                                );
    776788                        }
    777789                }
    778790
     
    792804
    793805                                $join_posts_table = true;
    794806
    795                                 $esses                                     = array_fill( 0, count( $q_values ), '%s' );
    796                                 $this->sql_clauses['where'][ $field_name ] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $q_values );
     807                                $esses            = implode( ', ', array_fill( 0, count( $q_values ), '%s' ) );
     808                                $field_name_where = sprintf( " {$wpdb->posts}.{$field_name} IN ( %s )", $esses );
     809
     810                                $this->sql_clauses['where'][ $field_name ] = $wpdb->prepare(
     811                                        $field_name_where, // phpcs:ignore WordPress.WP.PreparedSQL.NotPrepared
     812                                        $q_values
     813                                );
    797814                        }
    798815                }
    799816
    800817                // Comment author IDs for an IN clause.
    801818                if ( ! empty( $this->query_vars['author__in'] ) ) {
     819                        // @todo Use wpdb->prepare on this statement.
    802820                        $this->sql_clauses['where']['author__in'] = 'user_id IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['author__in'] ) ) . ' )';
    803821                }
    804822
    805823                // Comment author IDs for a NOT IN clause.
    806824                if ( ! empty( $this->query_vars['author__not_in'] ) ) {
     825                        // @todo Use wpdb->prepare on this statement.
    807826                        $this->sql_clauses['where']['author__not_in'] = 'user_id NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['author__not_in'] ) ) . ' )';
    808827                }
    809828
    810829                // Post author IDs for an IN clause.
    811830                if ( ! empty( $this->query_vars['post_author__in'] ) ) {
    812                         $join_posts_table                              = true;
     831                        $join_posts_table = true;
     832                        // @todo Use wpdb->prepare on this statement.
    813833                        $this->sql_clauses['where']['post_author__in'] = 'post_author IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post_author__in'] ) ) . ' )';
    814834                }
    815835
    816836                // Post author IDs for a NOT IN clause.
    817837                if ( ! empty( $this->query_vars['post_author__not_in'] ) ) {
    818                         $join_posts_table                                  = true;
     838                        $join_posts_table = true;
     839                        // @todo Use wpdb->prepare on this statement.
    819840                        $this->sql_clauses['where']['post_author__not_in'] = 'post_author NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post_author__not_in'] ) ) . ' )';
    820841                }
    821842
     
    888909
    889910                $this->request = "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['groupby']} {$this->sql_clauses['orderby']} {$this->sql_clauses['limits']}";
    890911
     912                /*
     913                 * The following ignores (WordPress.WP.PreparedSQL.NotPrepared) have been added because the query used is
     914                 * build up right above. There is no possibility it can be changed from the outside (even though it is a
     915                 * public class variable).
     916                 *
     917                 * It cannot be prepared at this location, the separate parts should be
     918                 * prepared instead.
     919                 */
    891920                if ( $this->query_vars['count'] ) {
    892                         return intval( $wpdb->get_var( $this->request ) );
    893                 } else {
    894                         $comment_ids = $wpdb->get_col( $this->request );
    895                         return array_map( 'intval', $comment_ids );
    896                 }
     921                        return intval( $wpdb->get_var( $this->request ) ); // phpcs:ignore WordPress.WP.PreparedSQL.NotPrepared
     922                }
     923
     924                $comment_ids = $wpdb->get_col( $this->request ); // phpcs:ignore WordPress.WP.PreparedSQL.NotPrepared
     925                return array_map( 'intval', $comment_ids );
    897926        }
    898927
    899928        /**
     
    913942                         *
    914943                         * @since 4.4.0
    915944                         *
    916                          * @param string           $found_comments_query SQL query. Default 'SELECT FOUND_ROWS()'.
     945                         * @param string           $found_comments_query SQL query. Default 'SELECT FOUND_ROWS()', should use wpdb->prepare.
    917946                         * @param WP_Comment_Query $comment_query        The `WP_Comment_Query` instance.
    918947                         */
    919948                        $found_comments_query = apply_filters( 'found_comments_query', 'SELECT FOUND_ROWS()', $this );
    920949
    921                         $this->found_comments = (int) $wpdb->get_var( $found_comments_query );
     950                        $this->found_comments = (int) $wpdb->get_var( $found_comments_query ); // phpcs:ignore WordPress.WP.PreparedSQL.NotPrepared
    922951                }
    923952        }
    924953
     
    950979                $exclude_keys = array( 'parent', 'parent__in', 'parent__not_in' );
    951980                do {
    952981                        // Parent-child relationships may be cached. Only query for those that are not.
    953                         $child_ids   = $uncached_parent_ids = array();
     982                        $child_ids           = array();
     983                        $uncached_parent_ids = array();
     984
    954985                        $_parent_ids = $levels[ $level ];
    955986                        foreach ( $_parent_ids as $parent_id ) {
    956987                                $cache_key        = "get_comment_child_ids:$parent_id:$key:$last_changed";
     
    9951026
    9961027                // Prime comment caches for non-top-level comments.
    9971028                $descendant_ids = array();
    998                 for ( $i = 1, $c = count( $levels ); $i < $c; $i++ ) {
     1029                $c              = count( $levels );
     1030                for ( $i = 1; $i < $c; $i ++ ) {
    9991031                        $descendant_ids = array_merge( $descendant_ids, $levels[ $i ] );
    10001032                }
    10011033
     
    10091041
    10101042                // If a threaded representation was requested, build the tree.
    10111043                if ( 'threaded' === $this->query_vars['hierarchical'] ) {
    1012                         $threaded_comments = $ref = array();
     1044                        $threaded_comments = array();
     1045                        $ref               = array();
     1046
    10131047                        foreach ( $all_comments as $k => $c ) {
    10141048                                $_c = get_comment( $c->comment_ID );
    10151049
     
    10461080         *
    10471081         * @global wpdb $wpdb WordPress database abstraction object.
    10481082         *
    1049          * @param string $string
    1050          * @param array $cols
    1051          * @return string
     1083         * @param string $string Search string.
     1084         * @param array  $cols   List of columns to search in.
     1085         * @return string Prepared database query.
    10521086         */
    10531087        protected function get_search_sql( $string, $cols ) {
    10541088                global $wpdb;
     
    10571091
    10581092                $searches = array();
    10591093                foreach ( $cols as $col ) {
    1060                         $searches[] = $wpdb->prepare( "$col LIKE %s", $like );
     1094                        /*
     1095                         * The following ignore (WordPress.WP.PreparedSQL.NotPrepared) has been added because
     1096                         * rewriting this code to have a more dynamic build-up of the query would make it
     1097                         * less readable/usable.
     1098                         */
     1099                        $searches[] = $wpdb->prepare( "$col LIKE %s", $like ); // phpcs:ignore WordPress.WP.PreparedSQL.NotPrepared
    10611100                }
    10621101
    10631102                return ' AND (' . implode( ' OR ', $searches ) . ')';
     
    11061145                }
    11071146
    11081147                $parsed = false;
    1109                 if ( $orderby == $this->query_vars['meta_key'] || $orderby == 'meta_value' ) {
     1148                if ( $orderby === $this->query_vars['meta_key'] || 'meta_value' === $orderby ) {
    11101149                        $parsed = "$wpdb->commentmeta.meta_value";
    1111                 } elseif ( $orderby == 'meta_value_num' ) {
     1150                } elseif ( 'meta_value_num' === $orderby ) {
    11121151                        $parsed = "$wpdb->commentmeta.meta_value+0";
    1113                 } elseif ( $orderby == 'comment__in' ) {
     1152                } elseif ( 'comment__in' === $orderby ) {
    11141153                        $comment__in = implode( ',', array_map( 'absint', $this->query_vars['comment__in'] ) );
    11151154                        $parsed      = "FIELD( {$wpdb->comments}.comment_ID, $comment__in )";
    11161155                } elseif ( in_array( $orderby, $allowed_keys ) ) {