? nodequeue.api.php
Index: nodequeue.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodequeue/nodequeue.module,v
retrieving revision 1.89
diff -u -p -r1.89 nodequeue.module
--- nodequeue.module	17 Aug 2009 22:50:03 -0000	1.89
+++ nodequeue.module	20 Aug 2009 15:32:14 -0000
@@ -2017,6 +2017,9 @@ function nodequeue_subqueue_add($queue, 
   if (module_exists('apachesolr')) {
     apachesolr_mark_node($nid);
   }
+
+  // Invoke the hook to notify other modules of the node addition.
+  module_invoke_all('nodequeue_add', $subqueue->sqid, $nid);
 }
 
 /**
@@ -2035,6 +2038,9 @@ function nodequeue_subqueue_remove_node(
     if (module_exists('apachesolr')) {
       apachesolr_mark_node($nid);
     }
+
+    // Invoke the hook to notify other modules of the node removal.
+    module_invoke_all('nodequeue_remove', $sqid, $nid);
   }
 }
 /**
@@ -2058,9 +2064,17 @@ function nodequeue_subqueue_remove($sqid
     $end = $start;
   }
 
+  // Retrieve the nodes that are being removed.
+  $result = db_query("SELECT nid FROM {nodequeue_nodes} WHERE sqid = %d AND position >= %d AND position <= %d", $sqid, $start, $end);
+
   $diff = $end - $start + 1;
   db_query("DELETE FROM {nodequeue_nodes} WHERE sqid = %d AND position >= %d AND position <= %d", $sqid, $start, $end);
   db_query("UPDATE {nodequeue_nodes} SET position = position - %d WHERE sqid = %d AND position > %d",  $diff, $sqid, $end);
+  
+  // Invoke the hook to let other modules know that the nodes were removed.
+  while($node = db_fetch_object($result)) {
+    module_invoke_all('nodequeue_remove', $sqid, $node->nid);
+  }
 }
 
 /**
@@ -2124,6 +2138,10 @@ function nodequeue_queue_swap($subqueue,
 
   db_query("UPDATE {nodequeue_nodes} SET position = %d WHERE position = %d AND sqid = %d", $pos1, $pos2,  $subqueue->sqid);
   db_query("UPDATE {nodequeue_nodes} SET position = %d WHERE nid = %d AND sqid = %d", $pos2, $nid, $subqueue->sqid);
+
+  // notify other modules of the swap
+  module_invoke_all('nodequeue_swap', $sqid, $nid);
+
 }
 
 /**
Index: nodequeue.api.php
===================================================================
RCS file: nodequeue.api.php
diff -N nodequeue.api.php
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ nodequeue.api.php	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,50 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * The API documentation for Node Queue.
+ */
+
+/**
+ * Collect info about all of the possible nodequeue types from owning modules.
+ */
+function hook_nodequeue_info() {
+  
+}
+
+/**
+ * A node is being added to the given node queue.
+ *
+ * @param $sqid
+ *   The ID of the sub-queue that the node is being added to.
+ * @param $nid
+ *   The node ID of the node being added.
+ */
+function hook_nodequeue_add($sqid, $nid) {
+  
+}
+
+/**
+ * A node is being removed from the given node queue.
+ *
+ * @param $sqid
+ *   The ID of the sub-queue that the node is being removed from.
+ * @param $nid
+ *   The node ID of the node being removed.
+ */
+function hook_nodequeue_remove($sqid, $nid) {
+  
+}
+
+/**
+ * A node is being swapped in a queue.
+ *
+ * @param $sqid
+ *   The ID of the sub-queue that the node is swapped in.
+ * @param $nid
+ *   The node ID of the node being swapped.
+ */
+function hook_nodequeue_swap($sqid, $nid) {
+  
+}

