From fa99ab79c3825db754b35fd1bba4edc8318f85bf Mon Sep 17 00:00:00 2001 From: Daniel Supernault <danielsupernault@gmail.com> Date: Sat, 24 Nov 2018 23:15:32 -0700 Subject: [PATCH] Update Status model, cache view type and thumbnail methods --- app/Status.php | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/app/Status.php b/app/Status.php index e41a60e38..12800213a 100644 --- a/app/Status.php +++ b/app/Status.php @@ -2,7 +2,7 @@ namespace App; -use Auth; +use Auth, Cache; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Storage; @@ -37,26 +37,29 @@ class Status extends Model public function viewType() { - $media = $this->firstMedia(); - $mime = explode('/', $media->mime)[0]; - $count = $this->media()->count(); - $type = ($mime == 'image') ? 'image' : 'video'; - if($count > 1) { - $type = ($type == 'image') ? 'album' : 'video-album'; - } - - return $type; + return Cache::remember('status:view-type:'.$this->id, 40320, function() { + $media = $this->firstMedia(); + $mime = explode('/', $media->mime)[0]; + $count = $this->media()->count(); + $type = ($mime == 'image') ? 'image' : 'video'; + if($count > 1) { + $type = ($type == 'image') ? 'album' : 'video-album'; + } + return $type; + }); } public function thumb($showNsfw = false) { - $type = $this->viewType(); - $is_nsfw = !$showNsfw ? $this->is_nsfw : false; - if ($this->media->count() == 0 || $is_nsfw || !in_array($type,['image', 'album', 'video'])) { - return 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=='; - } - - return url(Storage::url($this->firstMedia()->thumbnail_path)); + return Cache::remember('status:thumb:'.$this->id, 40320, function() use ($showNsfw) { + $type = $this->viewType(); + $is_nsfw = !$showNsfw ? $this->is_nsfw : false; + if ($this->media->count() == 0 || $is_nsfw || !in_array($type,['image', 'album', 'video'])) { + return 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=='; + } + + return url(Storage::url($this->firstMedia()->thumbnail_path)); + }); } public function url()