The tracker module is a handy module for displaying the most recent posts. By following the recent posts link in the user block, a user may quickly review all recent postings.

'); case 'admin/modules#description': return t('Enables tracking of recent posts for users.'); } } /** * Implementation of hook_menu(). */ function tracker_menu() { $items = array(); $items[] = array('path' => 'tracker', 'title' => t('recent posts'), 'callback' => 'tracker_page', 'access' => user_access('access content'), 'weight' => 1); return $items; } /** * Menu callback. Prints a listing of active nodes on the site. */ function tracker_page($uid = 0) { global $user; $output .= ''; if ($user->uid) { $output .= ''; } if ($uid) { $uid = check_query($uid); $result = pager_query("SELECT n.nid, n.title, n.type, n.changed, n.uid, u.name, MAX(GREATEST(n.changed, c.timestamp)) AS last_post FROM {node} n LEFT JOIN {comments} c ON n.nid = c.nid INNER JOIN {users} u ON n.uid = u.uid WHERE n.status = 1 AND (n.uid = $uid OR c.uid = $uid) GROUP BY n.nid, n.title, n.type, n.changed, n.uid, u.name ORDER BY last_post DESC", 25, 0, "SELECT COUNT(DISTINCT(n.nid)) FROM {node} n LEFT JOIN {comments} c ON n.nid = c.nid WHERE n.status = 1 AND (n.uid = $uid OR c.uid = $uid)"); } else { $result = pager_query('SELECT n.nid, n.title, n.type, n.changed, n.uid, u.name, MAX(GREATEST(n.changed, c.timestamp)) AS last_post FROM {node} n LEFT JOIN {comments} c ON n.nid = c.nid INNER JOIN {users} u ON n.uid = u.uid WHERE n.status = 1 GROUP BY n.nid, n.title, n.type, n.changed, n.uid, u.name ORDER BY last_post DESC', 25, 0, 'SELECT COUNT(nid) FROM {node} WHERE status = 1'); } while ($node = db_fetch_object($result)) { // Determine the number of comments: if ($all = comment_num_all($node->nid)) { $comments = $all; if ($new = comment_num_new($node->nid)) { $comments .= '
'; $comments .= l(t('%num new', array('%num' => $new)), "node/$node->nid", NULL, NULL, 'new'); } } else { $comments = 0; } $rows[] = array( ucfirst(node_invoke($node->type, 'node_name')), l($node->title, "node/$node->nid") .' '. (node_is_new($node->nid, $node->changed) ? theme('mark') : ''), format_name($node), array('class' => 'replies', 'data' => $comments), format_interval(time() - $node->last_post) .' '. t('ago') ); } if ($pager = theme('pager', NULL, 25, 0)) { $rows[] = array(array('data' => $pager, 'colspan' => 4)); } $header = array(t('type'), t('post'), t('author'), t('replies'), t('last post')); $output .= '
'; $output .= theme('table', $header, $rows); $output .= '
'; print theme('page', $output); } function tracker_user($type, &$edit, &$user) { if ($type == 'view' && user_access('access content')) { return array(t('History') => form_item(t('Recent posts'), l(t('recent posts'), "tracker/$user->uid"))); } } ?>