Index: nodequeue.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodequeue/nodequeue.module,v
retrieving revision 1.107.2.9
diff -u -p -r1.107.2.9 nodequeue.module
--- nodequeue.module	30 Dec 2010 23:10:55 -0000	1.107.2.9
+++ nodequeue.module	11 Jan 2011 15:23:19 -0000
@@ -2013,19 +2013,21 @@ function nodequeue_remove_subqueue($sqid
  */
 function nodequeue_subqueue_add($queue, &$subqueue, $nid) {
   if (!empty($nid)) {
-    db_query("INSERT INTO {nodequeue_nodes} (sqid, qid, nid, position, timestamp) VALUES (%d, %d, %d, %d, %d)", $subqueue->sqid, $queue->qid, $nid, $subqueue->count + 1, time());
-    $subqueue->count++;
-    // If adding this would make the queue too big, pop the front node
-    // (or nodes) out.
-    if (!empty($queue->size)) {
-      // 0 means infinity so never do this if false
-      nodequeue_check_subqueue_size($queue, $subqueue, $queue->size);
+    if (0==db_result(db_query("SELECT count(*) FROM {nodequeue_nodes} WHERE sqid=".$subqueue->sqid." and qid=".$queue->qid." and nid=".$nid))) {
+      db_query("INSERT INTO {nodequeue_nodes} (sqid, qid, nid, position, timestamp) VALUES (%d, %d, %d, %d, %d)", $subqueue->sqid, $queue->qid, $nid, $subqueue->count + 1, time());
+      $subqueue->count++;
+      // If adding this would make the queue too big, pop the front node
+      // (or nodes) out.
+      if (!empty($queue->size)) {
+	 // 0 means infinity so never do this if false
+	 nodequeue_check_subqueue_size($queue, $subqueue, $queue->size);
+      }
+      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);
     }
-    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);
   }
 }
 
