package WebGUI::Discussion;
#-------------------------------------------------------------------
# WebGUI is Copyright 2001 Plain Black Software.
#-------------------------------------------------------------------
# Please read the legal notices (docs/legal.txt) and the license
# (docs/license.txt) that came with this distribution before using
# this software.
#-------------------------------------------------------------------
# http://www.plainblack.com info@plainblack.com
#-------------------------------------------------------------------
use strict;
use Tie::CPHash;
use WebGUI::DateTime;
use WebGUI::International;
use WebGUI::Session;
use WebGUI::SQL;
use WebGUI::Utility;
#-------------------------------------------------------------------
sub traverseReplyTree {
my ($sth, @data, $html, $depth, $i);
for ($i=0;$i<=$_[1];$i++) {
$depth .= " ";
}
$sth = WebGUI::SQL->read("select messageId,subject,username,dateOfPost,userId from discussion where pid=$_[0] order by messageId", $session{dbh});
while (@data = $sth->array) {
$html .= '
'.substr($data[1],0,30).'| '.$data[2].' | '.epochToHuman($data[3],"%M/%D %H:%n%p").' |
';
$html .= traverseReplyTree($data[0],$_[1]+1);
}
$sth->finish;
return $html;
}
#-------------------------------------------------------------------
sub editMessage {
my ($html, %message);
tie %message, 'Tie::CPHash';
%message = getMessage($session{form}{mid});
$html = ''.WebGUI::International::get(228).'
';
$html .= '';
$html .= showMessage();
return $html;
}
#-------------------------------------------------------------------
sub editMessageSave {
if ($session{form}{subject} eq "") {
$session{form}{subject} = WebGUI::International::get(232);
}
if ($session{form}{message} eq "") {
$session{form}{subject} .= ' '.WebGUI::International::get(233);
}
WebGUI::SQL->write("update discussion set subject=".quote($session{form}{subject}).", message=".quote("\n --- (Edited at ".localtime(time)." by $session{user}{username}) --- \n\n".$session{form}{message}).", subId='$session{form}{sid}' where messageId=$session{form}{mid}",$session{dbh});
return showMessage();
}
#-------------------------------------------------------------------
sub getMessage {
my (%message);
tie %message, 'Tie::CPHash';
%message = WebGUI::SQL->quickHash("select * from discussion where messageId=$_[0]",$session{dbh});
$message{message} =~ s/\n/\
/g;
return %message;
}
#-------------------------------------------------------------------
sub postNewMessage {
my ($html);
$html = ''.WebGUI::International::get(231).'
';
$html .= '';
return $html;
}
#-------------------------------------------------------------------
sub postNewMessageSave {
my ($mid);
if ($session{form}{subject} eq "") {
$session{form}{subject} = WebGUI::International::get(232);
}
if ($session{form}{message} eq "") {
$session{form}{subject} .= ' '.WebGUI::International::get(233);
}
$mid = getNextId("messageId");
WebGUI::SQL->write("insert into discussion values ($mid, $mid, $session{form}{wid}, 0, $session{user}{userId}, ".quote($session{user}{username}).", ".quote($session{form}{subject}).", ".quote($session{form}{message}).", ".time().", '$session{form}{sid}')",$session{dbh});
return "";
}
#-------------------------------------------------------------------
sub postReply {
my ($html, $subject);
($subject) = WebGUI::SQL->quickArray("select subject from discussion where messageId=$session{form}{mid}", $session{dbh});
$subject = "Re: ".$subject;
$html = ''.WebGUI::International::get(234).'
';
$html .= '';
$html .= showMessage();
return $html;
}
#-------------------------------------------------------------------
sub postReplySave {
my ($rid, $mid);
if ($session{form}{subject} eq "") {
$session{form}{subject} = WebGUI::International::get(232);
}
if ($session{form}{message} eq "") {
$session{form}{subject} .= ' '.WebGUI::International::get(233);
}
$mid = getNextId("messageId");
($rid) = WebGUI::SQL->quickArray("select rid from discussion where messageId=$session{form}{mid}",$session{dbh});
WebGUI::SQL->write("insert into discussion values ($mid, $rid, $session{form}{wid}, $session{form}{mid}, $session{user}{userId}, ".quote($session{user}{username}).", ".quote($session{form}{subject}).", ".quote($session{form}{message}).", ".time().", '$session{form}{sid}')", $session{dbh});
return "";
}
#-------------------------------------------------------------------
sub showMessage {
my ($html, %message);
tie %message, 'Tie::CPHash';
%message = getMessage($session{form}{mid});
$html = '|
| ';
$html .= $message{message};
$html .= ' |
';
return $html;
}
#-------------------------------------------------------------------
sub showReplyTree {
my (@data, $html, %message);
tie %message, 'Tie::CPHash';
%message = getMessage($session{form}{mid});
$html .= '';
$html .= '
';
$html .= traverseReplyTree($message{rid},0);
$html .= "
";
return $html;
}
1;