浏览代码

Update PublicApiController, use AccountService in accountStatuses method

Daniel Supernault 3 年之前
父节点
当前提交
bef959f451
共有 1 个文件被更改,包括 71 次插入78 次删除
  1. 71 78
      app/Http/Controllers/PublicApiController.php

+ 71 - 78
app/Http/Controllers/PublicApiController.php

@@ -51,11 +51,11 @@ class PublicApiController extends Controller
 
     protected function getUserData($user)
     {
-    	if(!$user) {
-    		return [];
-    	} else {
+        if(!$user) {
+            return [];
+        } else {
             return AccountService::get($user->profile_id);
-    	}
+        }
     }
 
     protected function getLikes($status)
@@ -94,12 +94,12 @@ class PublicApiController extends Controller
         $status = Status::whereProfileId($profile->id)->findOrFail($postid);
         $this->scopeCheck($profile, $status);
         if(!$request->user()) {
-        	$res = ['status' => StatusService::get($status->id)];
+            $res = ['status' => StatusService::get($status->id)];
         } else {
-        	$item = new Fractal\Resource\Item($status, new StatusStatelessTransformer());
-	        $res = [
-	        	'status' => $this->fractal->createData($item)->toArray(),
-	        ];
+            $item = new Fractal\Resource\Item($status, new StatusStatelessTransformer());
+            $res = [
+                'status' => $this->fractal->createData($item)->toArray(),
+            ];
         }
 
         return response()->json($res);
@@ -200,14 +200,14 @@ class PublicApiController extends Controller
 
     public function statusLikes(Request $request, $username, $id)
     {
-    	abort_if(!$request->user(), 404);
+        abort_if(!$request->user(), 404);
         $status = Status::findOrFail($id);
         $this->scopeCheck($status->profile, $status);
         $page = $request->input('page');
         if($page && $page >= 3 && $request->user()->profile_id != $status->profile_id) {
-        	return response()->json([
-        		'data' => []
-        	]);
+            return response()->json([
+                'data' => []
+            ]);
         }
         $likes = $this->getLikes($status);
         return response()->json([
@@ -217,15 +217,15 @@ class PublicApiController extends Controller
 
     public function statusShares(Request $request, $username, $id)
     {
-    	abort_if(!$request->user(), 404);
+        abort_if(!$request->user(), 404);
         $profile = Profile::whereUsername($username)->whereNull('status')->firstOrFail();
         $status = Status::whereProfileId($profile->id)->findOrFail($id);
         $this->scopeCheck($profile, $status);
         $page = $request->input('page');
         if($page && $page >= 3 && $request->user()->profile_id != $status->profile_id) {
-        	return response()->json([
-        		'data' => []
-        	]);
+            return response()->json([
+                'data' => []
+            ]);
         }
         $shares = $this->getShares($status);
         return response()->json([
@@ -300,7 +300,7 @@ class PublicApiController extends Controller
                         'scope',
                         'local'
                       )
-            		  ->where('id', $dir, $id)
+                      ->where('id', $dir, $id)
                       ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
                       ->whereNotIn('profile_id', $filtered)
                       ->whereLocal(true)
@@ -335,7 +335,7 @@ class PublicApiController extends Controller
                         'reblogs_count',
                         'updated_at'
                       )
-            		  ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
+                      ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
                       ->whereNotIn('profile_id', $filtered)
                       ->with('profile', 'hashtags', 'mentions')
                       ->whereLocal(true)
@@ -343,8 +343,8 @@ class PublicApiController extends Controller
                       ->orderBy('id', 'desc')
                       ->simplePaginate($limit);
 
-	        $fractal = new Fractal\Resource\Collection($timeline, new StatusTransformer());
-	        $res = $this->fractal->createData($fractal)->toArray();
+            $fractal = new Fractal\Resource\Collection($timeline, new StatusTransformer());
+            $res = $this->fractal->createData($fractal)->toArray();
         }
 
         return response()->json($res);
@@ -389,12 +389,12 @@ class PublicApiController extends Controller
         });
 
         if($recentFeed == true) {
-			$key = 'profile:home-timeline-cursor:'.$user->id;
-			$ttl = now()->addMinutes(30);
-			$min = Cache::remember($key, $ttl, function() use($pid) {
-        		$res = StatusView::whereProfileId($pid)->orderByDesc('status_id')->first();
-        		return $res ? $res->status_id : null;
-			});
+            $key = 'profile:home-timeline-cursor:'.$user->id;
+            $ttl = now()->addMinutes(30);
+            $min = Cache::remember($key, $ttl, function() use($pid) {
+                $res = StatusView::whereProfileId($pid)->orderByDesc('status_id')->first();
+                return $res ? $res->status_id : null;
+            });
         }
 
         $filtered = $user ? UserFilterService::filters($user->profile_id) : [];
@@ -403,16 +403,16 @@ class PublicApiController extends Controller
         $textOnlyReplies = false;
 
         if(config('exp.top')) {
-	        $textOnlyPosts = (bool) Redis::zscore('pf:tl:top', $pid);
-	        $textOnlyReplies = (bool) Redis::zscore('pf:tl:replies', $pid);
+            $textOnlyPosts = (bool) Redis::zscore('pf:tl:top', $pid);
+            $textOnlyReplies = (bool) Redis::zscore('pf:tl:replies', $pid);
 
-	        if($textOnlyPosts) {
-	        	array_push($types, 'text');
-	        }
+            if($textOnlyPosts) {
+                array_push($types, 'text');
+            }
         }
 
         if(config('exp.polls') == true) {
-        	array_push($types, 'poll');
+            array_push($types, 'poll');
         }
 
         if($min || $max) {
@@ -438,10 +438,10 @@ class PublicApiController extends Controller
                         'created_at',
                         'updated_at'
                       )
-            		  ->whereIn('type', $types)
+                      ->whereIn('type', $types)
                       ->when($textOnlyReplies != true, function($q, $textOnlyReplies) {
-                      	return $q->whereNull('in_reply_to_id');
-                  	  })
+                        return $q->whereNull('in_reply_to_id');
+                      })
                       ->with('profile', 'hashtags', 'mentions')
                       ->where('id', $dir, $id)
                       ->whereIn('profile_id', $following)
