diff --git a/app/Http/Controllers/DiscoverController.php b/app/Http/Controllers/DiscoverController.php index a39dfd4b1..0eddeed96 100644 --- a/app/Http/Controllers/DiscoverController.php +++ b/app/Http/Controllers/DiscoverController.php @@ -3,10 +3,12 @@ namespace App\Http\Controllers; use App\{ + DiscoverCategory, Follower, Hashtag, Profile, Status, + StatusHashtag, UserFilter }; use Auth, DB, Cache; @@ -28,7 +30,7 @@ class DiscoverController extends Controller { $this->validate($request, [ 'page' => 'nullable|integer|min:1|max:10', - ]); + ]); $tag = Hashtag::with('posts') ->withCount('posts') @@ -51,4 +53,30 @@ class DiscoverController extends Controller return view('discover.tags.show', compact('tag', 'posts')); } + + public function showCategory(Request $request, $slug) + { + $tag = DiscoverCategory::whereActive(true) + ->whereSlug($slug) + ->firstOrFail(); + + // todo refactor this mess + $tagids = $tag->hashtags->pluck('id')->toArray(); + $sids = StatusHashtag::whereIn('hashtag_id', $tagids)->orderByDesc('status_id')->take(500)->pluck('status_id')->toArray(); + $posts = Status::whereIn('id', $sids)->whereNull('uri')->whereType('photo')->whereNull('in_reply_to_id')->whereNull('reblog_of_id')->orderByDesc('created_at')->paginate(21); + $tag->posts_count = $tag->posts()->count(); + return view('discover.tags.category', compact('tag', 'posts')); + } + + public function showPersonal(Request $request) + { + $profile = Auth::user()->profile; + // todo refactor this mess + $tags = Hashtag::whereHas('posts')->orderByRaw('rand()')->take(5)->get(); + $following = $profile->following->pluck('id'); + $following = $following->push($profile->id)->toArray(); + $posts = Status::withCount(['likes','comments'])->whereNotIn('profile_id', $following)->whereHas('media')->whereType('photo')->orderByDesc('created_at')->paginate(21); + $posts->post_count = Status::whereNotIn('profile_id', $following)->whereHas('media')->whereType('photo')->count(); + return view('discover.personal', compact('posts', 'tags')); + } }