comment.api.php

Same filename in other branches
  1. 9 core/modules/comment/comment.api.php
  2. 8.9.x core/modules/comment/comment.api.php
  3. 10 core/modules/comment/comment.api.php
  4. 11.x core/modules/comment/comment.api.php

Hooks provided by the Comment module.

File

modules/comment/comment.api.php

View source
<?php


/**
 * @file
 * Hooks provided by the Comment module.
 */

/**
 * @addtogroup hooks
 * @{
 */

/**
 * The comment passed validation and is about to be saved.
 *
 * Modules may make changes to the comment before it is saved to the database.
 *
 * @param $comment
 *   The comment object.
 */
function hook_comment_presave($comment) {
    // Remove leading & trailing spaces from the comment subject.
    $comment->subject = trim($comment->subject);
}

/**
 * The comment is being inserted.
 *
 * @param $comment
 *   The comment object.
 */
function hook_comment_insert($comment) {
    // Reindex the node when comments are added.
    search_touch_node($comment->nid);
}

/**
 * The comment is being updated.
 *
 * @param $comment
 *   The comment object.
 */
function hook_comment_update($comment) {
    // Reindex the node when comments are updated.
    search_touch_node($comment->nid);
}

/**
 * Comments are being loaded from the database.
 *
 * @param $comments
 *  An array of comment objects indexed by cid.
 */
function hook_comment_load($comments) {
    $result = db_query('SELECT cid, foo FROM {mytable} WHERE cid IN (:cids)', array(
        ':cids' => array_keys($comments),
    ));
    foreach ($result as $record) {
        $comments[$record->cid]->foo = $record->foo;
    }
}

/**
 * The comment is being viewed. This hook can be used to add additional data to the comment before theming.
 *
 * @param $comment
 *   Passes in the comment the action is being performed on.
 * @param $view_mode
 *   View mode, e.g. 'full', 'teaser'...
 * @param $langcode
 *   The language code used for rendering.
 *
 * @see hook_entity_view()
 */
function hook_comment_view($comment, $view_mode, $langcode) {
    // how old is the comment
    $comment->time_ago = time() - $comment->changed;
}

/**
 * The comment was built; the module may modify the structured content.
 *
 * This hook is called after the content has been assembled in a structured array
 * and may be used for doing processing which requires that the complete comment
 * content structure has been built.
 *
 * If the module wishes to act on the rendered HTML of the comment rather than the
 * structured content array, it may use this hook to add a #post_render callback.
 * Alternatively, it could also implement hook_preprocess_comment(). See
 * drupal_render() and theme() documentation respectively for details.
 *
 * @param $build
 *   A renderable array representing the comment.
 *
 * @see comment_view()
 * @see hook_entity_view_alter()
 */
function hook_comment_view_alter(&$build) {
    // Check for the existence of a field added by another module.
    if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) {
        // Change its weight.
        $build['an_additional_field']['#weight'] = -10;
    }
    // Add a #post_render callback to act on the rendered HTML of the comment.
    $build['#post_render'][] = 'my_module_comment_post_render';
}

/**
 * Act on a comment that is being saved in a published state.
 *
 * @param $comment
 *   Passes in the comment the action is being performed on.
 * @return
 *   Nothing.
 */
function hook_comment_publish($comment) {
    drupal_set_message(t('Comment: @subject has been published', array(
        '@subject' => $comment->subject,
    )));
}

/**
 * Act on a comment that is being saved in an unpublished state.
 *
 * @param $comment
 *   Passes in the comment the action is being performed on.
 * @return
 *   Nothing.
 */
function hook_comment_unpublish($comment) {
    drupal_set_message(t('Comment: @subject has been unpublished', array(
        '@subject' => $comment->subject,
    )));
}

/**
 * The comment is being deleted by the moderator.
 *
 * @param $comment
 *   Passes in the comment the action is being performed on.
 * @return
 *   Nothing.
 */
function hook_comment_delete($comment) {
    drupal_set_message(t('Comment: @subject has been deleted', array(
        '@subject' => $comment->subject,
    )));
}

/**
 * @} End of "addtogroup hooks".
 */

Functions

Title Deprecated Summary
hook_comment_delete The comment is being deleted by the moderator.
hook_comment_insert The comment is being inserted.
hook_comment_load Comments are being loaded from the database.
hook_comment_presave The comment passed validation and is about to be saved.
hook_comment_publish Act on a comment that is being saved in a published state.
hook_comment_unpublish Act on a comment that is being saved in an unpublished state.
hook_comment_update The comment is being updated.
hook_comment_view The comment is being viewed. This hook can be used to add additional data to the comment before theming.
hook_comment_view_alter The comment was built; the module may modify the structured content.

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