diff --git a/includes/nodequeue.actions.inc b/includes/nodequeue.actions.inc index dc83115..609361e 100644 --- a/includes/nodequeue.actions.inc +++ b/includes/nodequeue.actions.inc @@ -77,7 +77,9 @@ function nodequeue_add_action_submit($form, &$form_state) { */ function nodequeue_add_action($node, $context) { $queues = nodequeue_load_queues($context['qids'], TRUE); - // Filter out queues by node type. We choose not to use nodequeue_get_qids() because it checks for access control which only matters if we administering a queue. + // Filter out queues by node type. We choose not to use nodequeue_get_qids() + // because it checks for access control which only matters if we administering + // a queue. $eligible_queues = array(); foreach ($queues as $queue) { if (in_array($node->type, $queue->types)) { @@ -86,15 +88,16 @@ function nodequeue_add_action($node, $context) { } if (!empty($eligible_queues)) { - // Remove the node from the eligible queues (if needed). - nodequeue_remove_action($node, array('qids' => array_keys($eligible_queues))); - // Use API to get the eligible subqueues $eligible_subqueues = nodequeue_get_subqueues_by_node($eligible_queues, $node); // Add node to each subqueue. foreach ($eligible_subqueues as $subqueue) { - nodequeue_subqueue_add($queues[$subqueue->qid], $subqueue, $node->nid); + // Check if the node is in the queue already by getting it's position. + $position = nodequeue_get_subqueue_position($subqueue->sqid, $node->nid); + if (empty($position)) { + nodequeue_subqueue_add($queues[$subqueue->qid], $subqueue, $node->nid); + } } } }