--- forum.module 2004/02/29 01:07:45 1.1 +++ forum.module 2004/03/01 14:48:25 @@ -130,6 +130,10 @@ if ($next) { $links[] = l(t("next forum topic"), "node/view/$next->nid", array("title" => $next->title)); } + + if ($node->nid && ($new = _forum_new($node->tid, $node->nid))) { + $links[] = l(t("next new topic"), "node/view/$new"); + } } return $links; @@ -391,13 +395,17 @@ return $topics; } -function _forum_new($tid) { +function _forum_new($tid, $exclude = 0) { global $user; $result = db_query("SELECT n.nid FROM {node} n, {history} h, {forum} f WHERE n.type = 'forum' AND n.status = 1 AND h.nid = n.nid AND f.nid = h.nid AND f.tid = %d AND h.uid = %d", $tid, $user->uid); while ($r = db_fetch_object($result)) { $read[] = $r->nid; } + if ($exclude != 0) { + $read[] = $exclude; + } + $nid = db_result(db_query_range("SELECT n.nid FROM {node} n INNER JOIN {forum} f ON n.nid = f.nid WHERE n.type = 'forum' AND f.nid = n.nid AND n.status = 1 AND f.tid = %d ". ($read ? "AND NOT (n.nid IN (". implode(",", $read) .")) " : "") ."ORDER BY created", $tid, 0, 1)); return $nid ? $nid : 0;