WordPress.org

Make WordPress Core

Ticket #20487: comment_search_20487_v3.diff

File comment_search_20487_v3.diff, 3.8 KB (added by brokentone, 2 years ago)
  • wp-includes/comment.php

     
    222222                        'type' => '', 
    223223                        'user_id' => '', 
    224224                        'search' => '', 
     225                        'search_wild' => 'both', 
     226                        'search_columns' => array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_content' ), 
    225227                        'count' => false 
    226228                ); 
     229                if(isset($query_vars['search_columns'])) $query_vars['search_columns'] = array_intersect($query_vars['search_columns'], $defaults['search_columns']);  
    227230 
    228231                $this->query_vars = wp_parse_args( $query_vars, $defaults ); 
    229232                do_action_ref_array( 'pre_get_comments', array( &$this ) ); 
     
    322325                if ( '' !== $user_id ) 
    323326                        $where .= $wpdb->prepare( ' AND user_id = %d', $user_id ); 
    324327                if ( '' !== $search ) 
    325                         $where .= $this->get_search_sql( $search, array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_content' ) ); 
     328                        $where .= $this->get_search_sql( $search, $search_columns, $search_wild ); 
    326329 
    327330                $post_fields = array_filter( compact( array( 'post_author', 'post_name', 'post_parent', 'post_status', 'post_type', ) ) ); 
    328331                if ( ! empty( $post_fields ) ) { 
     
    337340                        $$piece = isset( $clauses[ $piece ] ) ? $clauses[ $piece ] : ''; 
    338341 
    339342                $query = "SELECT $fields FROM $wpdb->comments $join WHERE $where ORDER BY $orderby $order $limits"; 
    340  
    341343                if ( $count ) 
    342344                        return $wpdb->get_var( $query ); 
    343345 
     
    357359         * 
    358360         * @param string $string 
    359361         * @param array $cols 
     362         * @param string $wild Allowing wildcard searches, false, leading, trailing, or both. 
    360363         * @return string 
    361364         */ 
    362         function get_search_sql( $string, $cols ) { 
    363                 $string = esc_sql( like_escape( $string ) ); 
     365        function get_search_sql( $string, $cols, $wild = false ) { 
     366                $string = esc_sql( $string ); 
    364367 
    365368                $searches = array(); 
     369                $leading_wild = ( 'leading' == $wild || 'both' == $wild ) ? '%' : ''; 
     370                $trailing_wild = ( 'trailing' == $wild || 'both' == $wild ) ? '%' : ''; 
     371 
    366372                foreach ( $cols as $col ) 
    367                         $searches[] = "$col LIKE '%$string%'"; 
     373                        $searches[] = "$col LIKE '$leading_wild" . like_escape($string) . "$trailing_wild'"; 
    368374 
    369375                return ' AND (' . implode(' OR ', $searches) . ')'; 
    370376        } 
  • wp-admin/includes/class-wp-comments-list-table.php

     
    5050                $comment_type = !empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : ''; 
    5151 
    5252                $search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : ''; 
     53                $search_wild = ( isset( $_REQUEST['s_wild'] ) ) ? $_REQUEST['s_wild'] : ''; 
     54                $search_columns = ( isset( $_REQUEST['s_columns'] ) ) ? $_REQUEST['s_columns'] : ''; 
    5355 
    5456                $user_id = ( isset( $_REQUEST['user_id'] ) ) ? $_REQUEST['user_id'] : ''; 
    5557 
     
    8789                $args = array( 
    8890                        'status' => isset( $status_map[$comment_status] ) ? $status_map[$comment_status] : $comment_status, 
    8991                        'search' => $search, 
     92                        'search_wild' => ( $search_wild ) ? $search_wild : 'both', 
    9093                        'user_id' => $user_id, 
    9194                        'offset' => $start, 
    9295                        'number' => $number, 
     
    9598                        'orderby' => $orderby, 
    9699                        'order' => $order, 
    97100                ); 
     101                // Only set $args['search_columns'] if $search_columns exists so that default columns override otherwise 
     102                if($search_columns) $args['search_columns'] = (array)$search_columns; 
    98103 
    99104                $_comments = get_comments( $args ); 
    100105 
     
    462467                        } 
    463468                        echo '<a href="edit-comments.php?s='; 
    464469                        comment_author_IP(); 
    465                         echo '&amp;mode=detail'; 
     470                        echo '&amp;mode=detail&amp;s_wild=none&amp;s_columns=comment_author_IP'; 
    466471                        if ( 'spam' == $comment_status ) 
    467472                                echo '&amp;comment_status=spam'; 
    468473                        echo '">';