#!/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!


$out

return to $box

!; 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;