Parsed: 118650

function get_comment_count( $post_id = 0 ) {
  $post_id = (int) $post_id;

  $comment_count = array(
    'approved'            => 0,
    'awaiting_moderation' => 0,
    'spam'                => 0,
    'trash'               => 0,
    'post-trashed'        => 0,
    'total_comments'      => 0,
    'all'                 => 0,
  );

  $args = array(
    'count'                     => true,
    'update_comment_meta_cache' => false,
    'orderby'                   => 'none',
  );
  if ( $post_id > 0 ) {
    $args['post_id'] = $post_id;
  }
  $mapping       = array(
    'approved'            => 'approve',
    'awaiting_moderation' => 'hold',
    'spam'                => 'spam',
    'trash'               => 'trash',
    'post-trashed'        => 'post-trashed',
  );
  $comment_count = array();
  foreach ( $mapping as $key => $value ) {
    $comment_count[ $key ] = get_comments( array_merge( $args, array( 'status' => $value ) ) );
  }

  $comment_count['all']            = $comment_count['approved'] + $comment_count['awaiting_moderation'];
  $comment_count['total_comments'] = $comment_count['all'] + $comment_count['spam'];

  return array_map( 'intval', $comment_count );
}