WordPress.org

Make WordPress Core

Ticket #33947: 33947.patch

File 33947.patch, 3.0 KB (added by walterebert, 6 years ago)

Patch + unit test

  • src/wp-includes/comment-template.php

     
    433433function get_comment_class( $class = '', $comment_id = null, $post_id = null ) {
    434434        global $comment_alt, $comment_depth, $comment_thread_alt;
    435435
    436         $comment = get_comment($comment_id);
     436        $comment = get_comment( $comment_id );
    437437
     438        // Verify if comment is a WP_Comment object.
     439        if ( ! $comment instanceof WP_Comment ) {
     440                return array();
     441        }
     442
    438443        $classes = array();
    439444
    440         // Get the comment type (comment, trackback),
     445        // Get the comment type (comment, trackback).
    441446        $classes[] = ( empty( $comment->comment_type ) ) ? 'comment' : $comment->comment_type;
    442447
    443448        // Add classes for comment authors that are registered users.
    444         if ( $comment->user_id > 0 && $user = get_userdata( $comment->user_id ) ) {
     449        if ( ! empty( $comment->user_id ) && $user = get_userdata( $comment->user_id ) ) {
    445450                $classes[] = 'byuser';
    446451                $classes[] = 'comment-author-' . sanitize_html_class( $user->user_nicename, $comment->user_id );
    447                 // For comment authors who are the author of the post
    448                 if ( $post = get_post($post_id) ) {
     452                // For comment authors who are the author of the post.
     453                if ( $post = get_post( $post_id ) ) {
    449454                        if ( $comment->user_id === $post->post_author ) {
    450455                                $classes[] = 'bypostauthor';
    451456                        }
    452457                }
    453458        }
    454459
    455         if ( empty($comment_alt) )
     460        if ( empty( $comment_alt ) ) {
    456461                $comment_alt = 0;
    457         if ( empty($comment_depth) )
     462        }
     463        if ( empty( $comment_depth ) ) {
    458464                $comment_depth = 1;
    459         if ( empty($comment_thread_alt) )
     465        }
     466        if ( empty( $comment_thread_alt ) ) {
    460467                $comment_thread_alt = 0;
    461 
     468        }
    462469        if ( $comment_alt % 2 ) {
    463470                $classes[] = 'odd';
    464471                $classes[] = 'alt';
     
    481488
    482489        $classes[] = "depth-$comment_depth";
    483490
    484         if ( !empty($class) ) {
    485                 if ( !is_array( $class ) )
    486                         $class = preg_split('#\s+#', $class);
    487                 $classes = array_merge($classes, $class);
     491        if ( ! empty( $class ) ) {
     492                if ( ! is_array( $class ) ) {
     493                        $class = preg_split( '#\s+#', $class );
    488494        }
     495                $classes = array_merge( $classes, $class );
     496        }
    489497
    490         $classes = array_map('esc_attr', $classes);
     498        $classes = array_map( 'esc_attr', $classes );
    491499
    492500        /**
    493501         * Filter the returned CSS classes for the current comment.
  • tests/phpunit/tests/comment/template.php

     
    3030                $this->assertEquals( 12, get_comments_number() );
    3131        }
    3232
     33        /**
     34         * @ticket 33947
     35         */
     36        public function test_get_comment_class_with_comment_id() {
     37                $post_id = $this->factory->post->create();
     38                $comment_id = $this->factory->comment->create( array( 'comment_post_ID' => $post_id ) );
     39
     40                $classes1 = get_comment_class( 'test', $comment_id );
     41                $this->assertContains( 'test', $classes1 );
     42
     43                wp_delete_comment( $comment_id, true );
     44
     45                $classes2 = get_comment_class( 'test', $comment_id );
     46                $this->assertEquals( array(), $classes2 );
    3347}
     48}
     49 No newline at end of file