diff --git a/public_html/sites/all/modules/contrib/modr8/modr8.module b/public_html/sites/all/modules/contrib/modr8/modr8.module index 8c7ba4c..296f8d5 100644 --- a/public_html/sites/all/modules/contrib/modr8/modr8.module +++ b/public_html/sites/all/modules/contrib/modr8/modr8.module @@ -328,3 +328,148 @@ function theme_modr8_message($teaser = FALSE, $nodetype = 'page', $op = 'view') } $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_delete' => array( + 'label' => t('Delete moderated nodes'), + 'callback' => 'modr8_bulk_delete', + ), + '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) { + $node = node_load($nid); + modr8_moderate_node($node); + } +} + +/** + * Node operations API Function + * Approve the specified nodes. + * + * @param $nodes + * An array of node ids. + */ +function modr8_bulk_approve($nodes) { + foreach($nodes as $nid) { + $node = node_load($nid); + modr8_approve_node($node); + } +} + +/** + * Node operations API Function + * Delete the specified nodes. + * + * @param $nodes + * An array of node ids. + */ +function modr8_bulk_delete($nodes) { + foreach($nodes as $nid) { + $node = node_load($nid); + modr8_delete_node($node); + } +} + +/** + * Public API function to place the given node into moderation. + * + * @param $node + * The node to moderate. + */ +function modr8_moderate_node($node) { + db_query('UPDATE {node} SET moderate = %d WHERE nid = %d', 1, $node->nid); + return db_affected_rows(); +} + +/** + * Public API function to approve the given node. + * + * @param $node + * The node to approve. + * @param $note + * An optional note to be used in emails being sent out. + */ +function modr8_approve_node($node, $note = NULL) { + module_load_include('inc', 'modr8', 'modr8_admin'); + + $values = _modr8_build_values($node, $note); + if (variable_get('modr8_send_approve', FALSE)) { + $message = modr8_usermail('approve', $node->nid, $values); + } + + if (user_access('administer nodes')) { + $node->status = 1; + } + $node->moderate = 0; + node_save($node); + + drupal_set_message(t('The %type with title %title has been approved.', array('%title' => $values['title'], '%type' => $values['type']))); + modr8_log_action('approve', $nid, $values, $message); +} + +/** + * Public API function to delete the given node. + * + * @param $node + * The node to delete. + * @param $note + * An optional note to be used in emails being sent out. + */ +function modr8_delete_node($node, $note = NULL) { + module_load_include('inc', 'modr8', 'modr8_admin'); + $values = _modr8_build_values($node, $note); + if (variable_get('modr8_send_deny', FALSE)) { + $message = modr8_usermail('deny', $node->nid, $values); + } + + node_delete($node->nid); + // drupal does its own message + modr8_log_action('delete', $node->nid, $values, $message); +} + +/** + * Build the values array needed for so many internal functions. + * + * @param $node + * The node in the current context. + * @param $note + * An optional note to be used in emails being sent out. + */ +function _modr8_build_values($node, $note = NULL) { + $log_link = ''; + $events = db_query("SELECT modid FROM {modr8_log} WHERE nid = %d", $node->nid); + $count = db_result(db_query("SELECT COUNT(modid) FROM {modr8_log} WHERE nid = %d", $node->nid)); + if ($count) { + $url = ($count == 1) ? ('admin/reports/modr8/event/'. db_result($events)) : ('node/'. $node->nid .'/modr8/'); + $message = format_plural($count, 'See the 1 moderation log event for this post', 'Overview of the @count moderation log events for this post'); + $log_link .= l($message, $url); + } + return array( + 'note' => $note, + 'author_uid' => $node->uid, + 'log_link' => $log_link, + 'title' => check_plain($node->title), + 'type' => node_get_types('name', $node), + ); +} diff --git a/public_html/sites/all/modules/contrib/modr8/modr8_admin.inc b/public_html/sites/all/modules/contrib/modr8/modr8_admin.inc index dad4cf6..30dc4e7 100644 --- a/public_html/sites/all/modules/contrib/modr8/modr8_admin.inc +++ b/public_html/sites/all/modules/contrib/modr8/modr8_admin.inc @@ -342,26 +342,15 @@ function modr8_form_submit($form, &$form_state) { $message = ''; switch ($values['ops']) { case 'approve': - if (variable_get('modr8_send_approve', FALSE)) { - $message = modr8_usermail('approve', $nid, $values); - } $node = node_load($nid); - if (user_access('administer nodes')) { - $node->status = 1; - } - $node->moderate = 0; - node_save($node); - drupal_set_message(t('The %type with title %title has been approved.', array('%title' => $values['title'], '%type' => $values['type']))); - modr8_log_action('approve', $nid, $values, $message); + modr8_approve_node($node, $value); break; + case 'delete': - if (variable_get('modr8_send_deny', FALSE)) { - $message = modr8_usermail('deny', $nid, $values); - } - node_delete($nid); - // drupal does its own message - modr8_log_action('delete', $nid, $values, $message); + $node = node_load($nid); + modr8_delete_node($node, $value); break; + case 'nada': if (variable_get('modr8_send_noact', FALSE) && !empty($values['note'])) { $message = modr8_usermail('nada', $nid, $values);