From c0609671c23c3a71bf6c7af40f70719d2ba72472 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 21 Sep 2018 23:23:16 -0600 Subject: [PATCH] Update Discover feature --- app/Http/Controllers/DiscoverController.php | 54 +++++++++++++-------- resources/views/discover/home.blade.php | 14 ++++++ 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/app/Http/Controllers/DiscoverController.php b/app/Http/Controllers/DiscoverController.php index fb3286d87..2e3f57808 100644 --- a/app/Http/Controllers/DiscoverController.php +++ b/app/Http/Controllers/DiscoverController.php @@ -2,12 +2,14 @@ namespace App\Http\Controllers; -use App\Follower; -use App\Hashtag; -use App\Profile; -use App\Status; -use App\UserFilter; -use Auth; +use App\{ + Follower, + Hashtag, + Profile, + Status, + UserFilter +}; +use Auth, DB, Cache; use Illuminate\Http\Request; class DiscoverController extends Controller @@ -21,25 +23,35 @@ class DiscoverController extends Controller { $pid = Auth::user()->profile->id; - $following = Follower::whereProfileId($pid) + $following = Cache::remember('feature:discover:following:'.$pid, 15, function() use($pid) { + $following = Follower::whereProfileId($pid) ->pluck('following_id'); - $filtered = UserFilter::whereUserId($pid) - ->whereFilterableType('App\Profile') - ->whereIn('filter_type', ['mute', 'block']) - ->pluck('filterable_id'); - $following->push($pid); - - if($filtered->count() > 0) { - $following->push($filtered); - } + $filtered = UserFilter::whereUserId($pid) + ->whereFilterableType('App\Profile') + ->whereIn('filter_type', ['mute', 'block']) + ->pluck('filterable_id'); + $following->push($pid); + + if($filtered->count() > 0) { + $following->push($filtered); + } + return $following; + }); - $people = Profile::inRandomOrder() - ->whereNotIn('id', $following) - ->whereIsPrivate(false) - ->take(3) - ->get(); + $people = Cache::remember('feature:discover:people:'.$pid, 15, function() use($following) { + return Profile::inRandomOrder() + ->whereHas('statuses') + ->whereNull('domain') + ->whereNotIn('id', $following) + ->whereIsPrivate(false) + ->take(3) + ->get(); + }); $posts = Status::whereHas('media') + ->whereHas('profile', function($q) { + $q->where('is_private', false); + }) ->whereVisibility('public') ->where('profile_id', '!=', $pid) ->whereNotIn('profile_id', $following) diff --git a/resources/views/discover/home.blade.php b/resources/views/discover/home.blade.php index 1995e2b5e..eb1137cf0 100644 --- a/resources/views/discover/home.blade.php +++ b/resources/views/discover/home.blade.php @@ -25,6 +25,13 @@ @endforeach + + @if($people->count() == 0) +
+

No results found

+
+ @endif +
@@ -49,6 +56,13 @@ @endforeach + + @if($posts->count() == 0) +
+

No results found

+
+ @endif +