function nodequeue_subqueue_add in Nodequeue 6.2
Same name and namespace in other branches
- 5.2 nodequeue.module \nodequeue_subqueue_add()
- 7.3 nodequeue.module \nodequeue_subqueue_add()
- 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 
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);
  }
}