@@ -471,10 +471,10 @@ class PublicApiController extends Controller
                         'created_at',
                         'updated_at'
                       )
-            		  ->whereIn('type', $types)
-            		  ->when(!$textOnlyReplies, function($q, $textOnlyReplies) {
-                      	return $q->whereNull('in_reply_to_id');
-                  	  })
+                      ->whereIn('type', $types)
+                      ->when(!$textOnlyReplies, function($q, $textOnlyReplies) {
+                        return $q->whereNull('in_reply_to_id');
+                      })
                       ->with('profile', 'hashtags', 'mentions')
                       ->whereIn('profile_id', $following)
                       ->whereNotIn('profile_id', $filtered)
@@ -527,7 +527,7 @@ class PublicApiController extends Controller
                         'scope',
                         'created_at',
                       )
-            		  ->where('id', $dir, $id)
+                      ->where('id', $dir, $id)
                       ->whereNotIn('profile_id', $filtered)
                       ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
                       ->whereNotNull('uri')
@@ -543,19 +543,19 @@ class PublicApiController extends Controller
                       });
             $res = $timeline->toArray();
         } else {
-	            $timeline = Status::select(
-	                        'id',
-	                        'uri',
-	                        'type',
-	                        'scope',
-	                        'created_at',
-	                      )
-                      	  ->whereNotIn('profile_id', $filtered)
-	            		  ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
-	                      ->whereNotNull('uri')
-	                      ->whereScope('public')
-                      	  ->where('id', '>', $amin)
-	                      ->orderBy('created_at', 'desc')
+                $timeline = Status::select(
+                            'id',
+                            'uri',
+                            'type',
+                            'scope',
+                            'created_at',
+                          )
+                          ->whereNotIn('profile_id', $filtered)
+                          ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
+                          ->whereNotNull('uri')
+                          ->whereScope('public')
+                          ->where('id', '>', $amin)
+                          ->orderBy('created_at', 'desc')
                           ->limit($limit)
                           ->get()
                           ->map(function($s) use ($user) {
@@ -563,7 +563,7 @@ class PublicApiController extends Controller
                                 $status['favourited'] = (bool) LikeService::liked($user->profile_id, $s->id);
                                 return $status;
                           });
-	          	$res = $timeline->toArray();
+                $res = $timeline->toArray();
         }
 
         return response()->json($res);
