summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/comment/comment.api.php106
-rw-r--r--modules/comment/comment.module8
-rw-r--r--modules/search/search.module48
-rw-r--r--modules/trigger/trigger.module42
-rw-r--r--modules/user/user.module17
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 = '';
}
}