Browse Source

Update DiscoverController

Daniel Supernault 6 years ago
parent
commit
4fe46723ee
1 changed files with 29 additions and 1 deletions
  1. 29 1
      app/Http/Controllers/DiscoverController.php

+ 29 - 1
app/Http/Controllers/DiscoverController.php

@@ -3,10 +3,12 @@
 namespace App\Http\Controllers;
 namespace App\Http\Controllers;
 
 
 use App\{
 use App\{
+  DiscoverCategory,
   Follower,
   Follower,
   Hashtag,
   Hashtag,
   Profile,
   Profile,
   Status, 
   Status, 
+  StatusHashtag, 
   UserFilter
   UserFilter
 };
 };
 use Auth, DB, Cache;
 use Auth, DB, Cache;
@@ -28,7 +30,7 @@ class DiscoverController extends Controller
     {
     {
         $this->validate($request, [
         $this->validate($request, [
           'page' => 'nullable|integer|min:1|max:10',
           'page' => 'nullable|integer|min:1|max:10',
-      ]);
+        ]);
 
 
         $tag = Hashtag::with('posts')
         $tag = Hashtag::with('posts')
           ->withCount('posts')
           ->withCount('posts')
@@ -51,4 +53,30 @@ class DiscoverController extends Controller
         
         
         return view('discover.tags.show', compact('tag', 'posts'));
         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'));
+    }
 }
 }