1.20.x comment.theme.inc theme_comment_post_forbidden($variables)

Returns HTML for a "you can't post comments" notice.

Parameters

$variables: An associative array containing:

  • node: The comment node.

Related topics

File

modules/comment/comment.theme.inc, line 35
Theme functions for the Comment module.

Code

function theme_comment_post_forbidden($variables) {
  $node = $variables['node'];
  $node_type = node_type_get_type($node->type);
  global $user;

  // Since this is expensive to compute, we cache it so that a page with many
  // comments only has to query the database once for all the links.
  $authenticated_post_comments = &backdrop_static(__FUNCTION__, NULL);

  if (!$user->uid) {
    if (!isset($authenticated_post_comments)) {
      // We only output a link if we are certain that users will get permission
      // to post comments by logging in.
      $comment_roles = user_roles(TRUE, 'post comments');
      $authenticated_post_comments = isset($comment_roles[BACKDROP_AUTHENTICATED_ROLE]);
    }

    if ($authenticated_post_comments) {
      // We cannot use backdrop_get_destination() because these links
      // sometimes appear on /node and taxonomy listing pages.
      if ($node_type->settings['comment_form_location'] == COMMENT_FORM_SEPARATE_PAGE) {
        $destination = array('destination' => "comment/reply/$node->nid#comment-form");
      }
      else {
        $destination = array('destination' => "node/$node->nid#comment-form");
      }

      if (config_get('system.core', 'user_register') != USER_REGISTER_ADMINISTRATORS_ONLY) {
        // Users can register themselves.
        return t('<a href="@login">Log in</a> or <a href="@register">register</a> to post comments', array('@login' => url('user/login', array('query' => $destination)), '@register' => url('user/register', array('query' => $destination))));
      }
      else {
        // Only admins can add new users, no public registration.
        return t('<a href="@login">Log in</a> to post comments', array('@login' => url('user/login', array('query' => $destination))));
      }
    }
  }
}