summaryrefslogtreecommitdiff
path: root/cgi-bin/message
blob: 08c0968e63d9921ef905f2e422050a52334dee22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
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;