--- /var/www/drupalContribs/modules/weblink/weblink.module	2005-09-01 09:44:53.000000000 -0400
+++ weblink.module	2005-12-31 11:59:13.000000000 -0500
@@ -189,6 +189,7 @@
     return array(
       0 => array('info' => t("Top weblinks")),
       1 => array('info' => t("Latest weblinks")),
+      2 => array('info' => t("Random weblinks"))
     );
   }
   elseif ($op == 'view') {
@@ -198,17 +199,38 @@
           'subject' => t("Top weblinks"),
           'content' => weblink_block_list('top')
         );
+        break;
       case 1:
         return array(
           'subject' => t("Latest weblinks"),
           'content' => weblink_block_list('new')
         );
+      break;
+      case 2: 
+        return array(
+          'subject' => t("Random weblinks"),
+          'content' => weblink_block_list('random')
+        );
     }
   }
 }
 
 function weblink_block_list($type = 'top') {
   $orderby = ($type == 'new') ?  'n.created' : 'w.clicks';
+  if ($type == 'random') {
+    $result = db_query_range(db_rewrite_sql("SELECT n.nid, n.title, w.url, w.clicks FROM {node} n INNER JOIN {weblinks_node} wn on n.nid = wn.nid INNER JOIN {weblinks} w ON wn.lid = w.lid WHERE n.type = 'weblink' AND n.status = 1 AND n.moderate = 0 ORDER by $orderby DESC"),0, 1000);
+    while ($node = db_fetch_object($result)) {
+      $link_ary_all[] = array($node->title, $node->nid);
+    }
+    $link_keys = array_keys($link_ary_all);
+    shuffle($link_keys);
+
+    for ($i==0 ; $i < 10 ; ++$i) {
+     $link_ary[] = l($link_ary_all[$link_keys[$i]][0], 'node/' . $link_ary_all[$link_keys[$i]][1]);
+    }
+    return theme('node_list', $link_ary);
+  }
+
   return node_title_list(db_query_range(db_rewrite_sql("SELECT n.nid, n.title, w.url, w.clicks FROM {node} n INNER JOIN {weblinks_node} wn on n.nid = wn.nid INNER JOIN {weblinks} w ON wn.lid = w.lid WHERE n.type = 'weblink' AND n.status = 1 AND n.moderate = 0 ORDER by $orderby DESC"),0, 10));
 }
 
