middleware('auth'); } public function home() { $pid = Auth::user()->profile->id; $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); } return $following; }); $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) ->orderBy('created_at', 'desc') ->simplePaginate(21); return view('discover.home', compact('people', 'posts')); } public function showTags(Request $request, $hashtag) { $this->validate($request, [ 'page' => 'nullable|integer|min:1|max:10', ]); $tag = Hashtag::with('posts') ->withCount('posts') ->whereSlug($hashtag) ->firstOrFail(); $posts = $tag->posts() ->whereIsNsfw(false) ->whereVisibility('public') ->has('media') ->orderBy('id', 'desc') ->simplePaginate(12); return view('discover.tags.show', compact('tag', 'posts')); } }