summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2001-12-08 11:37:07 +0000
committerDries Buytaert <dries@buytaert.net>2001-12-08 11:37:07 +0000
commitab20a866c158bda4da9878c2026017377355713b (patch)
tree073ad0fd8a2a45d53081417b9a7aaa17baaff2c7
parent67ac175ed53830ceb2a7174c08c5c33f4ab7f662 (diff)
downloadbrdo-ab20a866c158bda4da9878c2026017377355713b.tar.gz
brdo-ab20a866c158bda4da9878c2026017377355713b.tar.bz2
comment.module:
- small improvements to the comment admin interface. - merged comment.inc and comment.module.
-rw-r--r--includes/comment.inc352
-rw-r--r--includes/common.inc2
-rw-r--r--modules/comment.module379
-rw-r--r--modules/comment/comment.module379
4 files changed, 732 insertions, 380 deletions
diff --git a/includes/comment.inc b/includes/comment.inc
deleted file mode 100644
index f10fb89c9..000000000
--- a/includes/comment.inc
+++ /dev/null
@@ -1,352 +0,0 @@
-<?php
-// $Id$
-
-$cmodes = array(1 => "List - min", 2 => "List - max", 3 => "Threaded - min", 4 => "Threaded - max");
-$corder = array(1 => "Date - new", 2 => "Date - old", 3 => "Rate - high", 4 => "Rate - low");
-
-class Comment {
- function Comment($uid, $name, $subject, $comment, $timestamp, $url, $cid, $lid) {
- $this->uid = $uid;
- $this->name = $name;
- $this->subject = $subject;
- $this->comment = $comment;
- $this->timestamp = $timestamp;
- $this->url = $url;
- $this->cid = $cid;
- $this->lid = $lid;
- }
-}
-
-function comment_moderate($moderate) {
- global $user;
-
- if ($user->uid && $moderate) {
- foreach ($moderate as $cid => $score) {
- if ($score > 0 && $score < 6) {
- if (db_fetch_object(db_query("SELECT * FROM moderate WHERE uid = '". check_query($user->uid) ."' AND cid = '". check_query($cid) ."'"))) {
- db_query("UPDATE moderate SET score = '". check_query($score) ."' WHERE uid = '". check_query($user->uid) ."' AND cid = '". check_query($cid) ."'");
- }
- else {
- db_query("INSERT INTO moderate (uid, cid, score, timestamp) VALUES ('". check_query($user->uid) ."', '". check_query($cid) ."', '". check_query($score) ."', '". time() ."')");
- }
- }
- }
- }
-}
-
-function comment_settings($mode, $order, $threshold) {
- global $user;
-
- if ($user->uid) {
- $user = user_save($user, array("mode" => $mode, "sort" => $order, "threshold" => $threshold));
- }
-}
-
-function comment_form($edit) {
- global $user;
-
- $form .= "<a name=\"comment\"></a>\n";
-
- // name field:
- $form .= form_item(t("Your name"), format_name($user));
-
- // subject field:
- $form .= form_textfield(t("Subject"), "subject", $edit[subject], 50, 64);
-
- // comment field:
- $form .= form_textarea(t("Comment"), "comment", $edit[comment] ? $edit[comment] : $user->signature, 70, 10, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
-
- // preview button:
- $form .= form_hidden("pid", $edit[pid]);
- $form .= form_hidden("id", $edit[id]);
-
- if (!$edit[comment]) {
- $form .= form_submit(t("Preview comment"));
- }
- else {
- $form .= form_submit(t("Preview comment"));
- $form .= form_submit(t("Post comment"));
- }
-
- return form($form);
-}
-
-function comment_reply($pid, $id) {
- global $theme;
-
- if ($pid) {
- $item = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'"));
- comment_view(new Comment($item->uid, $item->name, $item->subject, $item->comment, $item->timestamp, $item->url, $item->cid, $item->lid), t("reply to this comment"));
- }
- else {
- node_view(node_load(array("nid" => $id)));
- $pid = 0;
- }
-
- if (user_access("post comments")) {
- $theme->box(t("Reply"), comment_form(array(pid=>$pid, id=>$id)));
- }
- else {
- $theme->box(t("Reply"), t("You are not authorized to post comments."));
- }
-}
-
-function comment_preview($edit) {
- global $theme, $user;
-
- // Preview comment:
- comment_view(new Comment($user->uid, $user->name, check_preview($edit[subject]), check_preview($edit[comment]), time(), check_preview($user->homepage), 0, 0, 0, 0), t("reply to this comment"));
-
- $theme->box(t("Reply"), comment_form($edit));
-}
-
-function comment_post($edit) {
- global $theme, $user;
-
- if (user_access("post comments")) {
- // check comment submission rate:
- throttle("post comment", variable_get(max_comment_rate, 60));
-
- // check for duplicate comments:
- $duplicate = db_result(db_query("SELECT COUNT(cid) FROM comments WHERE pid = '". check_input($edit[pid]) ."' AND lid = '". check_input($edit[id]) ."' AND subject = '". check_input($edit[subject]) ."' AND comment = '". check_input($edit[comment]) ."'"), 0);
-
- if ($duplicate != 0) {
- watchdog("warning", "comment: duplicate '$edit[subject]'");
- }
- else {
- // validate subject:
- $edit[subject] = $edit[subject] ? $edit[subject] : substr($edit[comment], 0, 29);
-
- // add watchdog entry:
- watchdog("special", "comment: added '$edit[subject]'");
-
- // add comment to database:
- db_query("INSERT INTO comments (lid, pid, uid, subject, comment, hostname, timestamp) VALUES ('". check_input($edit[id]) ."', '". check_input($edit[pid]) ."', '$user->uid', '". check_input($edit[subject]) ."', '". check_input($edit[comment]) ."', '". getenv("REMOTE_ADDR") ."', '". time() ."')");
-
- // clear cache:
- cache_clear();
- }
- }
-}
-
-function comment_num_replies($id, $count = 0) {
-
- $result = db_query("SELECT COUNT(cid) FROM comments WHERE pid = '$id'");
- return ($result) ? db_result($result, 0) : 0;
-
-}
-
-function comment_moderation($comment) {
- global $user;
-
- $values = array("--", 1, 2, 3, 4, 5);
-
- $moderate = db_fetch_object(db_query("SELECT * FROM moderate WHERE cid = '$comment->cid' AND uid = '$user->uid'"));
-
- foreach ($values as $key => $value) {
- $options .= " <option value=\"$key\"". ($moderate->score == $key ? " selected=\"selected\"" : "") .">$value</option>\n";
- }
-
- $output .= "<select name=\"moderate[comment][$comment->cid]\">$options</select><br />". ($comment->score ? $comment->score : "--") ." / $comment->votes";
-
- return $output;
-}
-
-function comment_threshold($threshold) {
- for ($i = 0; $i < 6; $i++) $options .= " <option value=\"$i\"". ($threshold == $i ? " SELECTED" : "") .">". t("Visibility") ." - $i</option>";
- return "<select name=\"threshold\">$options</select>\n";
-}
-
-function comment_mode($mode) {
- global $cmodes;
-
- foreach ($cmodes as $key=>$value) $options .= " <option value=\"$key\"". ($mode == $key ? " SELECTED" : "") .">$value</option>\n";
- return "<select name=\"mode\">$options</select>\n";
-}
-
-function comment_order($order) {
- global $corder;
-
- foreach ($corder as $key=>$value) $options .= " <option value=\"$key\"". ($order == $key ? " SELECTED" : "") .">$value</option>\n";
- return "<select name=\"order\">$options</select>\n";
-}
-
-function comment_query($lid, $order, $pid = -1) {
-
- $query .= "SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.lid = '$lid'";
-
- if ($pid >= 0) {
- $query .= " AND pid = '$pid'";
- }
-
- $query .= " GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name";
-
- if ($order == 1) {
- $query .= " ORDER BY c.timestamp DESC";
- }
- else if ($order == 2) {
- $query .= " ORDER BY c.timestamp";
- }
- else if ($order == 3) {
- $query .= " ORDER BY score DESC";
- }
- else if ($order == 4) {
- $query .= " ORDER BY score";
- }
-
- return db_query($query);
-
-}
-
-function comment_visible($comment, $threshold = 0) {
- if ($comment->votes == 0 || $comment->score >= $threshold) {
- return 1;
- }
- else {
- return 0;
- }
-}
-
-function comment_links($comment, $return = 1) {
- global $theme;
-
- if ($return) {
- return "<a href=\"node.php?id=$comment->lid#$comment->cid\"><font color=\"$theme->type\">". t("return") ."</font></a> | <a href=\"node.php?op=reply&id=$comment->lid&pid=$comment->cid\"><font color=\"$theme->type\">". t("reply to this comment") ."</font></a>";
- }
- else {
- return "<a href=\"node.php?op=reply&id=$comment->lid&pid=$comment->cid\"><font color=\"$theme->type\">". t("reply to this comment") ."</font></a>";
- }
-}
-
-function comment_view($comment, $folded = 0) {
- global $theme;
-
- if ($folded) {
- $theme->comment($comment, $folded);
- }
- else {
- print "<a href=\"node.php?id=$comment->lid&cid=$comment->cid#$comment->cid\">". check_output($comment->subject) ."</a> by ". format_name($comment) ." <small>(". ($comment->score ? $comment->score : "--") ." / $comment->votes)</small><p />";
- }
-}
-
-function comment_thread_min($cid, $threshold) {
- global $user;
-
- $result = db_query("SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.pid = '$cid' GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name ORDER BY c.timestamp");
-
- while ($comment = db_fetch_object($result)) {
- print "<ul>";
- print comment_view($comment);
- comment_thread_min($comment->cid, $threshold);
- print "</ul>";
- }
-}
-
-function comment_thread_max($cid, $mode, $threshold, $level = 0) {
- global $user;
-
- /*
- ** We had quite a few browser specific issues: expanded comments below
- ** the top level got truncated on the right hand side. A range of
- ** solutions have been proposed and tried but either the right margins of
- ** the comments didn't line up well, or the heavily nested tables made
- ** for slow rendering and cluttered HTML. This is the best work-around
- ** in terms of speed and size.
- */
-
- $result = db_query("SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.pid = '$cid' GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name ORDER BY c.timestamp");
-
- while ($comment = db_fetch_object($result)) {
- print "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr><td width=\"". ($level * 25) ."\">&nbsp;</td><td>\n";
- comment_view($comment, (comment_visible($comment, $threshold) ? comment_links($comment, 0) : 0));
- print "</td></tr></table>\n";
-
- comment_thread_max($comment->cid, $mode, $threshold, $level + 1);
- }
-
-}
-
-function comment_render($lid, $cid) {
- global $user, $theme, $mode, $order, $threshold, $REQUEST_URI;
-
- if (user_access("access comments")) {
-
- /*
- ** Pre-process variables:
- */
-
- if (empty($lid)) {
- $lid = 0;
- }
-
- if (empty($cid)) {
- $cid = 0;
- }
-
- if (empty($mode)) {
- $mode = $user->uid ? $user->mode : variable_get(default_comment_mode, 4);
- }
-
- if (empty($order)) {
- $order = $user->uid ? $user->sort : variable_get(default_comment_order, 1);
- }
-
- if (empty($threshold)) {
- $threshold = $user->uid ? $user->threshold : variable_get(default_comment_threshold, 3);
- }
-
- print "<a name=\"comment\"></a>\n";
- print "<form method=\"post\" action=\"$REQUEST_URI\">\n";
-
- /*
- ** Render control panel:
- */
-
- $theme->box(t("Control panel"), $theme->comment_controls($threshold, $mode, $order));
-
- if ($cid > 0) {
- $result = db_query("SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.cid = '$cid' GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name");
- if ($comment = db_fetch_object($result)) {
- comment_view($comment, comment_links($comment));
- }
- }
- else {
- if ($mode == 1) {
- $result = comment_query($lid, $order);
- print "<table border=\"0\" cellpadding=\"2\" cellspacing=\"2\">\n";
- print " <tr><th>Subject</th><th>Author</th><th>Date</th><th>Score</th></tr>\n";
- while ($comment = db_fetch_object($result)) {
- if (comment_visible($comment, $threshold)) {
- print " <tr><td><a href=\"node.php?id=$comment->lid&cid=$comment->cid#$comment->cid\">". check_output($comment->subject) ."</a></td><td>". format_name($comment) ."</td><td>". format_date($comment->timestamp, "small") ."</td><td>$comment->score</td></tr>\n";
- }
- }
- print "</table>\n";
- }
- else if ($mode == 2) {
- $result = comment_query($lid, $order);
- while ($comment = db_fetch_object($result)) {
- comment_view($comment, (comment_visible($comment, $threshold) ? comment_links($comment, 0) : 0));
- }
- }
- else if ($mode == 3) {
- $result = comment_query($lid, $order, 0);
- while ($comment = db_fetch_object($result)) {
- comment_view($comment);
- comment_thread_min($comment->cid, $threshold);
- }
- }
- else {
- $result = comment_query($lid, $order, 0);
- while ($comment = db_fetch_object($result)) {
- comment_view($comment, (comment_visible($comment, $threshold) ? comment_links($comment, 0) : 0));
- comment_thread_max($comment->cid, $mode, $threshold, $level + 1);
- }
- }
- }
-
- print "</form>";
-
- }
-}
-
-?>
diff --git a/includes/common.inc b/includes/common.inc
index 9d613584a..ef1661132 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -454,13 +454,11 @@ unset($conf);
include_once "includes/$config.php";
include_once "includes/database.inc";
include_once "includes/variable.inc";
-include_once "includes/comment.inc";
include_once "includes/xmlrpc.inc";
include_once "includes/module.inc";
include_once "includes/locale.inc";
include_once "includes/search.inc";
include_once "includes/theme.inc";
-include_once "includes/node.inc";
// initialize configuration variables:
$conf = variable_init($conf);
diff --git a/modules/comment.module b/modules/comment.module
index 100824459..192ea03a8 100644
--- a/modules/comment.module
+++ b/modules/comment.module
@@ -1,6 +1,354 @@
-<?php
+<?
// $Id$
+$cmodes = array(1 => "List - min", 2 => "List - max", 3 => "Threaded - min", 4 => "Threaded - max");
+$corder = array(1 => "Date - new", 2 => "Date - old", 3 => "Rate - high", 4 => "Rate - low");
+
+class Comment {
+ function Comment($uid, $name, $subject, $comment, $timestamp, $url, $cid, $lid) {
+ $this->uid = $uid;
+ $this->name = $name;
+ $this->subject = $subject;
+ $this->comment = $comment;
+ $this->timestamp = $timestamp;
+ $this->url = $url;
+ $this->cid = $cid;
+ $this->lid = $lid;
+ }
+}
+
+function comment_moderate($moderate) {
+ global $user;
+
+ if ($user->uid && $moderate) {
+ foreach ($moderate as $cid => $score) {
+ if ($score > 0 && $score < 6) {
+ if (db_fetch_object(db_query("SELECT * FROM moderate WHERE uid = '". check_query($user->uid) ."' AND cid = '". check_query($cid) ."'"))) {
+ db_query("UPDATE moderate SET score = '". check_query($score) ."' WHERE uid = '". check_query($user->uid) ."' AND cid = '". check_query($cid) ."'");
+ }
+ else {
+ db_query("INSERT INTO moderate (uid, cid, score, timestamp) VALUES ('". check_query($user->uid) ."', '". check_query($cid) ."', '". check_query($score) ."', '". time() ."')");
+ }
+ }
+ }
+ }
+}
+
+function comment_settings($mode, $order, $threshold) {
+ global $user;
+
+ if ($user->uid) {
+ $user = user_save($user, array("mode" => $mode, "sort" => $order, "threshold" => $threshold));
+ }
+}
+
+function comment_form($edit) {
+ global $user;
+
+ $form .= "<a name=\"comment\"></a>\n";
+
+ // name field:
+ $form .= form_item(t("Your name"), format_name($user));
+
+ // subject field:
+ $form .= form_textfield(t("Subject"), "subject", $edit[subject], 50, 64);
+
+ // comment field:
+ $form .= form_textarea(t("Comment"), "comment", $edit[comment] ? $edit[comment] : $user->signature, 70, 10, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
+
+ // preview button:
+ $form .= form_hidden("pid", $edit[pid]);
+ $form .= form_hidden("id", $edit[id]);
+
+ if (!$edit[comment]) {
+ $form .= form_submit(t("Preview comment"));
+ }
+ else {
+ $form .= form_submit(t("Preview comment"));
+ $form .= form_submit(t("Post comment"));
+ }
+
+ return form($form);
+}
+
+function comment_reply($pid, $id) {
+ global $theme;
+
+ if ($pid) {
+ $item = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'"));
+ comment_view(new Comment($item->uid, $item->name, $item->subject, $item->comment, $item->timestamp, $item->url, $item->cid, $item->lid), t("reply to this comment"));
+ }
+ else {
+ node_view(node_load(array("nid" => $id)));
+ $pid = 0;
+ }
+
+ if (user_access("post comments")) {
+ $theme->box(t("Reply"), comment_form(array(pid=>$pid, id=>$id)));
+ }
+ else {
+ $theme->box(t("Reply"), t("You are not authorized to post comments."));
+ }
+}
+
+function comment_preview($edit) {
+ global $theme, $user;
+
+ // Preview comment:
+ comment_view(new Comment($user->uid, $user->name, check_preview($edit[subject]), check_preview($edit[comment]), time(), check_preview($user->homepage), 0, 0, 0, 0), t("reply to this comment"));
+
+ $theme->box(t("Reply"), comment_form($edit));
+}
+
+function comment_post($edit) {
+ global $theme, $user;
+
+ if (user_access("post comments")) {
+ // check comment submission rate:
+ throttle("post comment", variable_get(max_comment_rate, 60));
+
+ // check for duplicate comments:
+ $duplicate = db_result(db_query("SELECT COUNT(cid) FROM comments WHERE pid = '". check_input($edit[pid]) ."' AND lid = '". check_input($edit[id]) ."' AND subject = '". check_input($edit[subject]) ."' AND comment = '". check_input($edit[comment]) ."'"), 0);
+
+ if ($duplicate != 0) {
+ watchdog("warning", "comment: duplicate '$edit[subject]'");
+ }
+ else {
+ // validate subject:
+ $edit[subject] = $edit[subject] ? $edit[subject] : substr($edit[comment], 0, 29);
+
+ // add watchdog entry:
+ watchdog("special", "comment: added '$edit[subject]'");
+
+ // add comment to database:
+ db_query("INSERT INTO comments (lid, pid, uid, subject, comment, hostname, timestamp) VALUES ('". check_input($edit[id]) ."', '". check_input($edit[pid]) ."', '$user->uid', '". check_input($edit[subject]) ."', '". check_input($edit[comment]) ."', '". getenv("REMOTE_ADDR") ."', '". time() ."')");
+
+ // clear cache:
+ cache_clear();
+ }
+ }
+}
+
+function comment_num_replies($id, $count = 0) {
+
+ $result = db_query("SELECT COUNT(cid) FROM comments WHERE pid = '$id'");
+ return ($result) ? db_result($result, 0) : 0;
+
+}
+
+function comment_moderation($comment) {
+ global $user;
+
+ $values = array("--", 1, 2, 3, 4, 5);
+
+ $moderate = db_fetch_object(db_query("SELECT * FROM moderate WHERE cid = '$comment->cid' AND uid = '$user->uid'"));
+
+ foreach ($values as $key => $value) {
+ $options .= " <option value=\"$key\"". ($moderate->score == $key ? " selected=\"selected\"" : "") .">$value</option>\n";
+ }
+
+ $output .= "<select name=\"moderate[comment][$comment->cid]\">$options</select><br />". ($comment->score ? $comment->score : "--") ." / $comment->votes";
+
+ return $output;
+}
+
+function comment_threshold($threshold) {
+ for ($i = 0; $i < 6; $i++) $options .= " <option value=\"$i\"". ($threshold == $i ? " SELECTED" : "") .">". t("Visibility") ." - $i</option>";
+ return "<select name=\"threshold\">$options</select>\n";
+}
+
+function comment_mode($mode) {
+ global $cmodes;
+
+ foreach ($cmodes as $key=>$value) $options .= " <option value=\"$key\"". ($mode == $key ? " SELECTED" : "") .">$value</option>\n";
+ return "<select name=\"mode\">$options</select>\n";
+}
+
+function comment_order($order) {
+ global $corder;
+
+ foreach ($corder as $key=>$value) $options .= " <option value=\"$key\"". ($order == $key ? " SELECTED" : "") .">$value</option>\n";
+ return "<select name=\"order\">$options</select>\n";
+}
+
+function comment_query($lid, $order, $pid = -1) {
+
+ $query .= "SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.lid = '$lid'";
+
+ if ($pid >= 0) {
+ $query .= " AND pid = '$pid'";
+ }
+
+ $query .= " GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name";
+
+ if ($order == 1) {
+ $query .= " ORDER BY c.timestamp DESC";
+ }
+ else if ($order == 2) {
+ $query .= " ORDER BY c.timestamp";
+ }
+ else if ($order == 3) {
+ $query .= " ORDER BY score DESC";
+ }
+ else if ($order == 4) {
+ $query .= " ORDER BY score";
+ }
+
+ return db_query($query);
+
+}
+
+function comment_visible($comment, $threshold = 0) {
+ if ($comment->votes == 0 || $comment->score >= $threshold) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+function comment_links($comment, $return = 1) {
+ global $theme;
+
+ if ($return) {
+ return "<a href=\"node.php?id=$comment->lid#$comment->cid\"><font color=\"$theme->type\">". t("return") ."</font></a> | <a href=\"node.php?op=reply&id=$comment->lid&pid=$comment->cid\"><font color=\"$theme->type\">". t("reply to this comment") ."</font></a>";
+ }
+ else {
+ return "<a href=\"node.php?op=reply&id=$comment->lid&pid=$comment->cid\"><font color=\"$theme->type\">". t("reply to this comment") ."</font></a>";
+ }
+}
+
+function comment_view($comment, $folded = 0) {
+ global $theme;
+
+ if ($folded) {
+ $theme->comment($comment, $folded);
+ }
+ else {
+ print "<a href=\"node.php?id=$comment->lid&cid=$comment->cid#$comment->cid\">". check_output($comment->subject) ."</a> by ". format_name($comment) ." <small>(". ($comment->score ? $comment->score : "--") ." / $comment->votes)</small><p />";
+ }
+}
+
+function comment_thread_min($cid, $threshold) {
+ global $user;
+
+ $result = db_query("SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.pid = '$cid' GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name ORDER BY c.timestamp");
+
+ while ($comment = db_fetch_object($result)) {
+ print "<ul>";
+ print comment_view($comment);
+ comment_thread_min($comment->cid, $threshold);
+ print "</ul>";
+ }
+}
+
+function comment_thread_max($cid, $mode, $threshold, $level = 0) {
+ global $user;
+
+ /*
+ ** We had quite a few browser specific issues: expanded comments below
+ ** the top level got truncated on the right hand side. A range of
+ ** solutions have been proposed and tried but either the right margins of
+ ** the comments didn't line up well, or the heavily nested tables made
+ ** for slow rendering and cluttered HTML. This is the best work-around
+ ** in terms of speed and size.
+ */
+
+ $result = db_query("SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.pid = '$cid' GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name ORDER BY c.timestamp");
+
+ while ($comment = db_fetch_object($result)) {
+ print "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr><td width=\"". ($level * 25) ."\">&nbsp;</td><td>\n";
+ comment_view($comment, (comment_visible($comment, $threshold) ? comment_links($comment, 0) : 0));
+ print "</td></tr></table>\n";
+
+ comment_thread_max($comment->cid, $mode, $threshold, $level + 1);
+ }
+
+}
+
+function comment_render($lid, $cid) {
+ global $user, $theme, $mode, $order, $threshold, $REQUEST_URI;
+
+ if (user_access("access comments")) {
+
+ /*
+ ** Pre-process variables:
+ */
+
+ if (empty($lid)) {
+ $lid = 0;
+ }
+
+ if (empty($cid)) {
+ $cid = 0;
+ }
+
+ if (empty($mode)) {
+ $mode = $user->uid ? $user->mode : variable_get(default_comment_mode, 4);
+ }
+
+ if (empty($order)) {
+ $order = $user->uid ? $user->sort : variable_get(default_comment_order, 1);
+ }
+
+ if (empty($threshold)) {
+ $threshold = $user->uid ? $user->threshold : variable_get(default_comment_threshold, 3);
+ }
+
+ print "<a name=\"comment\"></a>\n";
+ print "<form method=\"post\" action=\"$REQUEST_URI\">\n";
+
+ /*
+ ** Render control panel:
+ */
+
+ $theme->box(t("Control panel"), $theme->comment_controls($threshold, $mode, $order));
+
+ if ($cid > 0) {
+ $result = db_query("SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.cid = '$cid' GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name");
+ if ($comment = db_fetch_object($result)) {
+ comment_view($comment, comment_links($comment));
+ }
+ }
+ else {
+ if ($mode == 1) {
+ $result = comment_query($lid, $order);
+ print "<table border=\"0\" cellpadding=\"2\" cellspacing=\"2\">\n";
+ print " <tr><th>Subject</th><th>Author</th><th>Date</th><th>Score</th></tr>\n";
+ while ($comment = db_fetch_object($result)) {
+ if (comment_visible($comment, $threshold)) {
+ print " <tr><td><a href=\"node.php?id=$comment->lid&cid=$comment->cid#$comment->cid\">". check_output($comment->subject) ."</a></td><td>". format_name($comment) ."</td><td>". format_date($comment->timestamp, "small") ."</td><td>$comment->score</td></tr>\n";
+ }
+ }
+ print "</table>\n";
+ }
+ else if ($mode == 2) {
+ $result = comment_query($lid, $order);
+ while ($comment = db_fetch_object($result)) {
+ comment_view($comment, (comment_visible($comment, $threshold) ? comment_links($comment, 0) : 0));
+ }
+ }
+ else if ($mode == 3) {
+ $result = comment_query($lid, $order, 0);
+ while ($comment = db_fetch_object($result)) {
+ comment_view($comment);
+ comment_thread_min($comment->cid, $threshold);
+ }
+ }
+ else {
+ $result = comment_query($lid, $order, 0);
+ while ($comment = db_fetch_object($result)) {
+ comment_view($comment, (comment_visible($comment, $threshold) ? comment_links($comment, 0) : 0));
+ comment_thread_max($comment->cid, $mode, $threshold, $level + 1);
+ }
+ }
+ }
+
+ print "</form>";
+
+ }
+}
+
function comment_search($keys) {
global $PHP_SELF;
$result = db_query("SELECT c.*, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.subject LIKE '%$keys%' OR c.comment LIKE '%$keys%' ORDER BY c.timestamp DESC LIMIT 20");
@@ -48,21 +396,26 @@ function comment_link($type, $node = 0, $main = 0) {
function comment_node_link($node) {
- /*
- ** Edit comments:
- */
+ if (node_get_comments($node->nid)) {
- $result = db_query("SELECT c.cid, c.subject, u.uid, u.name FROM comments c LEFT JOIN users u ON u.uid = c.uid WHERE lid = '$node->nid' ORDER BY c.timestamp");
- $output .= "<h3>". t("Edit comments") ."</h3>";
- $output .= "<table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">";
- $output .= " <tr><th>title</th><th>author</th><th colspan=\"3\">operations</th></tr>";
- while ($comment = db_fetch_object($result)) {
- $output .= "<tr><td><a href=\"node.php?id=$node->nid&cid=$comment->cid#$comment->cid\">$comment->subject</a></td><td>". format_name($comment) ."</td><td><a href=\"node.php?id=$node->nid&cid=$comment->cid#$comment->cid\">". t("view comment") ."</a></td><td><a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\">". t("edit comment") ."</a></td><td><a href=\"admin.php?mod=comment&op=delete&id=$comment->cid\">". t("delete comment") ."</a></td></tr>";
- }
+ /*
+ ** Edit comments:
+ */
- $output .= "</table>";
+ $result = db_query("SELECT c.cid, c.subject, u.uid, u.name FROM comments c LEFT JOIN users u ON u.uid = c.uid WHERE lid = '$node->nid' ORDER BY c.timestamp");
- return $output;
+ $output .= "<h3>". t("Edit comments") ."</h3>";
+ $output .= "<table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">";
+ $output .= " <tr><th>title</th><th>author</th><th colspan=\"3\">operations</th></tr>";
+
+ while ($comment = db_fetch_object($result)) {
+ $output .= "<tr><td><a href=\"node.php?id=$node->nid&cid=$comment->cid#$comment->cid\">$comment->subject</a></td><td>". format_name($comment) ."</td><td><a href=\"node.php?id=$node->nid&cid=$comment->cid#$comment->cid\">". t("view comment") ."</a></td><td><a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\">". t("edit comment") ."</a></td><td><a href=\"admin.php?mod=comment&op=delete&id=$comment->cid\">". t("delete comment") ."</a></td></tr>";
+ }
+
+ $output .= "</table>";
+
+ return $output;
+ }
}
function comment_edit($id) {
diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index 100824459..192ea03a8 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -1,6 +1,354 @@
-<?php
+<?
// $Id$
+$cmodes = array(1 => "List - min", 2 => "List - max", 3 => "Threaded - min", 4 => "Threaded - max");
+$corder = array(1 => "Date - new", 2 => "Date - old", 3 => "Rate - high", 4 => "Rate - low");
+
+class Comment {
+ function Comment($uid, $name, $subject, $comment, $timestamp, $url, $cid, $lid) {
+ $this->uid = $uid;
+ $this->name = $name;
+ $this->subject = $subject;
+ $this->comment = $comment;
+ $this->timestamp = $timestamp;
+ $this->url = $url;
+ $this->cid = $cid;
+ $this->lid = $lid;
+ }
+}
+
+function comment_moderate($moderate) {
+ global $user;
+
+ if ($user->uid && $moderate) {
+ foreach ($moderate as $cid => $score) {
+ if ($score > 0 && $score < 6) {
+ if (db_fetch_object(db_query("SELECT * FROM moderate WHERE uid = '". check_query($user->uid) ."' AND cid = '". check_query($cid) ."'"))) {
+ db_query("UPDATE moderate SET score = '". check_query($score) ."' WHERE uid = '". check_query($user->uid) ."' AND cid = '". check_query($cid) ."'");
+ }
+ else {
+ db_query("INSERT INTO moderate (uid, cid, score, timestamp) VALUES ('". check_query($user->uid) ."', '". check_query($cid) ."', '". check_query($score) ."', '". time() ."')");
+ }
+ }
+ }
+ }
+}
+
+function comment_settings($mode, $order, $threshold) {
+ global $user;
+
+ if ($user->uid) {
+ $user = user_save($user, array("mode" => $mode, "sort" => $order, "threshold" => $threshold));
+ }
+}
+
+function comment_form($edit) {
+ global $user;
+
+ $form .= "<a name=\"comment\"></a>\n";
+
+ // name field:
+ $form .= form_item(t("Your name"), format_name($user));
+
+ // subject field:
+ $form .= form_textfield(t("Subject"), "subject", $edit[subject], 50, 64);
+
+ // comment field:
+ $form .= form_textarea(t("Comment"), "comment", $edit[comment] ? $edit[comment] : $user->signature, 70, 10, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
+
+ // preview button:
+ $form .= form_hidden("pid", $edit[pid]);
+ $form .= form_hidden("id", $edit[id]);
+
+ if (!$edit[comment]) {
+ $form .= form_submit(t("Preview comment"));
+ }
+ else {
+ $form .= form_submit(t("Preview comment"));
+ $form .= form_submit(t("Post comment"));
+ }
+
+ return form($form);
+}
+
+function comment_reply($pid, $id) {
+ global $theme;
+
+ if ($pid) {
+ $item = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'"));
+ comment_view(new Comment($item->uid, $item->name, $item->subject, $item->comment, $item->timestamp, $item->url, $item->cid, $item->lid), t("reply to this comment"));
+ }
+ else {
+ node_view(node_load(array("nid" => $id)));
+ $pid = 0;
+ }
+
+ if (user_access("post comments")) {
+ $theme->box(t("Reply"), comment_form(array(pid=>$pid, id=>$id)));
+ }
+ else {
+ $theme->box(t("Reply"), t("You are not authorized to post comments."));
+ }
+}
+
+function comment_preview($edit) {
+ global $theme, $user;
+
+ // Preview comment:
+ comment_view(new Comment($user->uid, $user->name, check_preview($edit[subject]), check_preview($edit[comment]), time(), check_preview($user->homepage), 0, 0, 0, 0), t("reply to this comment"));
+
+ $theme->box(t("Reply"), comment_form($edit));
+}
+
+function comment_post($edit) {
+ global $theme, $user;
+
+ if (user_access("post comments")) {
+ // check comment submission rate:
+ throttle("post comment", variable_get(max_comment_rate, 60));
+
+ // check for duplicate comments:
+ $duplicate = db_result(db_query("SELECT COUNT(cid) FROM comments WHERE pid = '". check_input($edit[pid]) ."' AND lid = '". check_input($edit[id]) ."' AND subject = '". check_input($edit[subject]) ."' AND comment = '". check_input($edit[comment]) ."'"), 0);
+
+ if ($duplicate != 0) {
+ watchdog("warning", "comment: duplicate '$edit[subject]'");
+ }
+ else {
+ // validate subject:
+ $edit[subject] = $edit[subject] ? $edit[subject] : substr($edit[comment], 0, 29);
+
+ // add watchdog entry:
+ watchdog("special", "comment: added '$edit[subject]'");
+
+ // add comment to database:
+ db_query("INSERT INTO comments (lid, pid, uid, subject, comment, hostname, timestamp) VALUES ('". check_input($edit[id]) ."', '". check_input($edit[pid]) ."', '$user->uid', '". check_input($edit[subject]) ."', '". check_input($edit[comment]) ."', '". getenv("REMOTE_ADDR") ."', '". time() ."')");
+
+ // clear cache:
+ cache_clear();
+ }
+ }
+}
+
+function comment_num_replies($id, $count = 0) {
+
+ $result = db_query("SELECT COUNT(cid) FROM comments WHERE pid = '$id'");
+ return ($result) ? db_result($result, 0) : 0;
+
+}
+
+function comment_moderation($comment) {
+ global $user;
+
+ $values = array("--", 1, 2, 3, 4, 5);
+
+ $moderate = db_fetch_object(db_query("SELECT * FROM moderate WHERE cid = '$comment->cid' AND uid = '$user->uid'"));
+
+ foreach ($values as $key => $value) {
+ $options .= " <option value=\"$key\"". ($moderate->score == $key ? " selected=\"selected\"" : "") .">$value</option>\n";
+ }
+
+ $output .= "<select name=\"moderate[comment][$comment->cid]\">$options</select><br />". ($comment->score ? $comment->score : "--") ." / $comment->votes";
+
+ return $output;
+}
+
+function comment_threshold($threshold) {
+ for ($i = 0; $i < 6; $i++) $options .= " <option value=\"$i\"". ($threshold == $i ? " SELECTED" : "") .">". t("Visibility") ." - $i</option>";
+ return "<select name=\"threshold\">$options</select>\n";
+}
+
+function comment_mode($mode) {
+ global $cmodes;
+
+ foreach ($cmodes as $key=>$value) $options .= " <option value=\"$key\"". ($mode == $key ? " SELECTED" : "") .">$value</option>\n";
+ return "<select name=\"mode\">$options</select>\n";
+}
+
+function comment_order($order) {
+ global $corder;
+
+ foreach ($corder as $key=>$value) $options .= " <option value=\"$key\"". ($order == $key ? " SELECTED" : "") .">$value</option>\n";
+ return "<select name=\"order\">$options</select>\n";
+}
+
+function comment_query($lid, $order, $pid = -1) {
+
+ $query .= "SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.lid = '$lid'";
+
+ if ($pid >= 0) {
+ $query .= " AND pid = '$pid'";
+ }
+
+ $query .= " GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name";
+
+ if ($order == 1) {
+ $query .= " ORDER BY c.timestamp DESC";
+ }
+ else if ($order == 2) {
+ $query .= " ORDER BY c.timestamp";
+ }
+ else if ($order == 3) {
+ $query .= " ORDER BY score DESC";
+ }
+ else if ($order == 4) {
+ $query .= " ORDER BY score";
+ }
+
+ return db_query($query);
+
+}
+
+function comment_visible($comment, $threshold = 0) {
+ if ($comment->votes == 0 || $comment->score >= $threshold) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+function comment_links($comment, $return = 1) {
+ global $theme;
+
+ if ($return) {
+ return "<a href=\"node.php?id=$comment->lid#$comment->cid\"><font color=\"$theme->type\">". t("return") ."</font></a> | <a href=\"node.php?op=reply&id=$comment->lid&pid=$comment->cid\"><font color=\"$theme->type\">". t("reply to this comment") ."</font></a>";
+ }
+ else {
+ return "<a href=\"node.php?op=reply&id=$comment->lid&pid=$comment->cid\"><font color=\"$theme->type\">". t("reply to this comment") ."</font></a>";
+ }
+}
+
+function comment_view($comment, $folded = 0) {
+ global $theme;
+
+ if ($folded) {
+ $theme->comment($comment, $folded);
+ }
+ else {
+ print "<a href=\"node.php?id=$comment->lid&cid=$comment->cid#$comment->cid\">". check_output($comment->subject) ."</a> by ". format_name($comment) ." <small>(". ($comment->score ? $comment->score : "--") ." / $comment->votes)</small><p />";
+ }
+}
+
+function comment_thread_min($cid, $threshold) {
+ global $user;
+
+ $result = db_query("SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.pid = '$cid' GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name ORDER BY c.timestamp");
+
+ while ($comment = db_fetch_object($result)) {
+ print "<ul>";
+ print comment_view($comment);
+ comment_thread_min($comment->cid, $threshold);
+ print "</ul>";
+ }
+}
+
+function comment_thread_max($cid, $mode, $threshold, $level = 0) {
+ global $user;
+
+ /*
+ ** We had quite a few browser specific issues: expanded comments below
+ ** the top level got truncated on the right hand side. A range of
+ ** solutions have been proposed and tried but either the right margins of
+ ** the comments didn't line up well, or the heavily nested tables made
+ ** for slow rendering and cluttered HTML. This is the best work-around
+ ** in terms of speed and size.
+ */
+
+ $result = db_query("SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.pid = '$cid' GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name ORDER BY c.timestamp");
+
+ while ($comment = db_fetch_object($result)) {
+ print "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr><td width=\"". ($level * 25) ."\">&nbsp;</td><td>\n";
+ comment_view($comment, (comment_visible($comment, $threshold) ? comment_links($comment, 0) : 0));
+ print "</td></tr></table>\n";
+
+ comment_thread_max($comment->cid, $mode, $threshold, $level + 1);
+ }
+
+}
+
+function comment_render($lid, $cid) {
+ global $user, $theme, $mode, $order, $threshold, $REQUEST_URI;
+
+ if (user_access("access comments")) {
+
+ /*
+ ** Pre-process variables:
+ */
+
+ if (empty($lid)) {
+ $lid = 0;
+ }
+
+ if (empty($cid)) {
+ $cid = 0;
+ }
+
+ if (empty($mode)) {
+ $mode = $user->uid ? $user->mode : variable_get(default_comment_mode, 4);
+ }
+
+ if (empty($order)) {
+ $order = $user->uid ? $user->sort : variable_get(default_comment_order, 1);
+ }
+
+ if (empty($threshold)) {
+ $threshold = $user->uid ? $user->threshold : variable_get(default_comment_threshold, 3);
+ }
+
+ print "<a name=\"comment\"></a>\n";
+ print "<form method=\"post\" action=\"$REQUEST_URI\">\n";
+
+ /*
+ ** Render control panel:
+ */
+
+ $theme->box(t("Control panel"), $theme->comment_controls($threshold, $mode, $order));
+
+ if ($cid > 0) {
+ $result = db_query("SELECT c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name, AVG(m.score) AS score, COUNT(m.cid) AS votes FROM comments c LEFT JOIN users u ON c.uid = u.uid LEFT JOIN moderate m ON c.cid = m.cid WHERE c.cid = '$cid' GROUP BY c.cid, c.pid, c.lid, c.subject, c.comment, c.timestamp, u.uid, u.name");
+ if ($comment = db_fetch_object($result)) {
+ comment_view($comment, comment_links($comment));
+ }
+ }
+ else {
+ if ($mode == 1) {
+ $result = comment_query($lid, $order);
+ print "<table border=\"0\" cellpadding=\"2\" cellspacing=\"2\">\n";
+ print " <tr><th>Subject</th><th>Author</th><th>Date</th><th>Score</th></tr>\n";
+ while ($comment = db_fetch_object($result)) {
+ if (comment_visible($comment, $threshold)) {
+ print " <tr><td><a href=\"node.php?id=$comment->lid&cid=$comment->cid#$comment->cid\">". check_output($comment->subject) ."</a></td><td>". format_name($comment) ."</td><td>". format_date($comment->timestamp, "small") ."</td><td>$comment->score</td></tr>\n";
+ }
+ }
+ print "</table>\n";
+ }
+ else if ($mode == 2) {
+ $result = comment_query($lid, $order);
+ while ($comment = db_fetch_object($result)) {
+ comment_view($comment, (comment_visible($comment, $threshold) ? comment_links($comment, 0) : 0));
+ }
+ }
+ else if ($mode == 3) {
+ $result = comment_query($lid, $order, 0);
+ while ($comment = db_fetch_object($result)) {
+ comment_view($comment);
+ comment_thread_min($comment->cid, $threshold);
+ }
+ }
+ else {
+ $result = comment_query($lid, $order, 0);
+ while ($comment = db_fetch_object($result)) {
+ comment_view($comment, (comment_visible($comment, $threshold) ? comment_links($comment, 0) : 0));
+ comment_thread_max($comment->cid, $mode, $threshold, $level + 1);
+ }
+ }
+ }
+
+ print "</form>";
+
+ }
+}
+
function comment_search($keys) {
global $PHP_SELF;
$result = db_query("SELECT c.*, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.subject LIKE '%$keys%' OR c.comment LIKE '%$keys%' ORDER BY c.timestamp DESC LIMIT 20");
@@ -48,21 +396,26 @@ function comment_link($type, $node = 0, $main = 0) {
function comment_node_link($node) {
- /*
- ** Edit comments:
- */
+ if (node_get_comments($node->nid)) {
- $result = db_query("SELECT c.cid, c.subject, u.uid, u.name FROM comments c LEFT JOIN users u ON u.uid = c.uid WHERE lid = '$node->nid' ORDER BY c.timestamp");
- $output .= "<h3>". t("Edit comments") ."</h3>";
- $output .= "<table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">";
- $output .= " <tr><th>title</th><th>author</th><th colspan=\"3\">operations</th></tr>";
- while ($comment = db_fetch_object($result)) {
- $output .= "<tr><td><a href=\"node.php?id=$node->nid&cid=$comment->cid#$comment->cid\">$comment->subject</a></td><td>". format_name($comment) ."</td><td><a href=\"node.php?id=$node->nid&cid=$comment->cid#$comment->cid\">". t("view comment") ."</a></td><td><a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\">". t("edit comment") ."</a></td><td><a href=\"admin.php?mod=comment&op=delete&id=$comment->cid\">". t("delete comment") ."</a></td></tr>";
- }
+ /*
+ ** Edit comments:
+ */
- $output .= "</table>";
+ $result = db_query("SELECT c.cid, c.subject, u.uid, u.name FROM comments c LEFT JOIN users u ON u.uid = c.uid WHERE lid = '$node->nid' ORDER BY c.timestamp");
- return $output;
+ $output .= "<h3>". t("Edit comments") ."</h3>";
+ $output .= "<table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">";
+ $output .= " <tr><th>title</th><th>author</th><th colspan=\"3\">operations</th></tr>";
+
+ while ($comment = db_fetch_object($result)) {
+ $output .= "<tr><td><a href=\"node.php?id=$node->nid&cid=$comment->cid#$comment->cid\">$comment->subject</a></td><td>". format_name($comment) ."</td><td><a href=\"node.php?id=$node->nid&cid=$comment->cid#$comment->cid\">". t("view comment") ."</a></td><td><a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\">". t("edit comment") ."</a></td><td><a href=\"admin.php?mod=comment&op=delete&id=$comment->cid\">". t("delete comment") ."</a></td></tr>";
+ }
+
+ $output .= "</table>";
+
+ return $output;
+ }
}
function comment_edit($id) {