Browse Source

Update StatusController, add interstitial logic

Daniel Supernault 4 years ago
parent
commit
003caf7e8a
1 changed files with 38 additions and 2 deletions
  1. 38 2
      app/Http/Controllers/StatusController.php

+ 38 - 2
app/Http/Controllers/StatusController.php

@@ -6,6 +6,7 @@ use App\Jobs\ImageOptimizePipeline\ImageOptimize;
 use App\Jobs\StatusPipeline\NewStatusPipeline;
 use App\Jobs\StatusPipeline\NewStatusPipeline;
 use App\Jobs\StatusPipeline\StatusDelete;
 use App\Jobs\StatusPipeline\StatusDelete;
 use App\Jobs\SharePipeline\SharePipeline;
 use App\Jobs\SharePipeline\SharePipeline;
+use App\AccountInterstitial;
 use App\Media;
 use App\Media;
 use App\Profile;
 use App\Profile;
 use App\Status;
 use App\Status;
@@ -162,14 +163,49 @@ class StatusController extends Controller
 
 
         $status = Status::findOrFail($request->input('item'));
         $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);
             Cache::forget('profile:status_count:'.$status->profile_id);
             StatusDelete::dispatch($status);
             StatusDelete::dispatch($status);
         }
         }
+
         if($request->wantsJson()) {
         if($request->wantsJson()) {
             return response()->json(['Status successfully deleted.']);
             return response()->json(['Status successfully deleted.']);
         } else {
         } else {
-            return redirect(Auth::user()->url());
+            return redirect($user->url());
         }
         }
     }
     }