You are here

function nodequeue_load_queues in Nodequeue 5.2

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

Load an array of $qids.

This exists to provide a way of loading a bunch of queues with the fewest queries. Loading 5 queues results in only 4 queries, not 20. This also caches queues so that they don't get loaded repeatedly.

Parameters

$qids: An array of queue IDs to load.

16 calls to nodequeue_load_queues()
action_nodequeue_add in ./nodequeue.actions.inc
Old-style action to add a node to a queue.
action_nodequeue_remove in ./nodequeue.actions.inc
Old-style action to remove a node from a queue.
nodequeue_add_action in ./nodequeue.actions.inc
Action to add a node to a queue.
nodequeue_add_action_form in ./nodequeue.actions.inc
Configuration form for Add to Node Queues action.
nodequeue_generate_form in ./nodequeue_generate.module

... See full list

File

./nodequeue.module, line 1573

Code

function nodequeue_load_queues($qids) {
  static $cache = array();
  $to_load = $queues = array();
  foreach ($qids as $qid) {
    if (!isset($cache[$qid])) {
      $to_load[] = $qid;
    }
  }
  if (!empty($to_load)) {
    $load_text = implode(', ', $to_load);
    $result = db_query("SELECT q.*, COUNT(s.sqid) AS subqueues FROM {nodequeue_queue} q LEFT JOIN {nodequeue_subqueue} s ON q.qid = s.qid WHERE q.qid IN (%s) GROUP BY q.qid", $load_text);
    while ($queue = db_fetch_object($result)) {
      $cache[$queue->qid] = $queue;
    }
    $result = db_query("SELECT * FROM {nodequeue_roles} WHERE qid IN (%s)", $load_text);
    while ($obj = db_fetch_object($result)) {
      $cache[$obj->qid]->roles[] = $obj->rid;
    }
    $result = db_query("SELECT * FROM {nodequeue_types} WHERE qid IN (%s)", $load_text);
    while ($obj = db_fetch_object($result)) {
      $cache[$obj->qid]->types[] = $obj->type;
    }
  }
  foreach ($qids as $qid) {
    if (isset($cache[$qid])) {
      $queues[$qid] = $cache[$qid];
    }
  }
  return $queues;
}