web: be more thorough when deleting users

When deleting a spammer, delete
- forum_logging
- private messages
- notifications

Also, when displaying private messages, check if sender
doesn't exist, and delete if so
This commit is contained in:
David Anderson 2014-07-11 15:20:01 -07:00
parent 99b51693ea
commit cb1bb4069a
4 changed files with 10 additions and 2 deletions

View File

@ -473,7 +473,7 @@ class BoincPrivateMessage {
$db = BoincDb::get();
return $db->delete($this, 'private_messages');
}
function delete_aux($clause) {
static function delete_aux($clause) {
$db = BoincDb::get();
return $db->delete_aux('private_messages', $clause);
}

View File

@ -926,6 +926,7 @@ function forum_delete_user($user) {
}
$p = BoincForumPrefs::lookup_userid($user->id);
if ($p) $p->delete();
BoincForumLogging::delete_aux("userid=$user->id");
}
function move_post($post, $old_thread, $old_forum, $new_thread, $new_forum) {

View File

@ -70,6 +70,8 @@ function delete_user($user) {
}
delete_profile($user);
forum_delete_user($user);
BoincPrivateMessage::delete_aux("userid=$user->id or senderid=$user->id");
BoincNotify::delete_aux("userid=$user->id");
$q = "delete from user where id=$user->id";
mysql_query($q);
}

View File

@ -90,6 +90,11 @@ function do_inbox($logged_in_user) {
echo "<tr><th>".tra("Subject")."</th><th>".tra("Sender and date")."</th><th>".tra("Message")."</th></tr>\n";
$i = 0;
foreach($msgs as $msg) {
$sender = BoincUser::lookup_id($msg->senderid);
if (!$sender) {
$msg->delete();
continue;
}
$i++;
$class = ($i%2)? "row0": "row1";
echo "<tr class=$class>\n";
@ -98,7 +103,7 @@ function do_inbox($logged_in_user) {
$msg->update("opened=1");
}
echo "<td valign=top> $checkbox $msg->subject </td>\n";
echo "<td valign=top>".user_links(BoincUser::lookup_id($msg->senderid));
echo "<td valign=top>".user_links($sender);
show_block_link($msg->senderid);
echo "<br>".time_str($msg->date)."</td>\n";
echo "<td valign=top>".output_transform($msg->content, $options)."<p>";