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);