You are here

function nodequeue_subqueue_add in Nodequeue 6.2

Same name and namespace in other branches
  1. 5.2 nodequeue.module \nodequeue_subqueue_add()
  2. 7.3 nodequeue.module \nodequeue_subqueue_add()
  3. 7.2 nodequeue.module \nodequeue_subqueue_add()

Add a node to a queue.

Parameters

$queue: The parent queue of the subqueue. This is required so that we can pop nodes out if the queue breaks size limits.

$subqueue: The subqueue to add the node to.

$nid: The node ID

9 calls to nodequeue_subqueue_add()
NodequeueAPISubqueueUnitTest::testNodequeueQueueClear in tests/nodequeue.test
NodequeueAPISubqueueUnitTest::testNodequeueSubqueueAdd in tests/nodequeue.test
NodequeueAPISubqueueUnitTest::testNodequeueSubqueueRemove in tests/nodequeue.test
NodequeueAPISubqueueUnitTest::testNodequeueSubqueueRemoveNode in tests/nodequeue.test
NodequeueWebTestCase::populateNodequeue in tests/nodequeue.test

... See full list

File

./nodequeue.module, line 1040
Maintains queues of nodes in arbitrary order.

Code

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, COALESCE((SELECT MAX(position)+1 FROM (SELECT * from {nodequeue_nodes} WHERE sqid = %d) as nn), 1), %d)", $subqueue->sqid, $queue->qid, $nid, $subqueue->sqid, time());
    $subqueue->count = db_result(db_query("SELECT count(nid) FROM {nodequeue_nodes} WHERE sqid = %d", $subqueue->sqid));

    // 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')) {
      if (function_exists('apachesolr_mark_node')) {
        apachesolr_mark_node($nid);
      }
      else {
        apachesolr_mark_entity('node', $nid);
      }
    }

    // Invoke the hook to notify other modules of the node addition.
    module_invoke_all('nodequeue_add', $subqueue->sqid, $nid);
  }
}