From 003caf7e8abf7a12b3977b9f1f20fa79868156ea Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 9 Dec 2020 21:43:09 -0700 Subject: [PATCH] Update StatusController, add interstitial logic --- app/Http/Controllers/StatusController.php | 40 +++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php index f98fa5d63..c0bf8e06d 100644 --- a/app/Http/Controllers/StatusController.php +++ b/app/Http/Controllers/StatusController.php @@ -6,6 +6,7 @@ use App\Jobs\ImageOptimizePipeline\ImageOptimize; use App\Jobs\StatusPipeline\NewStatusPipeline; use App\Jobs\StatusPipeline\StatusDelete; use App\Jobs\SharePipeline\SharePipeline; +use App\AccountInterstitial; use App\Media; use App\Profile; use App\Status; @@ -162,14 +163,49 @@ class StatusController extends Controller $status = Status::findOrFail($request->input('item')); - if ($status->profile_id === Auth::user()->profile->id || Auth::user()->is_admin == true) { + $user = Auth::user(); + + if($status->profile_id != $user->profile->id && + $user->is_admin == true && + $status->uri == null + ) { + $media = $status->media; + + $ai = new AccountInterstitial; + $ai->user_id = $status->profile->user_id; + $ai->type = 'post.removed'; + $ai->view = 'account.moderation.post.removed'; + $ai->item_type = 'App\Status'; + $ai->item_id = $status->id; + $ai->has_media = (bool) $media->count(); + $ai->blurhash = $media->count() ? $media->first()->blurhash : null; + $ai->meta = json_encode([ + 'caption' => $status->caption, + 'created_at' => $status->created_at, + 'type' => $status->type, + 'url' => $status->url(), + 'is_nsfw' => $status->is_nsfw, + 'scope' => $status->scope, + 'reblog' => $status->reblog_of_id, + 'likes_count' => $status->likes_count, + 'reblogs_count' => $status->reblogs_count, + ]); + $ai->save(); + + $u = $status->profile->user; + $u->has_interstitial = true; + $u->save(); + } + + if ($status->profile_id == $user->profile->id || $user->is_admin == true) { Cache::forget('profile:status_count:'.$status->profile_id); StatusDelete::dispatch($status); } + if($request->wantsJson()) { return response()->json(['Status successfully deleted.']); } else { - return redirect(Auth::user()->url()); + return redirect($user->url()); } }