You are here

function nodequeue_queue_swap in Nodequeue 7.2

Same name and namespace in other branches
  1. 5.2 nodequeue.module \nodequeue_queue_swap()
  2. 5 nodequeue.module \nodequeue_queue_swap()
  3. 6.2 nodequeue.module \nodequeue_queue_swap()
  4. 7.3 nodequeue.module \nodequeue_queue_swap()

Swap two positions within a subqueue.

4 calls to nodequeue_queue_swap()
NodequeueAPISubqueueUnitTest::testNodequeueQueueSwap in tests/nodequeue.test
nodequeue_queue_down in ./nodequeue.module
Move a position within a subqueue down by one.
nodequeue_queue_up in ./nodequeue.module
Move a position within a subqueue up by one.
nodequeue_subqueue_shuffle in ./nodequeue.module
Shuffle a queue.

File

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

Code

function nodequeue_queue_swap($subqueue, $pos1, $pos2) {

  // Grab the nid off one of the positions so we can more easily swap.
  $nid = db_query("SELECT nid FROM {nodequeue_nodes} WHERE sqid = :sqid AND position = :position", array(
    ':sqid' => $subqueue->sqid,
    ':position' => $pos1,
  ))
    ->fetchField();
  if (!$nid) {
    return;
  }
  db_update('nodequeue_nodes')
    ->fields(array(
    'position' => $pos1,
  ))
    ->condition('position', $pos2)
    ->condition('sqid', $subqueue->sqid)
    ->execute();
  db_update('nodequeue_nodes')
    ->fields(array(
    'position' => $pos2,
  ))
    ->condition('nid', $nid)
    ->condition('sqid', $subqueue->sqid)
    ->execute();

  // notify other modules of the swap
  module_invoke_all('nodequeue_swap', $subqueue->sqid, $nid);
}