You are here

function _nodequeue_dragdrop_get_nodes in Nodequeue 7.3

Same name and namespace in other branches
  1. 6.2 includes/nodequeue.admin.inc \_nodequeue_dragdrop_get_nodes()
  2. 7.2 includes/nodequeue.admin.inc \_nodequeue_dragdrop_get_nodes()

Return a list of nodes in a specific subqueue.

1 call to _nodequeue_dragdrop_get_nodes()
nodequeue_arrange_subqueue in includes/nodequeue.admin.inc
View the contents of a subqueue, with links to re-order the queue.

File

includes/nodequeue.admin.inc, line 724
Admin page callbacks for the nodequeue module.

Code

function _nodequeue_dragdrop_get_nodes($queue, $subqueue) {
  $order = $queue->reverse ? 'DESC' : 'ASC';
  $visible = nodequeue_nids_visible($subqueue->sqid);

  // Get a list of all nodes in the subqueue, regardless of access restrictions.
  $query = db_select('node', 'n')
    ->distinct();
  $query
    ->leftJoin('nodequeue_nodes', 'nq', 'nq.nid = n.nid');
  $query
    ->fields('n', array(
    'nid',
  ))
    ->fields('nq', array(
    'position',
  ))
    ->condition('nq.sqid', $subqueue->sqid)
    ->orderBy('nq.position', $order);
  $result = $query
    ->execute();
  $nids = array();
  $sq_nodes = array();
  foreach ($result as $sq_node) {
    $nids[] = $sq_node->nid;

    // Save node position in a separate array so we can reference it later.
    $sq_nodes[$sq_node->nid]['position'] = $sq_node->position;
  }
  $nodes = node_load_multiple($nids);
  foreach ($nodes as $node) {
    $node->visible = isset($visible[$node->nid]) ? TRUE : FALSE;
    $node->position = $sq_nodes[$node->nid]['position'];
  }
  return $nodes;
}