Commit f4ee1278 authored by Lukas Fleischer's avatar Lukas Fleischer
Browse files

Clean up user references in user_delete()



Explicitly clean up all references before deleting a user.

Signed-off-by: default avatarLukas Fleischer <archlinux@cryptocrack.de>
parent daceef50
......@@ -829,6 +829,41 @@ function user_suspended($id) {
*/
function user_delete($id) {
$dbh = DB::connect();
$id = intval($id);
/*
* These are normally already taken care of by propagation constraints
* but it is better to be explicit here.
*/
$fields_delete = array(
array("Sessions", "UsersID"),
array("PackageVotes", "UsersID"),
array("CommentNotify", "UsersID")
);
$fields_set_null = array(
array("PackageBases", "SubmitterUID"),
array("PackageBases", "MaintainerUID"),
array("PackageBases", "SubmitterUID"),
array("PackageComments", "UsersID"),
array("PackageComments", "DelUsersID"),
array("PackageRequests", "UsersID"),
array("TU_VoteInfo", "SubmitterID"),
array("TU_Votes", "UserID")
);
foreach($fields_delete as list($table, $field)) {
$q = "DELETE FROM " . $table . " ";
$q.= "WHERE " . $field . " = " . $id;
$dbh->query($q);
}
foreach($fields_set_null as list($table, $field)) {
$q = "UPDATE " . $table . " SET " . $field . " = NULL ";
$q.= "WHERE " . $field . " = " . $id;
$dbh->query($q);
}
$q = "DELETE FROM Users WHERE ID = " . $id;
$dbh->query($q);
return;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment