From bef959f451320f11e9e905a5baf4961db22627b1 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 7 Oct 2021 03:30:23 -0600 Subject: [PATCH] Update PublicApiController, use AccountService in accountStatuses method --- app/Http/Controllers/PublicApiController.php | 149 +++++++++---------- 1 file changed, 71 insertions(+), 78 deletions(-) diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php index bd96e774e..64c37513e 100644 --- a/app/Http/Controllers/PublicApiController.php +++ b/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();