diff options
Diffstat (limited to 'cgi-bin/message')
| -rwxr-xr-x | cgi-bin/message | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/cgi-bin/message b/cgi-bin/message new file mode 100755 index 0000000..08c0968 --- /dev/null +++ b/cgi-bin/message @@ -0,0 +1,149 @@ +#!/usr/bin/perl +######################################### +# message +# - deal with message reading/sending +######################################### + +use localbucky; + +$dbh = DBI->connect ($dsn); + +our ($USER, $lastlog) = checkin(); +logout() unless ($USER != -1); + +$input->{username} ||= $input->{object_from_uri} if defined($input->{object_from_uri}); +if ($$input{c} eq "s") + { + my $subject; + my $recip = lc($$input{recipient}); + my $box; + my $out; + + # send message: take input, check on it, add to db + if (!exists($$input{recipient}) || !exists($$input{body})) + { error("Missing one or more fields!"); } + if ($recip eq "system") + { $recip = "marc"; } + if (get_uid($recip) == -1) + { error("No such user $recip!"); } + if (length($input->{subject}) == 0) + { + # no subject so obviously we have to supply something retarded + @subjects = ("sup duder", "WHAUT UP DWIZLINKA", "HAPPY BIG CHAVYO WILVERFAO?", "NO DUM bB SUXCER Ylo TWIENF", "fararyY*F**YFARRRRADAYY+++", "i doINT BELIEVE YOYU!&U#*&!", "fuckN TEHAS D", "YO WHAT UP DOGGIE", "SENdiN BUcKY MeZSaGeZ", "SALWE"); + $subject = $subjects[(int rand @subjects)] + } + else + { $subject = $$input{subject}; } + + my %newmsg = (sender => $USER->{username}, recipient => $recip, unread => 1, subject => $subject, body => $$input{body}); + + if (exists($input->{later})) + { + header("saving draft"); + menu(); + $box = "drafts"; + $newmsg{unread} = 0; + if (exists($input->{oldid})) + { + update_message($input->{oldid}, \%newmsg); + } + else + { + new_message("$USER->{username}.$box", \%newmsg); + } + + $out = "SAVED AS DRAFT"; + } + else + { + header("sending message"); + menu(); + new_message("$recip.inbox", \%newmsg); + + $box = "outbox"; + $newmsg{unread} = 0; + new_message("$USER->{username}.$box", \%newmsg); + $out = "MESSAGE SENT"; + + if (exists($$input{oldid})) + { + delete_message($$input{oldid}); + recount_mailbox("$USER->{username}.drafts"); + } + } + + print qq!<p><center><div class=message><big><br><b>$out</b><br><br><a href="$BUCKY/inbox/$box">return to $box</a><br><br></big></div></center>!; + footer(); + } + +elsif ($$input{c} eq "r") # reply to message + { + $message = get_message($$input{id}); + if ($message == -1) + { error("No such message."); } + elsif ($$message{recipient} ne $USER->{username} && $$message{sender} ne $USER->{username}) + { error("You do not own this message."); } + if ($$message{mbox} =~ /drafts/) + { + header("edit message"); + menu(); + message_form($$message{recipient}, $message); + } + else + { + header("reply to message"); + menu(); + message_form($$message{sender}, $message); + } + footer(); + } + +elsif ($$input{c} eq "d") # delete message + { + if ($DEBUG) + { + header("deleting message"); + menu(); + print "Deleting message $$input{id}"; + } + my $box = process_delete($$input{id}); + if ($DEBUG) + { footer(); } + else + { + $box =~ s/^$USER->{username}.//; + redirect("$BUCKY/inbox/$box"); + } + } + +else # new message: display form + { + my $recipient; + if (exists($$input{username})) + { $recipient = $$input{username}; } + else + { $recipient = ""; } + header("new message"); + menu(); + message_form($recipient, -1); + footer(); + } + +$dbh->disconnect (); + +sub process_delete + { + my ($mid) = (@_); + my $message; + if (!defined($mid)) + { error("No id specified!"); } + $message = get_message($mid); + if ($message == -1) + { error("No such message."); } + elsif ($$message{recipient} ne $USER->{username}) + { error("You do not own this message."); } + delete_message($mid); + recount_mailbox($$message{mbox}); + return $$message{mbox}; + } +print "Message: " . &report_time() . "\n" if $timer; |
