Quellcode durchsuchen

Update TimelineController, add filters

Daniel Supernault vor 7 Jahren
Ursprung
Commit
c52c841eac
1 geänderte Dateien mit 19 neuen und 3 gelöschten Zeilen
  1. 19 3
      app/Http/Controllers/TimelineController.php

+ 19 - 3
app/Http/Controllers/TimelineController.php

@@ -4,7 +4,7 @@ namespace App\Http\Controllers;
 
 use Illuminate\Http\Request;
 use Auth;
-use App\{Follower, Status, User};
+use App\{Follower, Profile, Status, User, UserFilter};
 
 class TimelineController extends Controller
 {
@@ -15,10 +15,16 @@ class TimelineController extends Controller
 
     public function personal()
     {
+      $pid = Auth::user()->profile->id;
       // TODO: Use redis for timelines
-      $following = Follower::whereProfileId(Auth::user()->profile->id)->pluck('following_id');
-      $following->push(Auth::user()->profile->id);
+      $following = Follower::whereProfileId($pid)->pluck('following_id');
+      $following->push($pid);
+      $filtered = UserFilter::whereUserId($pid)
+                  ->whereFilterableType('App\Profile')
+                  ->whereIn('filter_type', ['mute', 'block'])
+                  ->pluck('filterable_id');
       $timeline = Status::whereIn('profile_id', $following)
+                  ->whereNotIn('profile_id', $filtered)
                   ->orderBy('id','desc')
                   ->withCount(['comments', 'likes'])
                   ->simplePaginate(20);
@@ -30,8 +36,18 @@ class TimelineController extends Controller
     {
       // TODO: Use redis for timelines
       // $timeline = Timeline::build()->local();
+      $pid = Auth::user()->profile->id;
+
+      $filtered = UserFilter::whereUserId($pid)
+                  ->whereFilterableType('App\Profile')
+                  ->whereIn('filter_type', ['mute', 'block'])
+                  ->pluck('filterable_id');
+      $private = Profile::whereIsPrivate(true)->pluck('id');
+      $filtered = $filtered->merge($private);
       $timeline = Status::whereHas('media')
+                  ->whereNotIn('profile_id', $filtered)
                   ->whereNull('in_reply_to_id')
+                  ->whereNull('reblog_of_id')
                   ->withCount(['comments', 'likes'])
                   ->orderBy('id','desc')
                   ->simplePaginate(20);