summaryrefslogtreecommitdiff
path: root/discussion.php
diff options
context:
space:
mode:
Diffstat (limited to 'discussion.php')
-rw-r--r--discussion.php167
1 files changed, 82 insertions, 85 deletions
diff --git a/discussion.php b/discussion.php
index c9b31e049..8a2cbd5ce 100644
--- a/discussion.php
+++ b/discussion.php
@@ -1,7 +1,7 @@
<?
function discussion_score($comment) {
- $value = ($comments->votes) ? $comment->score / $comment->votes : $comments->score;
+ $value = ($comments->votes) ? $comment->score / $comment->votes : ($comments->score) ? $comments->score : 0;
return (strpos($value, ".")) ? substr($value ."00", 0, 4) : $value .".00";
}
@@ -21,7 +21,7 @@ function discussion_moderate($moderate) {
}
}
-function discussion_kids($cid, $mode, $order = 0, $thold = 0, $level = 0, $dummy = 0) {
+function discussion_kids($cid, $mode, $level = 0, $dummy = 0) {
global $user, $theme;
$comments = 0;
@@ -34,25 +34,22 @@ function discussion_kids($cid, $mode, $order = 0, $thold = 0, $level = 0, $dummy
if ($level && !$comments) print "<UL>";
$comments++;
- $link = "<A HREF=\"discussion.php?op=reply&sid=$comment->sid&pid=$comment->cid&mode=$mode&order=$order&thold=$thold\"><FONT COLOR=\"$theme->hlcolor2\">reply to this comment</FONT></A>";
- $theme->comment($comment->userid, stripslashes($comment->subject), stripslashes($comment->comment), $comment->timestamp, stripslashes($comment->url), stripslashes($comment->femail), $comment->score, $comment->cid, $link);
+ $link = "<A HREF=\"discussion.php?op=reply&sid=$comment->sid&pid=$comment->cid\"><FONT COLOR=\"$theme->hlcolor2\">reply to this comment</FONT></A>";
+ $theme->comment($comment->userid, stripslashes($comment->subject), stripslashes($comment->comment), $comment->timestamp, stripslashes($comment->url), stripslashes($comment->femail), discussion_score($comment), $comment->cid, $link);
- discussion_kids($comment->cid, $mode, $order, $thold, $level + 1, $dummy + 1);
+ discussion_kids($comment->cid, $mode, $level + 1, $dummy + 1);
}
}
}
elseif ($mode == "flat") {
while ($comment = db_fetch_object($result)) {
if ($comment->score >= $thold) {
- $link = "<A HREF=\"discussion.php?op=reply&sid=$comment->sid&pid=$comment->cid&mode=$mode&order=$order&thold=$thold\"><FONT COLOR=\"$theme->hlcolor2\">reply to this comment</FONT></A>";
- $theme->comment($comment->userid, check($comment->subject), check($comment->comment), $comment->timestamp, $comment->url, $comment->femail, $comment->score, $comment->cid, $link);
+ $link = "<A HREF=\"discussion.php?op=reply&sid=$comment->sid&pid=$comment->cid\"><FONT COLOR=\"$theme->hlcolor2\">reply to this comment</FONT></A>";
+ $theme->comment($comment->userid, check_output($comment->subject), check_output($comment->comment), $comment->timestamp, $comment->url, $comment->femail, discussion_score($comment), $comment->cid, $link);
}
- discussion_kids($comment->cid, $mode, $order, $thold);
+ discussion_kids($comment->cid, $mode);
}
}
- elseif ($mode == "disabled") {
- // do nothing
- }
else {
print "ERROR: we should not get here!";
}
@@ -62,8 +59,8 @@ function discussion_kids($cid, $mode, $order = 0, $thold = 0, $level = 0, $dummy
}
}
-function discussion_childs($cid, $mode, $order, $thold, $level = 0, $thread) {
- global $anonymous, $theme, $user;
+function discussion_childs($cid, $level = 0, $thread) {
+ global $theme, $user;
### Perform SQL query:
$result = db_query("SELECT c.*, u.* FROM comments c LEFT JOIN users u ON c.author = u.id WHERE c.pid = $cid ORDER BY c.timestamp, c.cid");
@@ -79,16 +76,10 @@ function discussion_childs($cid, $mode, $order, $thold, $level = 0, $thread) {
$comments++;
### Compose link:
- $thread .= "<LI><A HREF=\"discussion.php?id=$comment->sid&cid=$comment->cid&pid=$comment->pid";
- $thread .= ($mode) ? "&mode=$mode" : "&mode=threaded";
- $thread .= ($order) ? "&order=$order" : "&order=0";
- $thread .= ($thold) ? "&thold=$thold" : "&thold=0";
- $thread .= "\">". check($comment->subject) ."</A> by ";
- $thread .= ($comment->userid) ? $comment->userid : $anonymous;
- $thread .= " <SMALL>(". discussion_score($comment) .")<SMALL></LI>";
+ $thread .= "<LI><A HREF=\"discussion.php?id=$comment->sid&cid=$comment->cid&pid=$comment->pid\">". check_output($comment->subject) ."</A> by ". format_username($comment->userid) ." <SMALL>(". discussion_score($comment) .")<SMALL></LI>";
### Recursive:
- discussion_childs($comment->cid, $mode, $order, $thold, $level + 1, &$thread);
+ discussion_childs($comment->cid, $level + 1, &$thread);
}
if ($level && $comments) {
@@ -98,22 +89,41 @@ function discussion_childs($cid, $mode, $order, $thold, $level = 0, $thread) {
return $thread;
}
-function discussion_display($sid, $pid, $cid, $mode, $order, $thold, $level = 0) {
+function discussion_settings($mode, $order, $thold) {
+ global $user;
+
+ if ($user) {
+ db_query("UPDATE users SET umode = '$mode', uorder = '$order', thold = '$thold' WHERE id = '$user->id'");
+ user_rehash();
+ }
+}
+
+function discussion_display($sid, $pid, $cid, $level = 0) {
global $user, $theme;
### Pre-process variables:
$pid = (empty($pid)) ? 0 : $pid;
- $cid = (empty($pid)) ? 0 : $cid;
+ $cid = (empty($cid)) ? 0 : $cid;
+ $mode = ($user) ? $user->umode : "threaded";
+ $order = ($user) ? $user->uorder : "1";
+ $thold = ($user) ? $user->thold : "0";
### Compose story-query:
- $result = db_query("SELECT stories.*, users.userid FROM stories LEFT JOIN users ON stories.author = users.id WHERE stories.status != 0 AND stories.id = $sid");
+ $result = db_query("SELECT s.*, u.userid FROM stories s LEFT JOIN users u ON s.author = u.id WHERE s.status != 0 AND s.id = $sid");
$story = db_fetch_object($result);
### Display story:
- $theme->article($story, "[ <A HREF=\"\"><FONT COLOR=\"$theme->hlcolor2\">home</FONT></A> | <A HREF=\"discussion.php?op=reply&sid=$story->id&pid=0\"><FONT COLOR=\"$theme->hlcolor2\">add a comment</FONT></A> ]");
+ if ($story->status == 1) {
+ $theme->article($story, "[ <A HREF=\"submission.php\"><FONT COLOR=\"$theme->hlcolor2\">submission queue</FONT></A> | <A HREF=\"discussion.php?op=reply&sid=$story->id&pid=0\"><FONT COLOR=\"$theme->hlcolor2\">add a comment</FONT></A> ]");
+ }
+ else {
+ $theme->article($story, "[ <A HREF=\"\"><FONT COLOR=\"$theme->hlcolor2\">home</FONT></A> | <A HREF=\"discussion.php?op=reply&sid=$story->id&pid=0\"><FONT COLOR=\"$theme->hlcolor2\">add a comment</FONT></A> ]");
+ }
### Display `comment control'-box:
- $theme->commentControl($sid, $title, $thold, $mode, $order);
+ if ($user) {
+ $theme->commentControl($sid, $title, $thold, $mode, $order);
+ }
### Compose query:
$query = "SELECT c.*, u.* FROM comments c LEFT JOIN users u ON c.author = u.id WHERE c.sid = $sid AND c.pid = $pid";
@@ -132,20 +142,20 @@ function discussion_display($sid, $pid, $cid, $mode, $order, $thold, $level = 0)
### Dynamically compose the `reply'-link:
if ($pid != 0) {
list($pid) = mysql_fetch_row(mysql_query("SELECT pid FROM comments WHERE cid = $comment->pid"));
- $link = "<A HREF=\"discussion.php?id=$comment->sid&pid=$pid&mode=$mode&order=$order&thold=$thold\"><FONT COLOR=\"$theme->hlcolor2\">return to parent</FONT></A> | <A HREF=\"discussion.php?op=reply&sid=$comment->sid&pid=$comment->cid&mode=$mode&order=$order&thold=$thold\"><FONT COLOR=\"$theme->hlcolor2\">reply to this comment</FONT></A>";
+ $link = "<A HREF=\"discussion.php?id=$comment->sid&pid=$pid\"><FONT COLOR=\"$theme->hlcolor2\">return to parent</FONT></A> | <A HREF=\"discussion.php?op=reply&sid=$comment->sid&pid=$comment->cid\"><FONT COLOR=\"$theme->hlcolor2\">reply to this comment</FONT></A>";
}
else {
- $link = "<A HREF=\"discussion.php?op=reply&sid=$comment->sid&pid=$comment->cid&mode=$mode&order=$order&thold=$thold\"><FONT COLOR=\"$theme->hlcolor2\">reply to this comment</FONT></A> ";
+ $link = "<A HREF=\"discussion.php?op=reply&sid=$comment->sid&pid=$comment->cid\"><FONT COLOR=\"$theme->hlcolor2\">reply to this comment</FONT></A> ";
}
### Display the comments:
if (empty($mode) || $mode == "threaded") {
- $thread = discussion_childs($comment->cid, $mode, $order, $thold);
- $theme->comment($comment->userid, check($comment->subject), check($comment->comment), $comment->timestamp, $comment->url, $comment->femail, $comment->score, $comment->cid, $link, $thread);
+ $thread = discussion_childs($comment->cid);
+ $theme->comment($comment->userid, check_output($comment->subject), check_output($comment->comment), $comment->timestamp, $comment->url, $comment->femail, $comment->score, $comment->cid, $link, $thread);
}
else {
- $theme->comment($comment->userid, check($comment->subject), check($comment->comment), $comment->timestamp, $comment->url, $comment->femail, $comment->score, $comment->cid, $link);
- discussion_kids($comment->cid, $mode, $order, $thold, $level);
+ $theme->comment($comment->userid, check_output($comment->subject), check_output($comment->comment), $comment->timestamp, $comment->url, $comment->femail, $comment->score, $comment->cid, $link);
+ discussion_kids($comment->cid, $mode, $level);
}
}
@@ -154,13 +164,13 @@ function discussion_display($sid, $pid, $cid, $mode, $order, $thold, $level = 0)
print "</FORM>\n";
}
-function discussion_reply($pid, $sid, $mode, $order, $thold) {
+function discussion_reply($pid, $sid) {
global $anonymous, $user, $theme;
### Extract parent-information/data:
if ($pid) {
$item = db_fetch_object(db_query("SELECT comments.*, users.userid FROM comments LEFT JOIN users ON comments.author = users.id WHERE comments.cid = $pid"));
- $theme->comment($item->userid, check(stripslashes($item->subject)), check(stripslashes($item->comment)), $item->timestamp, stripslashes($item->url), stripslashes($item->femail), $item->score, $item->cid, "reply to this comment");
+ $theme->comment($item->userid, check_output(stripslashes($item->subject)), check_output(stripslashes($item->comment)), $item->timestamp, stripslashes($item->url), stripslashes($item->femail), $item->score, $item->cid, "reply to this comment");
}
else {
$item = db_fetch_object(db_query("SELECT stories.*, users.userid FROM stories LEFT JOIN users ON stories.author = users.id WHERE stories.status != 0 AND stories.id = $sid"));
@@ -187,23 +197,18 @@ function discussion_reply($pid, $sid, $mode, $order, $thold) {
### Subject field:
$output .= "<P>\n";
$output .= " <B>Subject:</B><BR>\n";
- if (!eregi("Re:",$item->subject)) $item->subject = "Re: $item->subject";
- // Only one 'Re:' will just do fine. ;)
- $output .= " <INPUT TYPE=\"text\" NAME=\"subject\" SIZE=\"50\" MAXLENGTH=\"60\" VALUE=\"". stripslashes($item->subject) ."\">\n";
+ $output .= " <INPUT TYPE=\"text\" NAME=\"subject\" SIZE=\"50\" MAXLENGTH=\"60\">\n";
$output .= "</P>\n";
### Comment field:
$output .= "<P>\n";
$output .= " <B>Comment:</B><BR>\n";
- $output .= " <TEXTAREA WRAP=\"virtual\" COLS=\"50\" ROWS=\"10\" NAME=\"comment\">". stripslashes($user->signature) ."</TEXTAREA><BR>\n";
+ $output .= " <TEXTAREA WRAP=\"virtual\" COLS=\"50\" ROWS=\"10\" NAME=\"comment\">". check_input($user->signature) ."</TEXTAREA><BR>\n";
$output .= "</P>\n";
### Hidden fields:
$output .= "<INPUT TYPE=\"hidden\" NAME=\"pid\" VALUE=\"$pid\">\n";
$output .= "<INPUT TYPE=\"hidden\" NAME=\"sid\" VALUE=\"$sid\">\n";
- $output .= "<INPUT TYPE=\"hidden\" NAME=\"mode\" VALUE=\"$mode\">\n";
- $output .= "<INPUT TYPE=\"hidden\" NAME=\"order\" VALUE=\"$order\">\n";
- $output .= "<INPUT TYPE=\"hidden\" NAME=\"thold\" VALUE=\"$thold\">\n";
### Preview button:
$output .= "<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Preview comment\"> (You must preview at least once before you can submit.)\n";
@@ -212,12 +217,12 @@ function discussion_reply($pid, $sid, $mode, $order, $thold) {
$theme->box("Reply", $output);
}
-function comment_preview($pid, $sid, $subject, $comment, $mode, $order, $thold) {
+function comment_preview($pid, $sid, $subject, $comment) {
global $anonymous, $user, $theme;
### Preview comment:
- if ($user) $theme->comment("", check(stripslashes($subject)), check(stripslashes($comment)), time(), "", "", "na", "", "reply to this comment");
- else $theme->comment($user->userid, check(stripslashes($subject)), check(stripslashes($comment)), time(), stripslashes($user->url), stripslashes($user->femail), "na", "", "reply to this comment");
+ if ($user) $theme->comment("", check_output(stripslashes($subject)), check_output(stripslashes($comment)), time(), "", "", "na", "", "reply to this comment");
+ else $theme->comment($user->userid, check_output(stripslashes($subject)), check_output(stripslashes($comment)), time(), stripslashes($user->url), stripslashes($user->femail), "na", "", "reply to this comment");
### Build reply form:
$output .= "<FORM ACTION=\"discussion.php\" METHOD=\"post\">\n";
@@ -239,41 +244,36 @@ function comment_preview($pid, $sid, $subject, $comment, $mode, $order, $thold)
### Subject field:
$output .= "<P>\n";
$output .= " <B>Subject:</B><BR>\n";
- $output .= " <INPUT TYPE=\"text\" NAME=\"subject\" SIZE=\"50\" MAXLENGTH=\"60\" VALUE=\"". stripslashes($subject) ."\">\n";
+ $output .= " <INPUT TYPE=\"text\" NAME=\"subject\" SIZE=\"50\" MAXLENGTH=\"60\" VALUE=\"". check_input($subject) ."\">\n";
$output .= "</P>\n";
### Comment field:
$output .= "<P>\n";
$output .= " <B>Comment:</B><BR>\n";
- $output .= " <TEXTAREA WRAP=\"virtual\" COLS=\"50\" ROWS=\"10\" NAME=\"comment\">". stripslashes($comment) ."</TEXTAREA><BR>\n";
+ $output .= " <TEXTAREA WRAP=\"virtual\" COLS=\"50\" ROWS=\"10\" NAME=\"comment\">". check_input($comment) ."</TEXTAREA><BR>\n";
$output .= "</P>\n";
### Hidden fields:
$output .= "<INPUT TYPE=\"hidden\" NAME=\"pid\" VALUE=\"$pid\">\n";
$output .= "<INPUT TYPE=\"hidden\" NAME=\"sid\" VALUE=\"$sid\">\n";
- $output .= "<INPUT TYPE=\"hidden\" NAME=\"mode\" VALUE=\"$mode\">\n";
- $output .= "<INPUT TYPE=\"hidden\" NAME=\"order\" VALUE=\"$order\">\n";
- $output .= "<INPUT TYPE=\"hidden\" NAME=\"thold\" VALUE=\"$thold\">\n";
- ### Preview and submit buttons:
if (empty($subject)) {
$output .= "<P>\n";
$output .= " <FONT COLOR=\"red\"><B>Warning:</B></FONT> you did not supply a <U>subject</U>.\n";
$outout .= "</P>\n";
- $output .= "<P>\n";
- $output .= " <INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Preview comment\">\n";
- $output .= "</P>\n";
- }
- else {
- $output .= "<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Preview comment\">\n";
- $output .= "<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Post comment\">\n";
- $output .= "</FORM>\n";
}
+ ### Preview and submit button:
+ $output .= "<P>\n";
+ $output .= " <INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Preview comment\">\n";
+ $output .= " <INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Post comment\">\n";
+ $output .= " </FORM>\n";
+ $output .= "</P>\n";
+
$theme->box("Reply", $output);
}
-function comment_post($pid, $sid, $subject, $comment, $mode, $order, $thold) {
+function comment_post($pid, $sid, $subject, $comment) {
global $user, $theme;
### Check for fake threads:
@@ -283,30 +283,22 @@ function comment_post($pid, $sid, $subject, $comment, $mode, $order, $thold) {
$duplicate = db_result(db_query("SELECT COUNT(*) FROM comments WHERE pid = '$pid' AND sid = '$sid' AND subject = '". addslashes($subject) ."' AND comment = '". addslashes($comment) ."'"), 0);
if ($fake != 1) {
+ watchdog(3, "attemp to insert fake comment");
$theme->box("fake comment", "fake comment: $fake");
}
elseif ($duplicate != 0) {
+ watchdog(3, "attemp to insert duplicate comment");
$theme->box("duplicate comment", "duplicate comment: $duplicate");
}
else {
- if ($user) {
- ### Add comment to database:
- db_insert("INSERT INTO comments (pid, sid, author, subject, comment, hostname, timestamp) VALUES ($pid, $sid, $user->id, '". addslashes($subject) ."', '". addslashes($comment) ."', '". getenv("REMOTE_ADDR") ."', '". time() ."')");
-
- ### Compose header:
- $header = "discussion.php?id=$sid";
- $header .= ($mode) ? "&mode=$mode" : "&mode=threaded";
- $header .= ($order) ? "&order=$order" : "&order=0";
- $header .= ($thold) ? "&thold=$thold" : "&thold=0";
- }
- else {
- ### Add comment to database:
- db_insert("INSERT INTO comments (pid, sid, subject, comment, hostname, timestamp) VALUES ($pid, $sid, '". addslashes($subject) ."', '". addslashes($comment) ."', '". getenv("REMOTE_ADDR") ."', '". time() ."')");
+ ### Validate subject:
+ $subject = ($subject) ? $subject : substr($comment, 0, 29);
- ### Compose header:
- $header .= "discussion.php?id=$sid&mode=threaded&order=1&thold=0";
- }
- header("Location: $header");
+ ### Add comment to database:
+ db_insert("INSERT INTO comments (pid, sid, author, subject, comment, hostname, timestamp) VALUES ($pid, $sid, $user->id, '". addslashes($subject) ."', '". addslashes($comment) ."', '". getenv("REMOTE_ADDR") ."', '". time() ."')");
+
+ ### Compose header:
+ header("Location: discussion.php?id=$sid");
}
}
@@ -314,30 +306,35 @@ include "function.inc";
include "config.inc";
include "theme.inc";
-if ($save) {
- db_query("UPDATE users SET umode = '$mode', uorder = '$order', thold = '$thold' where id = '$user->id'");
- $user->rehash();
-}
-
switch($op) {
case "Preview comment":
$theme->header();
- comment_preview($pid, $sid, $subject, $comment, $mode, $order, $thold);
+ comment_preview($pid, $sid, $subject, $comment);
$theme->footer();
break;
case "Post comment":
- comment_post($pid, $sid, $subject, $comment, $mode, $order, $thold);
+ comment_post($pid, $sid, $subject, $comment);
break;
case "reply":
$theme->header();
- discussion_reply($pid, $sid, $mode, $order, $thold);
+ discussion_reply($pid, $sid);
+ $theme->footer();
+ break;
+ case "Save":
+ discussion_settings($mode, $order, $thold);
+ $theme->header();
+ discussion_display($id, $pid, $sid);
$theme->footer();
break;
case "Moderate comments":
discussion_moderate($moderate);
+ $theme->header();
+ discussion_display($id, $pid, $sid);
+ $theme->footer();
+ break;
default:
$theme->header();
- discussion_display($id, $pid, $sid, $mode, $order, $thold);
+ discussion_display($id, $pid, $sid);
$theme->footer();
}