@@ -605,10 +605,10 @@ class PublicApiController extends Controller
             return response()->json([]);
         }
         if(!$profile->domain && !$profile->user->settings->show_profile_followers) {
-        	return response()->json([]);
+            return response()->json([]);
         }
         if(!$owner && $request->page > 5) {
-        	return [];
+            return [];
         }
 
         $res = Follower::select('id', 'profile_id', 'following_id')
@@ -639,11 +639,11 @@ class PublicApiController extends Controller
         abort_if($owner == false && $profile->is_private == true && !$profile->followedBy(Auth::user()->profile), 404);
 
         if(!$profile->domain) {
-        	abort_if($profile->user->settings->show_profile_following == false && $owner == false, 404);
+            abort_if($profile->user->settings->show_profile_following == false && $owner == false, 404);
         }
 
         if(!$owner && $request->page > 5) {
-        	return [];
+            return [];
         }
 
         if($search) {
@@ -676,14 +676,15 @@ class PublicApiController extends Controller
         ]);
 
         $user = $request->user();
-        $profile = Profile::whereNull('status')->findOrFail($id);
+        $profile = AccountService::get($id);
+        abort_if(!$profile, 404);
 
         $limit = $request->limit ?? 9;
         $max_id = $request->max_id;
         $min_id = $request->min_id;
         $scope = ['photo', 'photo:album', 'video', 'video:album'];
 
-        if($profile->is_private) {
+        if($profile['locked']) {
             if(!$user) {
                 return response()->json([]);
             }
@@ -700,7 +701,7 @@ class PublicApiController extends Controller
                     $following = Follower::whereProfileId($pid)->pluck('following_id');
                     return $following->push($pid)->toArray();
                 });
-                $visibility = true == in_array($profile->id, $following) ? ['public', 'unlisted', 'private'] : ['public', 'unlisted'];
+                $visibility = true == in_array($profile['id'], $following) ? ['public', 'unlisted', 'private'] : ['public', 'unlisted'];
             } else {
                 $visibility = ['public', 'unlisted'];
             }
@@ -708,15 +709,7 @@ class PublicApiController extends Controller
 
         $dir = $min_id ? '>' : '<';
         $id = $min_id ?? $max_id;
-        $res = Status::select(
-            'id',
-            'profile_id',
-            'type',
-            'scope',
-            'local',
-            'created_at'
-          )
-        ->whereProfileId($profile->id)
+        $res = Status::whereProfileId($profile['id'])
         ->whereNull('in_reply_to_id')
         ->whereNull('reblog_of_id')
         ->whereIn('type', $scope)
@@ -726,18 +719,18 @@ class PublicApiController extends Controller
         ->orderByDesc('id')
         ->get()
         ->map(function($s) use($user) {
-        	try {
-            	$status = StatusService::get($s->id, false);
-        	} catch (\Exception $e) {
-        		$status = false;
-        	}
+            try {
+                $status = StatusService::get($s->id, false);
+            } catch (\Exception $e) {
+                $status = false;
+            }
             if($user && $status) {
-            	$status['favourited'] = (bool) LikeService::liked($user->profile_id, $s->id);
+                $status['favourited'] = (bool) LikeService::liked($user->profile_id, $s->id);
             }
             return $status;
         })
         ->filter(function($s) {
-        	return $s;
+            return $s;
         })
         ->values();