You are here

function nodequeue_load_subqueues_by_reference in Nodequeue 7.3

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

Load a set of subqueues by reference.

This can be used to load a set of subqueues by reference; it will primarily be used by plugins that are managing subqueues.

Parameters

$references: A keyed array of references to load. The key is the $name and each value is another array of references.

2 calls to nodequeue_load_subqueues_by_reference()
nodequeue_get_subqueues_by_node in ./nodequeue.module
Get a list of valid subqueues for a node, along with the position of the node.
smartqueue_taxonomy_nodequeue_subqueues in ./smartqueue.module
Implements hook_nodequeue_subqueues().

File

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

Code

function nodequeue_load_subqueues_by_reference($references, $bypass_cache = FALSE) {
  static $cache = array();
  $subqueues = array();
  if ($bypass_cache) {
    $cache = array();
  }
  if (!empty($references)) {
    $query = db_select('nodequeue_subqueue', 's')
      ->groupBy('s.sqid')
      ->fields('s');
    $query
      ->leftJoin('nodequeue_nodes', 'n', 'n.sqid = s.sqid');
    $query
      ->addExpression('COUNT(n.position)', 'count');
    $where = db_or();
    foreach ($references as $name => $reference) {
      $where
        ->condition(db_and()
        ->condition('s.name', $name)
        ->condition('s.reference', $reference));
    }
    $query
      ->condition($where);
    $result = $query
      ->execute();
    foreach ($result as $subqueue) {
      $cache[$subqueue->name][$subqueue->reference] = $subqueues[$subqueue->sqid] = $subqueue;
    }
  }
  return $subqueues;
}