You are here

function nodequeue_load_subqueues_by_reference in Nodequeue 7.2

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.3 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

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

bool $bypass_cache:

Return value

object

3 calls to nodequeue_load_subqueues_by_reference()
nodequeue_contextual_links_view_alter in ./nodequeue.module
Implements hook_contextual_links_view_alter().
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 modules/smartqueue/smartqueue.module
Implements hook_nodequeue_subqueues().

File

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

Code

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