diff options
-rw-r--r-- | modules/comment/comment.api.php | 106 | ||||
-rw-r--r-- | modules/comment/comment.module | 8 | ||||
-rw-r--r-- | modules/search/search.module | 48 | ||||
-rw-r--r-- | modules/trigger/trigger.module | 42 | ||||
-rw-r--r-- | modules/user/user.module | 17 |
5 files changed, 167 insertions, 54 deletions
diff --git a/modules/comment/comment.api.php b/modules/comment/comment.api.php index a486dd932..9b431e98d 100644 --- a/modules/comment/comment.api.php +++ b/modules/comment/comment.api.php @@ -12,37 +12,99 @@ */ /** - * Act on comments. + * The comment is being inserted. * - * This hook allows modules to extend the comments system. + * @param $form_values + * Passes in an array of form values submitted by the user. + * @return + * Nothing. + */ +function hook_comment_insert(&$form_values) { + $nid = $form_values['nid']; + + cache_clear_all_like(drupal_url(array('id' => $nid))); +} + +/** + * The user has just finished editing the comment and is trying to + * preview or submit it. This hook can be used to check or + * even modify the node. Errors should be set with form_set_error(). * - * @param $a1 - * Dependent on the action being performed. - * - For "validate","update","insert", passes in an array of form values submitted by the user. - * - For all other operations, passes in the comment the action is being performed on. - * @param $op - * What kind of action is being performed. Possible values: - * - "insert": The comment is being inserted. - * - "update": The comment is being updated. - * - "view": The comment is being viewed. This hook can be used to add additional data to the comment before theming. - * - "validate": The user has just finished editing the comment and is - * trying to preview or submit it. This hook can be used to check or - * even modify the node. Errors should be set with form_set_error(). - * - "publish": The comment is being published by the moderator. - * - "unpublish": The comment is being unpublished by the moderator. - * - "delete": The comment is being deleted by the moderator. + * @param $form_values + * Passes in an array of form values submitted by the user. * @return - * Dependent on the action being performed. - * - For all other operations, nothing. + * Nothing. */ -function hook_comment(&$a1, $op) { - if ($op == 'insert' || $op == 'update') { - $nid = $a1['nid']; +function hook_comment_validate(&$form_values) { + // if the subject is the same as the comment. + if ($form_values['subject'] == $form_values['comment']) { + form_set_error('comment', t('you should write more text than in the subject')); } +} + +/** + * The comment is being updated. + * + * @param $form_values + * Passes in an array of form values submitted by the user. + * @return + * Nothing. + */ +function hook_comment_update(&$form_values) { + $nid = $form_values['nid']; cache_clear_all_like(drupal_url(array('id' => $nid))); } /** + * 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. + * @return + * Nothing. + */ +function hook_comment_view(&$comment) { + // how old is the comment + $comment->time_ago = time() - $comment->timestamp; +} + +/** + * The comment is being published by the moderator. + * + * @param $form_values + * Passes in an array of form values submitted by the user. + * @return + * Nothing. + */ +function hook_comment_publish($form_values) { + drupal_set_message(t('Comment: @subject has been published', array('@subject' => $form_values['subject']))); +} + +/** + * The comment is being unpublished by the moderator. + * + * @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". */ diff --git a/modules/comment/comment.module b/modules/comment/comment.module index bafb8059c..44f648ca3 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -1990,7 +1990,7 @@ function _comment_update_node_statistics($nid) { } /** - * Invoke a hook_comment() operation in all modules. + * Invoke a hook_comment_[$op]() operation in all modules. * * @param &$comment * A comment object. @@ -2001,9 +2001,9 @@ function _comment_update_node_statistics($nid) { */ function comment_invoke_comment(&$comment, $op) { $return = array(); - foreach (module_implements('comment') as $module) { - $function = $module . '_comment'; - $result = $function($comment, $op); + foreach (module_implements('comment_' . $op) as $module) { + $function = $module . '_comment_' . $op; + $result = $function($comment); if (isset($result) && is_array($result)) { $return = array_merge($return, $result); } diff --git a/modules/search/search.module b/modules/search/search.module index 5c07acb31..4f13ec030 100644 --- a/modules/search/search.module +++ b/modules/search/search.module @@ -659,19 +659,43 @@ function search_nodeapi_update($node) { } /** - * Implementation of hook_comment(). + * Implementation of hook_comment_insert(). */ -function search_comment($a1, $op) { - switch ($op) { - // Reindex the node when comments are added or changed - case 'insert': - case 'update': - case 'delete': - case 'publish': - case 'unpublish': - search_touch_node(is_array($a1) ? $a1['nid'] : $a1->nid); - break; - } +function search_comment_insert($form_values) { + // Reindex the node when comments are added. + search_touch_node($form_values['nid']); +} + +/** + * Implementation of hook_comment_update(). + */ +function search_comment_update($form_values) { + // Reindex the node when comments are changed. + search_touch_node($form_values['nid']); +} + +/** + * Implementation of hook_comment_delete(). + */ +function search_comment_delete($comment) { + // Reindex the node when comments are deleted. + search_touch_node($comment->nid); +} + +/** + * Implementation of hook_comment_publish(). + */ +function search_comment_publish($form_values) { + // Reindex the node when comments are published. + search_touch_node($form_values['nid']); +} + +/** + * Implementation of hook_comment_unpublish(). + */ +function search_comment_unpublish($comment) { + // Reindex the node when comments are unpublished. + search_touch_node($comment->nid); } /** diff --git a/modules/trigger/trigger.module b/modules/trigger/trigger.module index 0eb4b50fe..9979a8b7c 100644 --- a/modules/trigger/trigger.module +++ b/modules/trigger/trigger.module @@ -303,15 +303,45 @@ function _trigger_normalize_comment_context($type, $comment) { } /** - * Implementation of hook_comment(). + * Implementation of hook_comment_insert(). */ -function trigger_comment($a1, $op) { +function trigger_comment_insert($form_values) { + _trigger_coment($form_values, 'insert'); +} + +/** + * Implementation of hook_comment_update(). + */ +function trigger_comment_update($form_values) { + _trigger_coment($form_values, 'update'); +} + +/** + * Implementation of hook_comment_delete(). + */ +function trigger_comment_delete($comment) { + _trigger_coment($comment, 'delete'); +} + +/** + * Implementation of hook_comment_view(). + */ +function trigger_comment_view($comment) { + _trigger_coment($comment, 'view'); +} + +/** + * Helper function for implementations of hook_comment_op(). + * + * @param $a1 + * Argument, which will be passed to the action. + * It can be a array of form values or a comment. + * @param $op + * What kind of action is being performed. + */ +function _trigger_comment($a1, $op) { // Keep objects for reuse so that changes actions make to objects can persist. static $objects; - // We support a subset of operations. - if (!in_array($op, array('insert', 'update', 'delete', 'view'))) { - return; - } $aids = _trigger_get_hook_aids('comment', $op); $context = array( 'hook' => 'comment', diff --git a/modules/user/user.module b/modules/user/user.module index 366e92a4f..d0710f739 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -2037,17 +2037,14 @@ function user_forms() { } /** - * Implementation of hook_comment(). + * Implementation of hook_comment_view(). */ -function user_comment(&$comment, $op) { - // Validate signature. - if ($op == 'view') { - if (variable_get('user_signatures', 0) && !empty($comment->signature)) { - $comment->signature = check_markup($comment->signature, $comment->format); - } - else { - $comment->signature = ''; - } +function user_comment_view(&$comment) { + if (variable_get('user_signatures', 0) && !empty($comment->signature)) { + $comment->signature = check_markup($comment->signature, $comment->format); + } + else { + $comment->signature = ''; } } |