Index: modr8.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/modr8/modr8.module,v retrieving revision 1.21 diff -u -p -r1.21 modr8.module --- modr8.module 5 Sep 2008 00:45:50 -0000 1.21 +++ modr8.module 2 Feb 2009 20:12:15 -0000 @@ -266,3 +266,85 @@ function theme_modr8_message($teaser = F } $already_messaged = TRUE; } + +/** + * Implementation of hook_node_operations(). + */ +function modr8_node_operations() { + return array( + 'modr8_approve' => array( + 'label' => t('Approve moderated nodes'), + 'callback' => 'modr8_bulk_approve', + ), + 'modr8_deny' => array( + 'label' => t('Delete moderated nodes'), + 'callback' => 'modr8_bulk_deny', + ), + 'modr8_moderate' => array( + 'label' => t('Mark for moderation'), + 'callback' => 'modr8_bulk_moderate', + ), + ); +} + +/** + * Node operations API Function + * Mark the specified nodes for moderation. + * + * @param $nodes + * An array of node ids. + */ +function modr8_bulk_moderate($nodes) { + foreach($nodes as $nid) { + db_query('UPDATE {node} SET moderate = %d WHERE nid = %d', 1, $nid); + } +} + +/** + * Node operations API Function + * Approve the specified nodes. + * + * @param $nodes + * An array of node ids. + */ +function modr8_bulk_approve($nodes) { + module_load_include('inc', 'modr8', 'modr8_admin'); + foreach($nodes as $nid) { + $node = node_load($nid); + if (variable_get('modr8_send_approve', FALSE)) { + $message = modr8_usermail('approve', $node->nid, (array)$node); + } + + $publish = ''; + if (user_access('administer nodes')) { + $publish = ', status = 1'; + } + + db_query('UPDATE {node} SET moderate = 0 '. $publish .' WHERE nid = %d', $node->nid); + drupal_set_message(t('The %type with title %title has been approved.', array('%title' => $node->title, '%type' => $node->type))); + cache_clear_all(); + modr8_log_action('approve', $node->nid, array($node), $message); + } +} + +/** + * Node operations API Function + * Delete the specified nodes. + * + * @param $nodes + * An array of node ids. + */ +function modr8_bulk_deny($nodes) { + module_load_include('inc', 'modr8', 'modr8_admin'); + foreach($nodes as $nid) { + $node = node_load($nid); + if (variable_get('modr8_send_deny', FALSE)) { + $message = modr8_usermail('deny', $node->nid, (array)$node); + } + + node_delete($node->nid); + // drupal does its own message + modr8_log_action('delete', $node->nid, (array)$node, $message); + break; + } +}