summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2001-12-31 13:02:53 +0000
committerDries Buytaert <dries@buytaert.net>2001-12-31 13:02:53 +0000
commitd85e45bf64cb2715f116eae1e0ea422419c0a358 (patch)
tree9c9794f92b18ce14377ccf7a5b3fb682af693bbd
parent69f1b4d3e074cc767ebcd3a36328348a601e726a (diff)
downloadbrdo-d85e45bf64cb2715f116eae1e0ea422419c0a358.tar.gz
brdo-d85e45bf64cb2715f116eae1e0ea422419c0a358.tar.bz2
- Added "x new comments" feature. Requires a SQL update.
- Tidied up some comment related code in node.module.
-rw-r--r--modules/blog.module4
-rw-r--r--modules/blog/blog.module4
-rw-r--r--modules/comment.module55
-rw-r--r--modules/comment/comment.module55
-rw-r--r--modules/node.module7
-rw-r--r--modules/node/node.module7
-rw-r--r--update.php10
7 files changed, 122 insertions, 20 deletions
diff --git a/modules/blog.module b/modules/blog.module
index 68c8fee83..ae364e674 100644
--- a/modules/blog.module
+++ b/modules/blog.module
@@ -180,7 +180,7 @@ function blog_page_user($uid = 0, $date = 0) {
}
if ($blog->comment) {
- $links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural(node_get_comments($blog->nid), t("comment"), t("comments")) ."</a>";
+ $links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural(comment_num_all($blog->nid), t("comment"), t("comments")) ."</a>";
}
$output .= "<tr><td><div style=\"margin-left: 20px;\"><b>". check_output($blog->title) ."</b></div></td><td align=\"right\">". $theme->links($links) ."</td></tr>";
@@ -217,7 +217,7 @@ function blog_page_last() {
}
if ($blog->comment) {
- $links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural(node_get_comments($blog->nid), t("comment"), t("comments")) ."</a>";
+ $links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural(comment_num_all($blog->nid), t("comment"), t("comments")) ."</a>";
}
$output .= "<tr><td><b>". check_output($blog->title) ."</b></td><td align=\"right\">". $theme->links($links) ."</td></tr>";
diff --git a/modules/blog/blog.module b/modules/blog/blog.module
index 68c8fee83..ae364e674 100644
--- a/modules/blog/blog.module
+++ b/modules/blog/blog.module
@@ -180,7 +180,7 @@ function blog_page_user($uid = 0, $date = 0) {
}
if ($blog->comment) {
- $links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural(node_get_comments($blog->nid), t("comment"), t("comments")) ."</a>";
+ $links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural(comment_num_all($blog->nid), t("comment"), t("comments")) ."</a>";
}
$output .= "<tr><td><div style=\"margin-left: 20px;\"><b>". check_output($blog->title) ."</b></div></td><td align=\"right\">". $theme->links($links) ."</td></tr>";
@@ -217,7 +217,7 @@ function blog_page_last() {
}
if ($blog->comment) {
- $links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural(node_get_comments($blog->nid), t("comment"), t("comments")) ."</a>";
+ $links[] = "<a href=\"node.php?id=$blog->nid\">". format_plural(comment_num_all($blog->nid), t("comment"), t("comments")) ."</a>";
}
$output .= "<tr><td><b>". check_output($blog->title) ."</b></td><td align=\"right\">". $theme->links($links) ."</td></tr>";
diff --git a/modules/comment.module b/modules/comment.module
index a31558972..dc58b5a57 100644
--- a/modules/comment.module
+++ b/modules/comment.module
@@ -12,6 +12,47 @@ function comment_settings($mode, $order, $threshold) {
}
}
+function comment_num_all($nid) {
+ $comment = db_fetch_object(db_query("SELECT COUNT(c.nid) AS number FROM node n LEFT JOIN comments c ON n.nid = c.nid WHERE n.nid = '$nid' GROUP BY n.nid"));
+ return $comment->number ? $comment->number : 0;
+}
+
+function comment_num_new($nid) {
+ global $user;
+
+ if ($user->uid) {
+
+ /*
+ ** Retrieve the timestamp at which the current user last viewed
+ ** the specified node and use this timestamp to find the number
+ ** of new comments.
+ */
+
+ $history = db_fetch_object(db_query("SELECT timestamp FROM history WHERE uid = '$user->uid' AND nid = '$nid'"));
+ $comment = db_fetch_object(db_query("SELECT COUNT(c.nid) AS number FROM node n LEFT JOIN comments c ON n.nid = c.nid WHERE n.nid = '$nid' AND timestamp > '". ($history->timestamp ? $history->timestamp : 0) ."' GROUP BY n.nid"));
+
+ return $comment->number ? $comment->number : 0;
+ }
+ else {
+ return 0;
+ }
+
+}
+
+function comment_tag_new($nid) {
+ global $user;
+
+ if ($user->uid) {
+ $result = db_query("SELECT timestamp FROM history WHERE uid = '$user->uid' AND nid = '$nid'");
+ if (db_fetch_object($result)) {
+ db_query("UPDATE history SET timestamp = '". time() ."' WHERE uid = '$user->uid' AND nid = '$nid'");
+ }
+ else {
+ db_query("INSERT INTO history (uid, nid, timestamp) VALUES ('$user->uid', '$nid', '". time() ."')");
+ }
+ }
+}
+
function comment_access($op, $comment) {
global $user;
@@ -460,6 +501,7 @@ function comment_perm() {
}
function comment_link($type, $node = 0, $main = 0) {
+
if ($type == "admin" && user_access("administer comments")) {
$links[] = "<a href=\"admin.php?mod=comment\">comments</a>";
}
@@ -473,11 +515,20 @@ function comment_link($type, $node = 0, $main = 0) {
*/
if (user_access("access comments")) {
- $links[] = "<a href=\"node.php?id=$node->nid#comment\">". format_plural(node_get_comments($node->nid), "comment", "comments") ."</a>";
+ $all = comment_num_all($node->nid);
+ $new = comment_num_new($node->nid);
+
+ $links[] = "<a href=\"node.php?id=$node->nid#comment\">". format_plural($all, "comment", "comments") . ($new ? ", $new ". t("new") : "") ."</a>";
}
}
else {
/*
+ ** Tag the node's comments as read:
+ */
+
+ comment_tag_new($node->nid);
+
+ /*
** Node page: add a "post comment" link if the user is allowed to
** post comments.
*/
@@ -493,7 +544,7 @@ function comment_link($type, $node = 0, $main = 0) {
function comment_node_link($node) {
- if (user_access("administer comments") && node_get_comments($node->nid)) {
+ if (user_access("administer comments") && comments_all($node->nid)) {
/*
** Edit comments:
diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index a31558972..dc58b5a57 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -12,6 +12,47 @@ function comment_settings($mode, $order, $threshold) {
}
}
+function comment_num_all($nid) {
+ $comment = db_fetch_object(db_query("SELECT COUNT(c.nid) AS number FROM node n LEFT JOIN comments c ON n.nid = c.nid WHERE n.nid = '$nid' GROUP BY n.nid"));
+ return $comment->number ? $comment->number : 0;
+}
+
+function comment_num_new($nid) {
+ global $user;
+
+ if ($user->uid) {
+
+ /*
+ ** Retrieve the timestamp at which the current user last viewed
+ ** the specified node and use this timestamp to find the number
+ ** of new comments.
+ */
+
+ $history = db_fetch_object(db_query("SELECT timestamp FROM history WHERE uid = '$user->uid' AND nid = '$nid'"));
+ $comment = db_fetch_object(db_query("SELECT COUNT(c.nid) AS number FROM node n LEFT JOIN comments c ON n.nid = c.nid WHERE n.nid = '$nid' AND timestamp > '". ($history->timestamp ? $history->timestamp : 0) ."' GROUP BY n.nid"));
+
+ return $comment->number ? $comment->number : 0;
+ }
+ else {
+ return 0;
+ }
+
+}
+
+function comment_tag_new($nid) {
+ global $user;
+
+ if ($user->uid) {
+ $result = db_query("SELECT timestamp FROM history WHERE uid = '$user->uid' AND nid = '$nid'");
+ if (db_fetch_object($result)) {
+ db_query("UPDATE history SET timestamp = '". time() ."' WHERE uid = '$user->uid' AND nid = '$nid'");
+ }
+ else {
+ db_query("INSERT INTO history (uid, nid, timestamp) VALUES ('$user->uid', '$nid', '". time() ."')");
+ }
+ }
+}
+
function comment_access($op, $comment) {
global $user;
@@ -460,6 +501,7 @@ function comment_perm() {
}
function comment_link($type, $node = 0, $main = 0) {
+
if ($type == "admin" && user_access("administer comments")) {
$links[] = "<a href=\"admin.php?mod=comment\">comments</a>";
}
@@ -473,11 +515,20 @@ function comment_link($type, $node = 0, $main = 0) {
*/
if (user_access("access comments")) {
- $links[] = "<a href=\"node.php?id=$node->nid#comment\">". format_plural(node_get_comments($node->nid), "comment", "comments") ."</a>";
+ $all = comment_num_all($node->nid);
+ $new = comment_num_new($node->nid);
+
+ $links[] = "<a href=\"node.php?id=$node->nid#comment\">". format_plural($all, "comment", "comments") . ($new ? ", $new ". t("new") : "") ."</a>";
}
}
else {
/*
+ ** Tag the node's comments as read:
+ */
+
+ comment_tag_new($node->nid);
+
+ /*
** Node page: add a "post comment" link if the user is allowed to
** post comments.
*/
@@ -493,7 +544,7 @@ function comment_link($type, $node = 0, $main = 0) {
function comment_node_link($node) {
- if (user_access("administer comments") && node_get_comments($node->nid)) {
+ if (user_access("administer comments") && comments_all($node->nid)) {
/*
** Edit comments:
diff --git a/modules/node.module b/modules/node.module
index e9b7f69a6..c4999b1b6 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -14,15 +14,10 @@ function node_help() {
}
}
-// TODO: still used by themes, yet doesn't return anything at the moment
+// DEPRICATED: still used by themes, yet doesn't return anything at the moment
function node_index() {
}
-function node_get_comments($nid) {
- $comment = db_fetch_object(db_query("SELECT COUNT(c.nid) AS number FROM node n LEFT JOIN comments c ON n.nid = c.nid WHERE n.nid = '$nid' GROUP BY n.nid"));
- return $comment->number ? $comment->number : 0;
-}
-
function node_teaser($body) {
$size = 400;
diff --git a/modules/node/node.module b/modules/node/node.module
index e9b7f69a6..c4999b1b6 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -14,15 +14,10 @@ function node_help() {
}
}
-// TODO: still used by themes, yet doesn't return anything at the moment
+// DEPRICATED: still used by themes, yet doesn't return anything at the moment
function node_index() {
}
-function node_get_comments($nid) {
- $comment = db_fetch_object(db_query("SELECT COUNT(c.nid) AS number FROM node n LEFT JOIN comments c ON n.nid = c.nid WHERE n.nid = '$nid' GROUP BY n.nid"));
- return $comment->number ? $comment->number : 0;
-}
-
function node_teaser($body) {
$size = 400;
diff --git a/update.php b/update.php
index 1cc0d1c81..f26937533 100644
--- a/update.php
+++ b/update.php
@@ -41,6 +41,7 @@ $mysql_updates = array(
"2001-12-16" => "update_14",
"2001-12-24" => "update_15",
"2001-12-30" => "update_16",
+ "2001-12-31" => "update_17",
);
// Update functions
@@ -296,6 +297,15 @@ function update_16() {
update_sql("ALTER TABLE comments CHANGE lid nid int(10) NOT NULL;");
}
+function update_17() {
+ update_sql("CREATE TABLE history (
+ uid int(10) DEFAULT '0' NOT NULL,
+ nid int(10) DEFAULT '0' NOT NULL,
+ timestamp int(11) DEFAULT '0' NOT NULL,
+ PRIMARY KEY (uid, nid)
+ );");
+}
+
// System functions
function update_sql($sql) {
global $edit;