From 71393514b25de14125ed344bc99ecf1179e1737d Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 1 Dec 2018 23:04:42 -0700 Subject: [PATCH] Update StatusController --- app/Http/Controllers/StatusController.php | 40 +++++++++++++++++++++++ app/Status.php | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php index db0b0f453..aa3295448 100644 --- a/app/Http/Controllers/StatusController.php +++ b/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'; + } + } } diff --git a/app/Status.php b/app/Status.php index c7b5f0bf8..589e622cf 100644 --- a/app/Status.php +++ b/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',