You are here

function _nodequeue_dragdrop_get_nodes in Nodequeue 7.2

Same name and namespace in other branches
  1. 6.2 includes/nodequeue.admin.inc \_nodequeue_dragdrop_get_nodes()
  2. 7.3 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 803
Admin page callbacks for the nodequeue module.

Code

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

    // Get a list of all nodes in the subqueue, regardless of access restrictions.
    $query = db_select('nodequeue_nodes', 'nq');
    $query
      ->innerJoin('node', 'n', '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();
    $key = 0;
    foreach ($result as $sq_node) {
      $nids[] = $sq_node->nid;

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