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