addfriend.pl
Copying Source is Forbidden
219 lines of code
1
#!/usr/local/bin/perl
2
3
# must have's!
4
use strict;
5
use warnings;
6
use CGI::Carp qw(fatalsToBrowser);
7
use DBI;
8
use URI::Escape;
9
10
use lib "/var/www/html/Pm";
11
12
use Bc_chef qw(cookie_get);
13
use Bc_misc qw(get_param referrer word_as_possessive);
14
use Bc_sql qw(sql_execute
15
user_exists
16
get_constant
17
$QUERY_PAGE
18
$QUERY_UID
19
$LOGGEDIN
20
21
$DB
22
);
23
24
use Html qw(header pre_html_header);
25
use Html2 qw(tag br hr embolden italicize);
26
use Redir qw(error_redir notice_redir);
27
use User qw(
28
isFriend
29
isFriendRequestPending
30
isFriendRequestIgnored
31
isUserSubscriber
32
get_user_stat
33
blockedUser
34
$USER_DATA
35
);
36
37
use Security qw(banned get_login);
38
39
if (not isUserSubscriber()) {
40
if (not $LOGGEDIN) {
41
print error_redir("/?$QUERY_PAGE=" . get_constant("SIGNUP_PAGE"), "Account Required");
42
} else {
43
print error_redir("/?$QUERY_PAGE=" . get_constant("PAY_PAGE"), "Premium Account Required");
44
}
45
46
exit 1;
47
}
48
49
my $DEBUG = 0;
50
51
my $fid = get_param($QUERY_UID); # non-friend's uid
52
my $redir = get_param("r");
53
54
my $output = "";
55
if ($DEBUG) {
56
$output = pre_html_header();
57
$output .= header("addfriend.pl", "", "", "", "add/remove fuck buddy", "");
58
$output .= "DEBUG MODE ENABLED" . br;
59
$output .= "loggedin: $LOGGEDIN" . br;
60
$output .= "fid: $fid" . hr;
61
}
62
63
# cannot add/remove oneself from their own list(s)
64
# cannot add banned and blocked users to friends lists
65
# administrators can modify anyone's lists
66
67
if (user_exists($LOGGEDIN) and user_exists($fid)) {
68
my $fidnn = get_user_stat($fid, "nickname");
69
70
if ($DEBUG) { $output .= "both users exist" . br; }
71
72
my $friend = isFriend($fid); # is $fid a friend of $LOGGEDIN?
73
my $freqPending = isFriendRequestPending($fid); # is $fid waiting for $LOGGEDIN to accept the friend request?
74
my $freqIgnored = isFriendRequestIgnored($fid); # has $LOGGEDIN declined $fid's friend request?
75
76
if ($friend) {
77
# $fid really is a friend of $LOGGEDIN
78
# and so, we must want to delete $fid from $LOGGEDIN's list
79
if ($DEBUG) { $output .= "$fid is a fuck buddy of $LOGGEDIN, so remove them" . br; }
80
81
my $sql = "delete from friends where UID=" . $DB->quote($fid) . " and FID=" . $DB->quote($LOGGEDIN);
82
if ($DEBUG) { $output .= "sql: " . italicize($sql) . br; }
83
84
if (sql_execute($sql, "addfriend")) {
85
$sql = "delete from friends where UID=" . $DB->quote($LOGGEDIN) . " and FID=" . $DB->quote($fid);
86
if ($DEBUG) { $output .= "sql: " . italicize($sql) . br; }
87
if (sql_execute($sql, "addfriend")) {
88
if ($DEBUG)
89
{ $output .= "$LOGGEDIN removed" . br; } else
90
{ $output = notice_redir(referrer(), embolden(word_as_possessive($fidnn)) . " fuck buddy status has been revoked!"); }
91
}
92
} else {
93
if ($DEBUG)
94
{ $output .= "failed to cock block!" . br; } else
95
{ $output = error_redir(referrer(), "failed to cock block!"); }
96
}
97
} else {
98
# okay $fid is not a friend.
99
# is there a request from $fid to be $LOGGEDIN's friend?
100
if ($freqPending) {
101
my $ignore = get_param("i");
102
if ($ignore) {
103
my $sql = "update friends set declined = '2' where UID=" . $DB->quote($fid) . " and FID=" . $DB->quote($LOGGEDIN);
104
if ($DEBUG) { $output .= "ignore fuck buddy request from " . embolden($fid) . br; }
105
106
if (sql_execute($sql, "addfriend")) {
107
if ($DEBUG)
108
{ $output .= "fuck buddy request from " . embolden($fid) . " ignored" . br; } else
109
{ $output = notice_redir(referrer(), "ignored fuck buddy request from " . embolden($fidnn)); }
110
} else {
111
if ($DEBUG)
112
{ $output .= "fuck buddy request from " . embolden($fid) . " failed to get updated" . br; } else
113
{ $output = error_redir(referrer(), "failed to ignore fuck buddy request to " . embolden($fidnn)); }
114
}
115
} else {
116
my $sql = "update friends set declined = '3' where UID=" . $DB->quote($fid) . " and FID=" . $DB->quote($LOGGEDIN);
117
my $sql2 = "insert into friends values (NULL, " . $DB->quote($LOGGEDIN) . ", " . $DB->quote($fid) . ", '3')";
118
119
if ($DEBUG) { $output .= "fuck buddy request from " . embolden($fid) . " accepted" . br; }
120
121
if (sql_execute($sql, "addfriend") and sql_execute($sql2, "addfriend")) {
122
if ($DEBUG)
123
{ $output .= "fuck buddy request from " . embolden($fid) . " accepted" . br; } else
124
{ $output = notice_redir(referrer(), "accepted fuck buddy request from " . embolden($fidnn) . " yay"); }
125
} else {
126
if ($DEBUG)
127
{ $output .= "fuck buddy request from " . embolden($fid) . " failed to get updated" . br; } else
128
{ $output = error_redir(referrer(), "failed to ignore fuck buddy request from " . embolden($fidnn)); }
129
}
130
}
131
} elsif ($freqIgnored) {
132
if ($DEBUG)
133
{ $output .= "fuck buddy request to " . embolden($fid) . " already exists (and that request was ignored by the recipient)" . br; } else
134
{ $output = notice_redir(referrer(), "sent fuck buddy request to " . embolden($fidnn)); }
135
} else {
136
my $otherfreqPending = isFriendRequestPending($LOGGEDIN, $fid);
137
if (ref $otherfreqPending ne "HASH") {
138
# send friend request
139
my $sql = "insert into friends (UID, FID, declined) values (";
140
$sql .= $DB->quote($LOGGEDIN) . ", ";
141
$sql .= $DB->quote($fid) . ", ";
142
if (ref $otherfreqPending eq "HASH") { $sql .= "'3'"; } else { $sql .= "'1'"; }
143
$sql .= ")";
144
145
if ($DEBUG) {
146
$output .= "send fuck buddy request from $LOGGEDIN to $fid" . br;
147
$output .= "sql: " . italicize($sql) . br;
148
}
149
150
if (sql_execute($sql, "addfriend")) {
151
if (ref $otherfreqPending eq "HASH") {
152
my $sql = "update friends set declined='3'";
153
$sql .= " where UID=" . $DB->quote($fid);
154
$sql .= " and FID=" . $DB->quote($LOGGEDIN);
155
$sql .= " and declined='1'";
156
if ($DEBUG) {
157
$output .= "fuck buddy request from " . embolden($fidnn) . " was found!" . br;
158
$output .= "sql: " . italicize($sql) . br;
159
}
160
161
if (sql_execute($sql, "addfriend")) {
162
if ($DEBUG)
163
{ $output .= "fuck buddy request accepted" . br; } else
164
{ $output = notice_redir(referrer(), "accepted fuck buddy request from " . embolden($fidnn)); }
165
} else {
166
if ($DEBUG)
167
{ $output .= "failed to accept fuck buddy request" . br; } else
168
{ $output = error_redir(referrer(), "failed to remove fuck buddy request from " . embolden($fidnn)); }
169
}
170
} else {
171
if ($DEBUG)
172
{ $output .= "fuck buddy request sent" . br; } else
173
{ $output = notice_redir(referrer(), "sent fuck buddy request to " . embolden($fidnn)); }
174
}
175
} else {
176
if ($DEBUG)
177
{ $output .= "failed to send fuck buddy request" . br; } else
178
{ $output = notice_redir(referrer(), "failed to send fuck buddy request to " . embolden($fidnn)); }
179
}
180
} else {
181
# a friend request exists from $LOGGEDIN to $fid
182
my $sql = "delete from friends where UID=" . $DB->quote($LOGGEDIN) . " and FID=" . $DB->quote($fid);
183
if ($DEBUG) {
184
$output .= "fuck buddy request to " . embolden($fidnn) . " already exists (pending)" . br;
185
$output .= "sql: " . italicize($sql) . br;
186
}
187
188
if (sql_execute($sql, "addfriend")) {
189
if ($DEBUG)
190
{ $output .= "fuck buddy request deleted" . br; } else
191
{ $output = notice_redir(referrer(), "removed fuck buddy request to " . embolden($fidnn)); }
192
} else {
193
if ($DEBUG)
194
{ $output .= "failed to delete fuck buddy request" . br; } else
195
{ $output = error_redir(referrer(), "failed to remove fuck buddy request to " . embolden($fidnn)); }
196
}
197
}
198
}
199
}
200
} else {
201
if ($DEBUG)
202
{ $output .= "no such user" . br; } else
203
{ $output = error_redir(referrer(), "User ID $LOGGEDIN and/or $fid do not exist"); }
204
}
205
206
if ($DEBUG) {
207
$output .= br . hr({class=>"tiny"});
208
if ($redir)
209
{ $output .= "client redirection enabled" . br; } else
210
{ $output .= "client redirection disabled" . br; }
211
}
212
213
if (not $output) {
214
$output = error_redir(referrer(), "something didn't go right...");
215
}
216
217
print $output;
218
219
exit 1;