2000-07-06 09:38:42 +00:00
< ?
function comments_kids ( $cid , $mode , $order = 0 , $thold = 0 , $level = 0 , $dummy = 0 ) {
global $user , $theme ;
$comments = 0 ;
$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 " );
if ( $mode == " nested " ) {
while ( $comment = db_fetch_object ( $result )) {
2000-07-06 14:39:47 +00:00
if ( $comment -> score >= $thold ) {
2000-07-06 09:38:42 +00:00
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 > " ;
2000-09-04 16:14:46 +00:00
$theme -> comment ( $comment -> userid , stripslashes ( $comment -> subject ), stripslashes ( $comment -> comment ), $comment -> timestamp , stripslashes ( $comment -> url ), stripslashes ( $comment -> femail ), $comment -> score , $comment -> cid , $link );
2000-07-06 09:38:42 +00:00
comments_kids ( $comment -> cid , $mode , $order , $thold , $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 , $comment -> subject , $comment -> comment , $comment -> timestamp , $comment -> url , $comment -> femail , $comment -> score , $comment -> cid , $link );
}
comments_kids ( $comment -> cid , $mode , $order , $thold );
}
}
elseif ( $mode == " disabled " ) {
// do nothing
}
else {
print " ERROR: we should not get here! " ;
}
if ( $level && $comments ) {
print " </UL> " ;
}
}
function comments_childs ( $cid , $mode , $order , $thold , $level = 0 , $thread ) {
global $anonymous , $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 " );
if ( $level == 0 ) $thread = " " ;
$comments = 0 ;
while ( $comment = db_fetch_object ( $result )) {
if ( $level && ! $comments ) {
$thread .= " <UL> " ;
}
$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 .= " \" > $comment->subject </A> by " ;
$thread .= ( $comment -> userid ) ? $comment -> userid : $anonymous ;
$thread .= " <SMALL>( " . date ( " D, M d, Y - H:i:s " , $comment -> timestamp ) . " )<SMALL></LI> " ;
### Recursive:
comments_childs ( $comment -> cid , $mode , $order , $thold , $level + 1 , & $thread );
}
if ( $level && $comments ) {
$thread .= " </UL> " ;
}
return $thread ;
}
function comments_display ( $sid , $pid , $cid , $mode , $order , $thold , $level = 0 ) {
global $user , $theme ;
### Pre-process variables:
$pid = ( empty ( $pid )) ? 0 : $pid ;
$cid = ( empty ( $pid )) ? 0 : $cid ;
### 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 " );
$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 > ] " );
### Display `comment control'-box:
$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 " ;
if ( $mode == 'threaded' || mode == 'nested' ) {
if ( $thold != " " ) $query .= " AND c.score >= $thold " ;
else $query .= " AND c.score >= 0 " ;
}
if ( $order == 1 ) $query .= " ORDER BY c.timestamp DESC " ;
if ( $order == 2 ) $query .= " ORDER BY c.score DESC " ;
$result = db_query ( " $query " );
### Display the comments:
while ( $comment = db_fetch_object ( $result )) {
### 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 > " ;
}
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 > " ;
}
### Display the comments:
if ( empty ( $mode ) || $mode == " threaded " ) {
$thread = comments_childs ( $comment -> cid , $mode , $order , $thold );
$theme -> comment ( $comment -> userid , $comment -> subject , $comment -> comment , $comment -> timestamp , $comment -> url , $comment -> femail , $comment -> score , $comment -> cid , $link , $thread );
}
else {
$theme -> comment ( $comment -> userid , $comment -> subject , $comment -> comment , $comment -> timestamp , $comment -> url , $comment -> femail , $comment -> score , $comment -> cid , $link );
comments_kids ( $comment -> cid , $mode , $order , $thold , $level );
}
}
}
function comments_reply ( $pid , $sid , $mode , $order , $thold ) {
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 " ));
2000-09-04 16:14:46 +00:00
$theme -> comment ( $item -> userid , stripslashes ( $item -> subject ), stripslashes ( $item -> comment ), $item -> timestamp , stripslashes ( $item -> url ), stripslashes ( $item -> femail ), $item -> score , $item -> cid , " reply to this comment " );
2000-07-06 09:38:42 +00:00
}
else {
2000-07-12 07:15:09 +00:00
$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 " ));
2000-07-06 09:38:42 +00:00
$theme -> article ( $item , " " );
}
### Build reply form:
$output .= " <FORM ACTION= \" discussion.php \" METHOD= \" post \" > \n " ;
### Name field:
if ( $user ) {
$output .= " <P> \n " ;
$output .= " <B>Your name:</B><BR> \n " ;
$output .= " <A HREF= \" account.php \" > $user->userid </A> <FONT SIZE= \" 2 \" >[ <A HREF= \" account.php?op=logout \" >logout</A> ]</FONT> \n " ;
$output .= " </P> \n " ;
}
else {
$output .= " <P> \n " ;
$output .= " <B>Your name:</B><BR> \n " ;
$output .= " $anonymous\n " ;
$output .= " </P> \n " ;
}
### 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. ;)
2000-09-04 16:14:46 +00:00
$output .= " <INPUT TYPE= \" text \" NAME= \" subject \" SIZE= \" 50 \" MAXLENGTH= \" 60 \" VALUE= \" " . stripslashes ( $item -> subject ) . " \" > \n " ;
2000-07-06 09:38:42 +00:00
$output .= " </P> \n " ;
### Comment field:
$output .= " <P> \n " ;
$output .= " <B>Comment:</B><BR> \n " ;
2000-09-04 16:14:46 +00:00
$output .= " <TEXTAREA WRAP= \" virtual \" COLS= \" 50 \" ROWS= \" 10 \" NAME= \" comment \" > " . stripslashes ( $user -> signature ) . " </TEXTAREA><BR> \n " ;
2000-07-06 09:38:42 +00:00
$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 " ;
$output .= " </FORM> \n " ;
$theme -> box ( " Reply " , $output );
}
function comment_preview ( $pid , $sid , $subject , $comment , $mode , $order , $thold ) {
global $anonymous , $user , $theme ;
### Preview comment:
2000-09-04 16:14:46 +00:00
if ( $user ) $theme -> comment ( " " , stripslashes ( $subject ), stripslashes ( $comment ), time (), " " , " " , " na " , " " , " reply to this comment " );
else $theme -> comment ( $user -> userid , stripslashes ( $subject ), stripslashes ( $comment ), time (), stripslashes ( $user -> url ), stripslashes ( $user -> femail ), " na " , " " , " reply to this comment " );
2000-07-06 09:38:42 +00:00
### Build reply form:
$output .= " <FORM ACTION= \" discussion.php \" METHOD= \" post \" > \n " ;
### Name field:
if ( $user ) {
$output .= " <P> \n " ;
$output .= " <B>Your name:</B><BR> \n " ;
$output .= " <A HREF= \" account.php \" > $user->userid </A> <FONT SIZE= \" 2 \" >[ <A HREF= \" account.php?op=logout \" >logout</A> ]</FONT> \n " ;
$output .= " </P> \n " ;
}
else {
$output .= " <P> \n " ;
$output .= " <B>Your name:</B><BR> \n " ;
$output .= " $anonymous\n " ;
$output .= " </P> \n " ;
}
### Subject field:
$output .= " <P> \n " ;
$output .= " <B>Subject:</B><BR> \n " ;
2000-09-04 16:14:46 +00:00
$output .= " <INPUT TYPE= \" text \" NAME= \" subject \" SIZE= \" 50 \" MAXLENGTH= \" 60 \" VALUE= \" " . stripslashes ( $subject ) . " \" > \n " ;
2000-07-06 09:38:42 +00:00
$output .= " </P> \n " ;
### Comment field:
$output .= " <P> \n " ;
$output .= " <B>Comment:</B><BR> \n " ;
2000-09-04 16:14:46 +00:00
$output .= " <TEXTAREA WRAP= \" virtual \" COLS= \" 50 \" ROWS= \" 10 \" NAME= \" comment \" > " . stripslashes ( $comment ) . " </TEXTAREA><BR> \n " ;
2000-07-06 09:38:42 +00:00
$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 " ;
}
$theme -> box ( " Reply " , $output );
}
function comment_post ( $pid , $sid , $subject , $comment , $mode , $order , $thold ) {
global $user , $theme ;
### Check for fake threads:
$fake = db_result ( db_query ( " SELECT COUNT(*) FROM stories WHERE id = $sid " ), 0 );
### Check for duplicate comments:
$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 ) {
$theme -> box ( " fake comment " , " fake comment: $fake " );
}
elseif ( $duplicate != 0 ) {
$theme -> box ( " duplicate comment " , " duplicate comment: $duplicate " );
}
else {
if ( $user ) {
### Add comment to database:
db_query ( " 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_query ( " INSERT INTO comments (pid, sid, subject, comment, hostname, timestamp) VALUES ( $pid , $sid , ' " . addslashes ( $subject ) . " ', ' " . addslashes ( $comment ) . " ', ' " . getenv ( " REMOTE_ADDR " ) . " ', ' " . time () . " ') " );
### Compose header:
$header .= " discussion.php?id= $sid &mode=threaded&order=1&thold=0 " ;
}
header ( " Location: $header " );
}
}
2000-07-12 07:15:09 +00:00
include " functions.inc " ;
2000-07-06 09:38:42 +00:00
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 );
$theme -> footer ();
break ;
case " Post comment " :
comment_post ( $pid , $sid , $subject , $comment , $mode , $order , $thold );
break ;
case " reply " :
$theme -> header ();
comments_reply ( $pid , $sid , $mode , $order , $thold );
$theme -> footer ();
break ;
default :
$theme -> header ();
comments_display ( $id , $pid , $sid , $mode , $order , $thold );
$theme -> footer ();
}
?>