Index: nodequeue.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodequeue/nodequeue.module,v
retrieving revision 1.60
diff -u -p -r1.60 nodequeue.module
--- nodequeue.module	23 Sep 2008 18:33:54 -0000	1.60
+++ nodequeue.module	8 Oct 2008 18:47:58 -0000
@@ -522,7 +522,7 @@ function nodequeue_edit_queue_form(&$for
     // If the $queue is a string - name of a queue type, basically - then we test that it's a valid queue type.
     $queue = strtolower($queue);
     if (!isset($info[$queue])) {
-      return false;
+      return FALSE;
     }
     drupal_set_title(t('Add @type', array('@type' => strtolower($info[$queue]['title']))));
     $queue = new nodequeue_queue($queue);
@@ -1296,7 +1296,7 @@ function nodequeue_admin_remove($queue, 
 //TODO: Form - Revise for D6.
 function nodequeue_clear_confirm(&$form_state, $queue, $subqueue) {
   if (!is_numeric($subqueue)) {
-    return false;
+    return FALSE;
   }
   drupal_set_title(t("Nodequeue '@title'", array('@title' => $queue->title)));
   $form['sqid'] = array('#type' => 'value', '#value' => $subqueue->sqid);
@@ -1524,7 +1524,6 @@ function nodequeue_node_tab_access($node
     }
   }
   return (variable_get('nodequeue_use_tab', 1) && !empty($subqueues));
-
 }
 /**
  * Return TRUE if $user can queue(s) for this node.
@@ -2310,7 +2309,7 @@ function nodequeue_nodequeue_form_submit
 /**
  * in general it's preferable to use Views for this functionality.
  */
-function nodequeue_node_titles($sqid, $title = '', $backward = true, $from = 0, $count = 0) {
+function nodequeue_node_titles($sqid, $title = '', $backward = TRUE, $from = 0, $count = 0) {
   $orderby = ($backward ? "DESC" : "ASC");
   $sql = db_rewrite_sql("SELECT n.nid, n.title FROM {node} n LEFT JOIN {nodequeue_nodes} nn ON n.nid = nn.nid WHERE nn.sqid = %d AND n.status = 1 ORDER BY nn.position $orderby");
   if ($count) {
@@ -2322,7 +2321,21 @@ function nodequeue_node_titles($sqid, $t
   return node_title_list($result, $title);
 }
 
-function nodequeue_nodes($sqid, $backward = true, $teaser = true, $links = true, $from = 0, $count = 0) {
+/**
+ * Get node_view output from a nodequeue
+ */
+function nodequeue_nodes($sqid, $backward = TRUE, $teaser = TRUE, $links = TRUE, $from = 0, $count = 0) {
+  $nodes = nodequeue_fetch_nodes($sqid, $backward, $from, $count);
+  foreach ($nodes as $node) {
+    $output .= node_view($node, $teaser, FALSE, $links);
+  }
+  return $output;
+}
+
+/**
+ * Fetch an array of nodes belonging to a specific nodequeue.
+ */
+function nodequeue_fetch_nodes($sqid, $backward = TRUE, $from = 0, $count = 5) {
   $orderby = ($backward ? "DESC" : "ASC");
   $sql = db_rewrite_sql("SELECT n.nid FROM {node} n INNER JOIN {nodequeue_nodes} nn ON n.nid = nn.nid WHERE nn.sqid = %d AND n.status = 1 ORDER BY nn.position $orderby");
   if ($count) {
@@ -2333,23 +2346,39 @@ function nodequeue_nodes($sqid, $backwar
   }
 
   while ($nid = db_fetch_object($result)) {
-    $node = node_load($nid->nid);
-    $output .= node_view($node, $teaser, false, $links);
+    $nodes[] = node_load($nid->nid);
   }
-  return $output;
+  return $nodes;
 }
 
-function nodequeue_fetch_front($sqid, $teaser = true, $links = true) {
-  return nodequeue_nodes($sqid, false, $teaser, $links, 0, 1);
+/**
+ * View the first node of a queue
+ */
+function nodequeue_fetch_front($sqid, $teaser = TRUE, $links = TRUE) {
+  return nodequeue_nodes($sqid, FALSE, $teaser, $links, 0, 1);
 }
 
-function nodequeue_fetch_back($sqid, $teaser = true, $links = true) {
-  return nodequeue_nodes($sqid, true, $teaser, $links, 0, 1);
+/**
+ * View the last node of a queue
+ */
+function nodequeue_fetch_back($sqid, $teaser = TRUE, $links = TRUE) {
+  return nodequeue_nodes($sqid, TRUE, $teaser, $links, 0, 1);
 }
 
-function nodequeue_fetch_random($sqid, $teaser = true, $links = true) {
+/**
+ * View a random node from a queue
+ */
+function nodequeue_fetch_random($sqid, $teaser = TRUE, $links = TRUE) {
+  $count = db_result(db_query(db_rewrite_sql("SELECT COUNT(n.nid) FROM {node} n INNER JOIN {nodequeue_nodes} nn ON n.nid = nn.nid WHERE nn.sqid = %d AND n.status = 1"), $sqid));
+  return nodequeue_nodes($sqid, FALSE, $teaser, $links, rand(0, $count - 1), 1);
+}
+
+/**
+ * Get a random node object from a queue
+ */
+function nodequeue_fetch_random_node($sqid) {
   $count = db_result(db_query(db_rewrite_sql("SELECT COUNT(n.nid) FROM {node} n INNER JOIN {nodequeue_nodes} nn ON n.nid = nn.nid WHERE nn.sqid = %d AND n.status = 1"), $sqid));
-  return nodequeue_nodes($sqid, false, $teaser, $links, rand(0, $count - 1), 1);
+  return array_shift(nodequeue_fetch_nodes($sqid, TRUE, rand(0, $count - 1), 1));
 }
 
 /**
