瀏覽代碼

Update StatusController

Daniel Supernault 6 年之前
父節點
當前提交
71393514b2
共有 2 個文件被更改,包括 41 次插入1 次删除
  1. 40 0
      app/Http/Controllers/StatusController.php
  2. 1 1
      app/Status.php

+ 40 - 0
app/Http/Controllers/StatusController.php

@@ -92,6 +92,8 @@ class StatusController extends Controller
 
         $photos = $request->file('photo');
         $order = 1;
+        $mimes = [];
+
         foreach ($photos as $k => $v) {
             $storagePath = "public/m/{$monthHash}/{$userHash}";
             $path = $v->store($storagePath);
@@ -108,10 +110,14 @@ class StatusController extends Controller
             $media->filter_name = $request->input('filter_name');
             $media->order = $order;
             $media->save();
+            array_push($mimes, $media->mime);
             ImageOptimize::dispatch($media);
             $order++;
         }
 
+        $status->type = $this->mimeTypeCheck($mimes);
+        $status->save();
+
         NewStatusPipeline::dispatch($status);
 
         // TODO: Send to subscribers
@@ -254,4 +260,38 @@ class StatusController extends Controller
         $allowed = ['public', 'unlisted', 'private'];
         return in_array($visibility, $allowed) ? $visibility : 'public';
     }
+
+    public static function mimeTypeCheck($mimes)
+    {
+        $allowed = explode(',', config('pixelfed.media_types'));
+        $count = count($mimes);
+        $photos = 0;
+        $videos = 0;
+        foreach($mimes as $mime) {
+            if(in_array($mime, $allowed) == false) {
+                continue;
+            }
+            if(str_contains($mime, 'image/')) {
+                $photos++;
+            }
+            if(str_contains($mime, 'video/')) {
+                $videos++;
+            }
+        }
+        if($photos == 1 && $videos == 0) {
+            return 'photo';
+        }
+        if($videos == 1 && $photos == 0) {
+            return 'video';
+        }
+        if($photos > 1 && $videos == 0) {
+            return 'photo:album';
+        }
+        if($videos > 1 && $photos == 0) {
+            return 'video:album';
+        }
+        if($photos >= 1 && $videos >= 1) {
+            return 'photo:video:album';
+        }
+    }
 }

+ 1 - 1
app/Status.php

@@ -25,7 +25,7 @@ class Status extends Model
         'photo:album',
         'video',
         'video:album',
-        'photo:video:album'
+        'photo:video:album',
         'share',
         'reply',
         'story',