diff --git a/app/Jobs/DeletePipeline/DeleteAccountPipeline.php b/app/Jobs/DeletePipeline/DeleteAccountPipeline.php index a225b48d..18f238be 100644 --- a/app/Jobs/DeletePipeline/DeleteAccountPipeline.php +++ b/app/Jobs/DeletePipeline/DeleteAccountPipeline.php @@ -24,8 +24,11 @@ use App\{ FollowRequest, Hashtag, HashtagFollow, + ImportData, + ImportJob, Like, Media, + MediaTag, Mention, Notification, OauthClient, @@ -81,10 +84,29 @@ class DeleteAccountPipeline implements ShouldQueue $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(); StatusHashtag::whereProfileId($id)->delete(); - DirectMessage::whereFromId($user->profile_id)->delete(); + DirectMessage::whereFromId($id)->delete(); FollowRequest::whereFollowingId($id) ->orWhere('follower_id', $id) ->forceDelete(); @@ -143,7 +165,14 @@ class DeleteAccountPipeline implements ShouldQueue }); 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(); $this->deleteProfile($user); }); diff --git a/app/Jobs/StatusPipeline/StatusDelete.php b/app/Jobs/StatusPipeline/StatusDelete.php index 09ba5ba5..346f1cf6 100644 --- a/app/Jobs/StatusPipeline/StatusDelete.php +++ b/app/Jobs/StatusPipeline/StatusDelete.php @@ -4,6 +4,7 @@ namespace App\Jobs\StatusPipeline; use DB; use App\{ + AccountInterstitial, MediaTag, Notification, Report, @@ -113,7 +114,11 @@ class StatusDelete implements ShouldQueue ->where('item_id', $tag->id) ->forceDelete(); $tag->delete(); - }); + }); + + AccountInterstitial::where('item_type', 'App\Status') + ->where('item_id', $status->id) + ->delete(); $status->forceDelete(); });