WordPress.org

Make WordPress Core

Ticket #33947: 33947.1.diff

File 33947.1.diff, 3.5 KB (added by dipesh.kakadiya, 6 years ago)

Fixed PHPCS & Add more unittest for Comment object

  • 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
    440445        // 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 );
    447452                // For comment authors who are the author of the post
    448                 if ( $post = get_post($post_id) ) {
     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
     464        if ( empty( $comment_depth ) ) {
    458465                $comment_depth = 1;
    459         if ( empty($comment_thread_alt) )
     466        }
     467
     468        if ( empty( $comment_thread_alt ) ) {
    460469                $comment_thread_alt = 0;
     470        }
    461471
    462472        if ( $comment_alt % 2 ) {
    463473                $classes[] = 'odd';
     
    481491
    482492        $classes[] = "depth-$comment_depth";
    483493
    484         if ( !empty($class) ) {
    485                 if ( !is_array( $class ) )
    486                         $class = preg_split('#\s+#', $class);
    487                 $classes = array_merge($classes, $class);
     494        if ( ! empty( $class ) ) {
     495                if ( ! is_array( $class ) ) {
     496                        $class = preg_split( '#\s+#', $class );
     497                }
     498                $classes = array_merge( $classes, $class );
    488499        }
    489500
    490         $classes = array_map('esc_attr', $classes);
     501        $classes = array_map( 'esc_attr', $classes );
    491502
    492503        /**
    493504         * 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  No newline at end of file
     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( array( 'test' ), $comment_id );
     41                $this->assertContains( 'test', $classes1 );
     42                $this->assertContains( 'comment', $classes1 );
     43
     44                $classes2 = get_comment_class( 'test', $comment_id );
     45                $this->assertContains( 'test', $classes2 );
     46                $this->assertContains( 'comment', $classes2 );
     47
     48                $obj_comment = get_comment( $comment_id );
     49                $classes3 = get_comment_class( 'test', $obj_comment );
     50                $this->assertContains( 'test', $classes3 );
     51                $this->assertContains( 'comment', $classes3 );
     52
     53                wp_delete_comment( $comment_id, true );
     54
     55                $classes4 = get_comment_class( 'test', $comment_id );
     56                $this->assertEquals( array(), $classes4 );
     57        }
     58
     59}