summaryrefslogtreecommitdiff
path: root/cgi-bin/message
diff options
context:
space:
mode:
Diffstat (limited to 'cgi-bin/message')
-rwxr-xr-xcgi-bin/message149
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;