Skip navigation
Help

comment_form_node_form_alter

7 comment.module comment_form_node_form_alter(&$form, $form_state)

Implements hook_form_BASE_FORM_ID_alter().

File

drupal/modules/comment/comment.module, line 1189
Enables users to comment on published content.

Code

function comment_form_node_form_alter(&$form, $form_state) {
  $node = $form['#node'];
  $form['comment_settings'] = array(
    '#type' => 'fieldset', 
    '#access' => user_access('administer comments'), 
    '#title' => t('Comment settings'), 
    '#collapsible' => TRUE, 
    '#collapsed' => TRUE, 
    '#group' => 'additional_settings', 
    '#attributes' => array(
      'class' => array('comment-node-settings-form'),
    ), 
    '#attached' => array(
      'js' => array(drupal_get_path('module', 'comment') . '/comment-node-form.js'),
    ), 
    '#weight' => 30,
  );
  $comment_count = isset($node->nid) ? db_query('SELECT comment_count FROM {node_comment_statistics} WHERE nid = :nid', array(':nid' => $node->nid))->fetchField() : 0;
  $comment_settings = ($node->comment == COMMENT_NODE_HIDDEN && empty($comment_count)) ? COMMENT_NODE_CLOSED : $node->comment;
  $form['comment_settings']['comment'] = array(
    '#type' => 'radios', 
    '#title' => t('Comments'), 
    '#title_display' => 'invisible', 
    '#parents' => array('comment'), 
    '#default_value' => $comment_settings, 
    '#options' => array(
      COMMENT_NODE_OPEN => t('Open'), 
      COMMENT_NODE_CLOSED => t('Closed'), 
      COMMENT_NODE_HIDDEN => t('Hidden'),
    ), 
    COMMENT_NODE_OPEN => array(
      '#description' => t('Users with the "Post comments" permission can post comments.'),
    ), 
    COMMENT_NODE_CLOSED => array(
      '#description' => t('Users cannot post comments, but existing comments will be displayed.'),
    ), 
    COMMENT_NODE_HIDDEN => array(
      '#description' => t('Comments are hidden from view.'),
    ),
  );
  // If the node doesn't have any comments, the "hidden" option makes no
  // sense, so don't even bother presenting it to the user.
  if (empty($comment_count)) {
    unset($form['comment_settings']['comment']['#options'][COMMENT_NODE_HIDDEN]);
    unset($form['comment_settings']['comment'][COMMENT_NODE_HIDDEN]);
    $form['comment_settings']['comment'][COMMENT_NODE_CLOSED]['#description'] = t('Users cannot post comments.');
  }
}