function comment_view

Same name in other branches
  1. 8.9.x core/modules/comment/comment.module \comment_view()

Generate an array for rendering the given comment.

Parameters

$comment: A comment object.

$node: The node the comment is attached to.

$view_mode: View mode, e.g. 'full', 'teaser'...

$langcode: (optional) A language code to use for rendering. Defaults to the global content language of the current request.

Return value

An array as expected by drupal_render().

5 calls to comment_view()
CommentContentRebuild::testCommentRebuild in modules/comment/comment.test
Test to ensure that the comment's content array is rebuilt for every call to comment_view().
comment_preview in modules/comment/comment.module
Generate a comment preview.
comment_reply in modules/comment/comment.pages.inc
This function is responsible for generating a comment reply form. There are several cases that have to be handled, including:
comment_unpublish_by_keyword_action in modules/comment/comment.module
Unpublishes a comment if it contains certain keywords.
comment_view_multiple in modules/comment/comment.module
Construct a drupal_render() style array from an array of loaded comments.
1 string reference to 'comment_view'
trigger_comment_view in modules/trigger/trigger.module
Implements hook_comment_view().

File

modules/comment/comment.module, line 926

Code

function comment_view($comment, $node, $view_mode = 'full', $langcode = NULL) {
    if (!isset($langcode)) {
        $langcode = $GLOBALS['language_content']->language;
    }
    // Populate $comment->content with a render() array.
    comment_build_content($comment, $node, $view_mode, $langcode);
    $build = $comment->content;
    // We don't need duplicate rendering info in comment->content.
    unset($comment->content);
    $build += array(
        '#theme' => 'comment__node_' . $node->type,
        '#comment' => $comment,
        '#node' => $node,
        '#view_mode' => $view_mode,
        '#language' => $langcode,
    );
    if (empty($comment->in_preview)) {
        $prefix = '';
        $is_threaded = isset($comment->divs) && variable_get('comment_default_mode_' . $node->type, COMMENT_MODE_THREADED) == COMMENT_MODE_THREADED;
        // Add 'new' anchor if needed.
        if (!empty($comment->first_new)) {
            $prefix .= "<a id=\"new\"></a>\n";
        }
        // Add indentation div or close open divs as needed.
        if ($is_threaded) {
            $prefix .= $comment->divs <= 0 ? str_repeat('</div>', abs($comment->divs)) : "\n" . '<div class="indented">';
        }
        // Add anchor for each comment.
        $prefix .= "<a id=\"comment-{$comment->cid}\"></a>\n";
        $build['#prefix'] = $prefix;
        // Close all open divs.
        if ($is_threaded && !empty($comment->divs_final)) {
            $build['#suffix'] = str_repeat('</div>', $comment->divs_final);
        }
    }
    // Allow modules to modify the structured comment.
    $type = 'comment';
    drupal_alter(array(
        'comment_view',
        'entity_view',
    ), $build, $type);
    return $build;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.