1
0
Fork 0
forked from mirror/pixelfed

Update delete handler

This commit is contained in:
Daniel Supernault 2020-12-14 02:58:07 -07:00
parent 446f291036
commit 63eceb8236
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
2 changed files with 38 additions and 4 deletions

View file

@ -24,8 +24,11 @@ use App\{
FollowRequest, FollowRequest,
Hashtag, Hashtag,
HashtagFollow, HashtagFollow,
ImportData,
ImportJob,
Like, Like,
Media, Media,
MediaTag,
Mention, Mention,
Notification, Notification,
OauthClient, OauthClient,
@ -81,10 +84,29 @@ class DeleteAccountPipeline implements ShouldQueue
$id = $user->profile_id; $id = $user->profile_id;
Bookmark::whereProfileId($user->profile_id)->forceDelete(); ImportData::whereProfileId($id)
->cursor()
->each(function($data) {
$path = storage_path('app/'.$data->path);
if(is_file($path)) {
unlink($path);
}
$data->delete();
});
ImportJob::whereProfileId($id)
->cursor()
->each(function($data) {
$path = storage_path('app/'.$data->media_json);
if(is_file($path)) {
unlink($path);
}
$data->delete();
});
MediaTag::whereProfileId($id)->delete();
Bookmark::whereProfileId($id)->forceDelete();
EmailVerification::whereUserId($user->id)->forceDelete(); EmailVerification::whereUserId($user->id)->forceDelete();
StatusHashtag::whereProfileId($id)->delete(); StatusHashtag::whereProfileId($id)->delete();
DirectMessage::whereFromId($user->profile_id)->delete(); DirectMessage::whereFromId($id)->delete();
FollowRequest::whereFollowingId($id) FollowRequest::whereFollowingId($id)
->orWhere('follower_id', $id) ->orWhere('follower_id', $id)
->forceDelete(); ->forceDelete();
@ -143,7 +165,14 @@ class DeleteAccountPipeline implements ShouldQueue
}); });
DB::transaction(function() use ($user) { DB::transaction(function() use ($user) {
Status::whereProfileId($user->profile_id)->forceDelete(); Status::whereProfileId($user->profile_id)
->cursor()
->each(function($status) {
AccountInterstitial::where('item_type', 'App\Status')
->where('item_id', $status->id)
->delete();
$status->forceDelete();
});
Report::whereUserId($user->id)->forceDelete(); Report::whereUserId($user->id)->forceDelete();
$this->deleteProfile($user); $this->deleteProfile($user);
}); });

View file

@ -4,6 +4,7 @@ namespace App\Jobs\StatusPipeline;
use DB; use DB;
use App\{ use App\{
AccountInterstitial,
MediaTag, MediaTag,
Notification, Notification,
Report, Report,
@ -113,7 +114,11 @@ class StatusDelete implements ShouldQueue
->where('item_id', $tag->id) ->where('item_id', $tag->id)
->forceDelete(); ->forceDelete();
$tag->delete(); $tag->delete();
}); });
AccountInterstitial::where('item_type', 'App\Status')
->where('item_id', $status->id)
->delete();
$status->forceDelete(); $status->forceDelete();
}); });