function nodequeue_load_subqueues in Nodequeue 7.2
Same name and namespace in other branches
- 5.2 nodequeue.module \nodequeue_load_subqueues()
- 6.2 nodequeue.module \nodequeue_load_subqueues()
- 7.3 nodequeue.module \nodequeue_load_subqueues()
Load a list of subqueues.
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
array $sqids: An array of subqueue IDs to load.
bool $bypass_cache: Boolean value indicating whether to bypass the cache or not.
Return value
array An array of subqueues.
2 calls to nodequeue_load_subqueues()
- nodequeue_load_subqueue in ./
nodequeue.module - Load a single subqueue.
- subqueue_load in ./
nodequeue.module - This function exists so that %subqueue will work in hook_menu.
File
- ./
nodequeue.module, line 985 - Maintains queues of nodes in arbitrary order.
Code
function nodequeue_load_subqueues($sqids, $bypass_cache = FALSE) {
$cache =& drupal_static(__FUNCTION__, array());
$to_load = array();
$subqueues = array();
foreach ($sqids as $sqid) {
if ($bypass_cache || !isset($cache[$sqid])) {
$to_load[] = $sqid;
}
}
if (!empty($to_load)) {
$result = db_query("SELECT s.*, (SELECT count(*) FROM {nodequeue_nodes} n WHERE n.sqid = s.sqid) AS count FROM {nodequeue_subqueue} s WHERE s.sqid IN (:to_load)", array(
':to_load' => $to_load,
));
foreach ($result as $obj) {
// Sometimes we want to get to subqueues by reference, sometimes by sqid.
// sqid is always unique, but reference is sometimes more readily available.
$cache[$obj->sqid] = $obj;
}
}
foreach ($sqids as $sqid) {
if (isset($cache[$sqid])) {
$subqueues[$sqid] = $cache[$sqid];
}
}
return $subqueues;
}