Index: docs/developer/hooks/core.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/docs/developer/hooks/core.php,v
retrieving revision 1.168.2.10
diff -u -p -r1.168.2.10 core.php
--- docs/developer/hooks/core.php	6 May 2008 04:12:39 -0000	1.168.2.10
+++ docs/developer/hooks/core.php	10 May 2008 01:42:51 -0000
@@ -15,6 +15,77 @@
  */
 
 /**
+ * Declare information about one or more Drupal actions.
+ * 
+ * Any module can define any number of Drupal actions. The trigger module is an
+ * example of a module that uses actions. An action consists of two or three 
+ * parts: (1) an action definition (returned by this hook), (2) a function which
+ * does the action (which by convention is named module + '_' + description of
+ * what the function does + '_action'), and an optional form definition
+ * function that defines a configuration form (which has the name of the action 
+ * with '_form' appended to it.)
+ * 
+ * @return
+ *  - An array of action descriptions. Each action description is an associative 
+ *    array, where the key of the item is the action's function, and the 
+ *    following key-value pairs:
+ *     - 'type': (required) the type is determined by what object the action 
+ *       acts on. Possible choices are node, user, comment, and system. Or 
+ *       whatever your own custom type is.  So, for the nodequeue module, the 
+ *       type might be set to 'nodequeue' if the action would be performed on a 
+ *       nodequeue.
+ *     - 'description': (required) The human-readable name of the action.
+ *     - 'configurable': (required) If FALSE, then the action doesn't require 
+ *       any extra configuration.  If TRUE, then you should define a form 
+ *       function with the same name as the key, but with '_form' appended to 
+ *       it (i.e., the form for 'node_assign_owner_action' is 
+ *       'node_assign_owner_action_form'.) 
+ *       This function will take the $context as the only parameter, and is 
+ *       paired with the usual _submit function, and possibly a _validate 
+ *       function.
+ *     - 'hooks': (required) An array of all of the operations this action is 
+ *       appropriate for, keyed by hook name.  The trigger module uses this to 
+ *       filter out inappropriate actions when presenting the interface for 
+ *       assigning actions to events.  If you are writing actions in your own 
+ *       modules and you simply want to declare support for all possible hooks, 
+ *       you can set 'hooks' => array('any' => TRUE).  Common hooks are 'user',
+ *       'nodeapi', 'comment', or 'taxonomy'. Any hook that has been described
+ *       to Drupal in hook_hook_info() will work is a possiblity.
+ *     - 'behavior': (optional) Human-readable array of behavior descriptions. 
+ *       The only one we have now is 'changes node property'.  You will almost 
+ *       certainly never have to return this in your own implementations of this
+ *       hook.
+ * 
+ * The function that is called when the action is triggered is passed two 
+ * parameters - an object of the same type as the 'type' value of the 
+ * hook_actions_info array, and a context variable that contains the context
+ * under which the action is currently running, sent as an array.  For example, 
+ * the actions module sets the 'hook' and 'op' keys of the context array (so, 
+ * 'hook' may be 'nodeapi' and 'op' may be 'insert').
+ * 
+ */
+function hook_action_info() {
+  return array(
+    'comment_unpublish_action' => array(
+      'description' => t('Unpublish comment'),
+      'type' => 'comment',
+      'configurable' => FALSE,
+      'hooks' => array(
+        'comment' => array('insert', 'update'),
+      )
+    ),
+    'comment_unpublish_by_keyword_action' => array(
+      'description' => t('Unpublish comment containing keyword(s)'),
+      'type' => 'comment',
+      'configurable' => TRUE,
+      'hooks' => array(
+        'comment' => array('insert', 'update'),
+      )
+    )
+  );
+}
+
+/**
  * Declare a block or set of blocks.
  *
  * Any module can export a block (or blocks) to be displayed by defining
