--- modr8.module	Tue Oct 21 23:14:08 2008
+++ modr8.module.new	Sat Dec 12 01:25:04 2009
@@ -293,3 +293,123 @@ function theme_modr8_message($teaser = F
   }
   $already_messaged = TRUE;
 }
+
+/**
+* Implementation of hook_hook_info().
+*/
+function modr8_hook_info() {
+  return array(
+    'modr8' => array(
+      'modr8' => array(
+        'modr8_approve' => array(
+          'runs when' => t('After modrate approved'),
+        ),
+        'modr8_delete' => array(
+          'runs when' => t('After modrate denied'),
+        ),
+		'modr8_no_action' => array(
+          'runs when' => t('After modrate when taking no action'),
+        ),
+      ),
+    ),
+  );
+}
+
+/**
+* Implementation of hook_action_info().
+*/
+function modr8_action_info() {
+  return array(
+    'modr8_block_user' => array(
+      'description' => t('Block the post author.'),
+      'type' => 'modr8',
+      'configurable' => false,
+      'hooks' => array(
+        'modr8' => array('modr8_delete','modr8_no_action'),
+      )
+    ),
+  );
+}
+
+/**
+* Implementation of hook_action_info_alter()
+*
+* @see http://api.drupal.org/api/function/hook_action_info_alter/6
+*/
+function modr8_action_info_alter(&$actions) {
+  if (isset($actions['node_unpublish_action'])) {
+    $actions['node_unpublish_action']['hooks']['modr8'] = array('modr8_no_action');
+  }
+  if (isset($actions['node_make_unsticky_action'])) {
+    $actions['node_make_unsticky_action']['hooks']['modr8'] = array('modr8_no_action');
+  }
+  if (isset($actions['node_unpromote_action'])) {
+    $actions['node_unpromote_action']['hooks']['modr8'] = array('modr8_no_action');
+  }
+  if (isset($actions['node_publish_action'])) {
+    $actions['node_publish_action']['hooks']['modr8'] = array('modr8_approve');
+  }
+  if (isset($actions['node_make_sticky_action'])) {
+    $actions['node_make_sticky_action']['hooks']['modr8'] = array('modr8_approve');
+  }
+  if (isset($actions['node_promote_action'])) {
+    $actions['node_promote_action']['hooks']['modr8'] = array('modr8_approve');
+  }
+  if (isset($actions['system_send_email_action'])) {
+    $actions['system_send_email_action']['hooks']['modr8'] = array('modr8_approve','modr8_no_action','modr8_delete');
+  }
+  if (isset($actions['system_send_email_action'])) {
+    $actions['system_send_email_action']['hooks']['modr8'] = array('modr8_approve','modr8_no_action','modr8_delete');
+  }
+  if (isset($actions['system_message_action'])) {
+    $actions['system_message_action']['hooks']['modr8'] = array('modr8_approve','modr8_no_action','modr8_delete');
+  }
+  if (isset($actions['system_goto_action'])) {
+    $actions['system_goto_action']['hooks']['modr8'] = array('modr8_approve','modr8_no_action','modr8_delete');
+  }
+  //dsm($actions);
+}
+
+/**
+ * Implementation of hook_modr8().
+ *
+ * We implement our own event to fire triggers.
+ *
+ * @param $op The operation that just occured: 'modr8_approve', 'modr8_delete', 'modr8_no_action'.
+ * @param $modr8_obj A modr8 application object.
+ */
+function modr8_modr8($op, $modr8_obj) {
+  if (!module_exists('trigger')) {
+    return;
+  }
+  
+  $node = node_load(array('nid' => $modr8_obj->nid ));
+  $user = user_load(array('uid' => $node->uid));
+
+  $aids = _trigger_get_hook_aids('modr8', $op);
+  $context = array(
+    'hook' => 'modr8',
+    'op' => $op,
+    'user' => $user,
+    'modr8_obj' => $modr8_obj,
+	'nodeapi' => $node,
+  );
+  foreach ($aids as $aid => $action_info) {
+	if ($action_info['type'] == 'user') {
+      $context['user'] = $user;
+      $context['modr8_action'] = $modr8_action;
+      actions_do($aid, $user, $context);
+    }
+    else if ($action_info['type'] == 'node'){
+	  $context['nid'] = $modr8_action->nid;
+      actions_do($aid, $node, $context);
+    }
+  }
+}
+
+/**
+* The action callback function
+*/
+function modr8_block_user(&$object,$context){
+  user_block_user_action($object,$context);
+}
\ No newline at end of file
