summaryrefslogtreecommitdiff
path: root/modules/tracker
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2003-03-14 20:41:27 +0000
committerDries Buytaert <dries@buytaert.net>2003-03-14 20:41:27 +0000
commitdc19b22fb8397dcd7697db09fbb808d91d9fc0c8 (patch)
tree628f268e91ba39a834251f865ba8543eaa408b02 /modules/tracker
parent1f2d2b73dd577bb915ffcf7316f388dbe9c22e01 (diff)
downloadbrdo-dc19b22fb8397dcd7697db09fbb808d91d9fc0c8.tar.gz
brdo-dc19b22fb8397dcd7697db09fbb808d91d9fc0c8.tar.bz2
- Modified patch of Moshe. Enhances the tracker module so it displayes recent
*nodes* in addition to comments. This will be helpful for tracking down new book nodes, blog posts, news items, and other stuff which isn't interesting enough to be promoted to the home page.
Diffstat (limited to 'modules/tracker')
-rw-r--r--modules/tracker/tracker.module89
1 files changed, 31 insertions, 58 deletions
diff --git a/modules/tracker/tracker.module b/modules/tracker/tracker.module
index e0ea2f9a0..f7563ab4d 100644
--- a/modules/tracker/tracker.module
+++ b/modules/tracker/tracker.module
@@ -2,103 +2,76 @@
// $Id$
function tracker_help() {
- $output .= "<p>The tracker module is a handy module for displaying the most recent comments happenning all over your web site. By following the <i>view new comments</i> link in the user block, a user may quickly review all recent comments. When a user first arrives at the main tracker page, she sees all recent comments in reverse chronological order, grouped by post. In addition, a self-centered user may choose to display only his own comments.</p>";
+ $output .= "<p>The tracker module is a handy module for displaying the most recent posts. By following the <i>view recent posts</i> link in the user block, a user may quickly review all recent postings.</p>";
return $output;
}
function tracker_system($field){
- $system["description"] = t("Enables tracking of recent and new comments for users.");
+ $system["description"] = t("Enables tracking of recent posts for users.");
return $system[$field];
}
function tracker_link($type) {
- if ($type == "menu.view" && user_access("access comments")) {
- $links[] = l(t("view new comments"), "tracker", array("title" => t("Display an overview of the recent comments.")));
+ if ($type == "menu.view" && user_access("access content")) {
+ $links[] = l(t("view recent posts"), "tracker", array("title" => t("Display an overview of the recent posts.")));
}
return $links ? $links : array();
}
-function tracker_settings() {
- $period = array(3600 => format_interval(3600), 10800 => format_interval(10800), 21600 => format_interval(21600), 32400 => format_interval(32400), 43200 => format_interval(43200), 86400 => format_interval(86400), 172800 => format_interval(172800), 259200 => format_interval(259200), 604800 => format_interval(604800), 1209600 => format_interval(1209600), 2419200 => format_interval(2419200), 1000000000 => "All");
- $output .= form_select("Show comments more recent than", "tracker_period", variable_get("tracker_period", 259200), $period, "Comments younger than this get displayed.");
- return $output;
-}
-
-function tracker_comments($id = 0) {
- $period = time() - variable_get("tracker_period", 259200); // all comments of the past 3 days if not configured to a different value
+function tracker_posts($id = 0) {
if ($id) {
- $sresult = db_query("SELECT n.nid, n.title, COUNT(n.nid) AS comments, MAX(c.timestamp) AS last_comment FROM comments c LEFT JOIN node n ON c.nid = n.nid WHERE c.status = 0 AND c.timestamp > $period AND c.uid = '%s' GROUP BY n.nid, n.title ORDER BY last_comment DESC LIMIT 10", $id);
+ $sresult = db_query_range("SELECT n.nid, n.title, n.type, n.changed, n.uid, u.name, GREATEST(n.changed, c.timestamp) AS last_activity FROM node n LEFT JOIN comments c ON n.nid = c.nid LEFT JOIN users u ON n.uid = u.uid WHERE n.uid = '". check_query($id) ."' AND n.status = 1 GROUP BY n.nid, n.title, n.type, n.changed, n.nid, u.name ORDER BY last_activity DESC", 0, 15);
}
else {
- $sresult = db_query("SELECT n.nid, n.title, COUNT(n.nid) AS comments, MAX(c.timestamp) AS last_comment FROM comments c LEFT JOIN node n ON c.nid = n.nid WHERE c.status = 0 AND c.timestamp > $period GROUP BY n.nid, n.title ORDER BY last_comment DESC LIMIT 10");
+ $sresult = db_query_range("SELECT n.nid, n.title, n.type, n.changed, n.uid, u.name, GREATEST(n.changed, c.timestamp) AS last_activity FROM node n LEFT JOIN comments c ON n.nid = c.nid LEFT JOIN users u ON n.uid = u.uid WHERE n.status = 1 GROUP BY n.nid, n.title, n.type, n.changed, n.nid, u.name ORDER BY last_activity DESC", 0, 15);
}
while ($node = db_fetch_object($sresult)) {
- $output .= format_plural($node->comments, "1 comment", "%count comments") ." ". t("attached to node") ." ". l($node->title, "node/view/$node->nid") .":\n";
-
if ($id) {
- $cresult = db_query("SELECT c.*, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.timestamp > %d AND c.uid = '%d' AND c.nid = '%d' AND c.status = 0 ORDER BY cid DESC", $period, $id, $node->nid);
+ $cresult = db_query("SELECT c.*, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.timestamp > %d AND c.uid = '%d' AND c.nid = '%d' AND c.status = 0 ORDER BY cid DESC", time() - 259200, $id, $node->nid);
}
else {
- $cresult = db_query("SELECT c.*, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.timestamp > %d AND c.nid = '%d'AND c.status = 0 ORDER BY cid DESC", $period, $node->nid);
+ $cresult = db_query("SELECT c.*, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.timestamp > %d AND c.nid = '%d' AND c.status = 0 ORDER BY cid DESC", time() - 259200, $node->nid);
}
- $output .= "<ul>";
+ $title = l($node->title, "node/view/$node->nid") ." ". (node_is_new($node->nid, $node->changed) ? theme("theme_mark") : "");
+ $type = module_invoke($node->type, "node", "name");
+
+ $comments = array();
while ($comment = db_fetch_object($cresult)) {
- $output .= " <li>". l($comment->subject, "node/view/$node->nid#$comment->cid") ." ". t("by") ." ". format_name($comment) ." (". t("replies") .": ". comment_num_replies($comment->cid) .") ". (comment_is_new($comment) ? theme("theme_mark") : "") ."</li>\n";
+ $comments[] = "<li>". l($comment->subject, "node/view/$node->nid#$comment->cid") ." ". t("by") ." ". format_name($comment) ." ". (node_is_new($comment->nid, $comment->timestamp) ? theme("theme_mark") : "") ."</li>\n";
+ }
+
+ $output .= "<p>". t("%type %title by %author", array("%type" => ucfirst($type), "%title" => $title, "%author" => format_name($node))) ."</p>";
+
+ if ($comments) {
+ $output .= "<ul>". implode("\n", $comments) ."</ul>";
}
- $output .= " </ul>\n";
}
return $output;
}
-function tracker_menu() {
- global $user;
-
- $links[] = l(t("your recent comments"), "tracker/$user->uid", array("title" => t("Display an overview of your recent comments.")));
- $links[] = l(t("all recent comments"), "tracker", array("title" => t("Display an overview of all the recent comments.")));
-
- return "<div align=\"center\">". implode(" &middot; ", $links) ."</div>";
+function tracker_user($type, &$edit, &$user) {
+ switch ($type) {
+ case "view_public":
+ if (user_access("access content")) {
+ return form_item(t("Recent posts"), l(t("view recent posts"), "tracker/$user->uid"));
+ }
+ }
}
-
function tracker_page() {
global $user;
- if (user_access("access comments")) {
- if (arg(1) == $user->uid) {
- theme("header", t("Your recent comments"));
- theme("box", t("Tracker"), tracker_menu());
- theme("box", t("Your recent comments"), tracker_comments(arg(1)));
- theme("footer");
- }
- else if (arg(1)) {
- $account = user_load(array("uid" => arg(1)));
- theme("header", t("%u's recent comments", array("%u" => $account->name)));
- theme("box", t("Tracker"), tracker_menu());
- theme("box", t("%u's recent comments", array("%u" => $account->name)), tracker_comments(arg(1)));
- theme("footer");
- }
- else {
- theme("header", t("All recent comments"));
- theme("box", t("Tracker"), tracker_menu());
- theme("box", t("All recent comments"), tracker_comments());
- theme("footer");
- }
+ if (user_access("access content")) {
+ theme("header", t("Recent activity"));
+ theme("box", t("Recent activity"), tracker_posts(arg(1)));
+ theme("footer");
}
}
-function tracker_user($type, &$edit, &$user) {
- switch ($type) {
- case "view_public":
- case "view_private":
- if (user_access("access comments")) {
- return form_item(t("Comments"), l(t("view recent comments"), "tracker/$user->uid", array("title" => t("View recent comments."))));
- }
- }
-}
?>