function template_preprocess_comment

Same name in other branches
  1. 9 core/modules/comment/comment.module \template_preprocess_comment()
  2. 8.9.x core/modules/comment/comment.module \template_preprocess_comment()
  3. 10 core/modules/comment/comment.module \template_preprocess_comment()
  4. 11.x core/modules/comment/comment.module \template_preprocess_comment()

Process variables for comment.tpl.php.

See also

comment.tpl.php

File

modules/comment/comment.module, line 2303

Code

function template_preprocess_comment(&$variables) {
    $comment = $variables['elements']['#comment'];
    $node = $variables['elements']['#node'];
    $variables['comment'] = $comment;
    $variables['node'] = $node;
    $variables['author'] = theme('username', array(
        'account' => $comment,
    ));
    $variables['created'] = format_date($comment->created);
    // Avoid calling format_date() twice on the same timestamp.
    if ($comment->changed == $comment->created) {
        $variables['changed'] = $variables['created'];
    }
    else {
        $variables['changed'] = format_date($comment->changed);
    }
    $variables['new'] = !empty($comment->new) ? t('new') : '';
    $variables['picture'] = theme_get_setting('toggle_comment_user_picture') ? theme('user_picture', array(
        'account' => $comment,
    )) : '';
    $variables['signature'] = $comment->signature;
    $uri = entity_uri('comment', $comment);
    $uri['options'] += array(
        'attributes' => array(
            'class' => array(
                'permalink',
            ),
            'rel' => 'bookmark',
        ),
    );
    $variables['title'] = l($comment->subject, $uri['path'], $uri['options']);
    $variables['permalink'] = l(t('Permalink'), $uri['path'], $uri['options']);
    $variables['submitted'] = t('Submitted by !username on !datetime', array(
        '!username' => $variables['author'],
        '!datetime' => $variables['created'],
    ));
    // Preprocess fields.
    field_attach_preprocess('comment', $comment, $variables['elements'], $variables);
    // Helpful $content variable for templates.
    foreach (element_children($variables['elements']) as $key) {
        $variables['content'][$key] = $variables['elements'][$key];
    }
    // Set status to a string representation of comment->status.
    if (isset($comment->in_preview)) {
        $variables['status'] = 'comment-preview';
    }
    else {
        $variables['status'] = $comment->status == COMMENT_NOT_PUBLISHED ? 'comment-unpublished' : 'comment-published';
    }
    // Gather comment classes.
    // 'comment-published' class is not needed, it is either 'comment-preview' or
    // 'comment-unpublished'.
    if ($variables['status'] != 'comment-published') {
        $variables['classes_array'][] = $variables['status'];
    }
    if ($variables['new']) {
        $variables['classes_array'][] = 'comment-new';
    }
    if (!$comment->uid) {
        $variables['classes_array'][] = 'comment-by-anonymous';
    }
    else {
        if ($comment->uid == $variables['node']->uid) {
            $variables['classes_array'][] = 'comment-by-node-author';
        }
        if ($comment->uid == $variables['user']->uid) {
            $variables['classes_array'][] = 'comment-by-viewer';
        }
    }
}

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