function comment_form_node_form_alter

Implements hook_form_BASE_FORM_ID_alter().

File

modules/comment/comment.module, line 1215

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)) {
        $form['comment_settings']['comment'][COMMENT_NODE_HIDDEN]['#access'] = FALSE;
        // Also adjust the description of the "closed" option.
        $form['comment_settings']['comment'][COMMENT_NODE_CLOSED]['#description'] = t('Users cannot post comments.');
    }
}

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