From fcef8c9a2fa085beff6e6d06f04f6852dc54a933 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 24 Feb 2019 23:22:06 -0700 Subject: [PATCH] Cache private profile id list --- .../Admin/AdminReportController.php | 1 + app/Http/Controllers/PublicApiController.php | 18 ++++++++++++------ .../Controllers/Settings/PrivacySettings.php | 4 ++-- app/Http/Controllers/SettingsController.php | 3 ++- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminReportController.php b/app/Http/Controllers/Admin/AdminReportController.php index 091ebfbb3..2af1b2bee 100644 --- a/app/Http/Controllers/Admin/AdminReportController.php +++ b/app/Http/Controllers/Admin/AdminReportController.php @@ -57,6 +57,7 @@ trait AdminReportController case 'unlist': $item->visibility = 'unlisted'; $item->save(); + Cache::forget('profiles:private'); break; case 'delete': diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php index c3a734f19..2ff955bd0 100644 --- a/app/Http/Controllers/PublicApiController.php +++ b/app/Http/Controllers/PublicApiController.php @@ -223,11 +223,12 @@ class PublicApiController extends Controller // $timeline = Timeline::build()->local(); $pid = Auth::user()->profile->id; - $private = Profile::whereIsPrivate(true) - ->orWhere('unlisted', true) - ->orWhere('status', '!=', null) - ->where('id', '!=', $pid) - ->pluck('id'); + $private = Cache::remember('profiles:private', 1440, function() { + return Profile::whereIsPrivate(true) + ->orWhere('unlisted', true) + ->orWhere('status', '!=', null) + ->pluck('id'); + }); $filters = UserFilter::whereUserId($pid) ->whereFilterableType('App\Profile') ->whereIn('filter_type', ['mute', 'block']) @@ -310,7 +311,12 @@ class PublicApiController extends Controller return $following->push($pid)->toArray(); }); - $private = Profile::whereIsPrivate(true)->orWhereNotNull('status')->where('id', '!=', $pid)->pluck('id'); + $private = Cache::remember('profiles:private', 1440, function() { + return Profile::whereIsPrivate(true) + ->orWhere('unlisted', true) + ->orWhere('status', '!=', null) + ->pluck('id'); + }); $filters = UserFilter::whereUserId($pid) ->whereFilterableType('App\Profile') ->whereIn('filter_type', ['mute', 'block']) diff --git a/app/Http/Controllers/Settings/PrivacySettings.php b/app/Http/Controllers/Settings/PrivacySettings.php index ddb77e434..2df25507c 100644 --- a/app/Http/Controllers/Settings/PrivacySettings.php +++ b/app/Http/Controllers/Settings/PrivacySettings.php @@ -10,8 +10,7 @@ use App\Profile; use App\User; use App\UserFilter; use App\Util\Lexer\PrettyNumber; -use Auth; -use DB; +use Auth, Cache, DB; use Illuminate\Http\Request; trait PrivacySettings @@ -48,6 +47,7 @@ trait PrivacySettings $profile->{$field} = false; $profile->save(); } + Cache::forget('profiles:private'); } elseif ($field == 'crawlable') { if ($form == 'on') { $settings->{$field} = false; diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index cd57a5562..6fdf858e8 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -145,6 +145,7 @@ class SettingsController extends Controller $user->save(); $profile->save(); Auth::logout(); + Cache::forget('profiles:private'); return redirect('/'); } @@ -161,7 +162,6 @@ class SettingsController extends Controller if(config('pixelfed.account_deletion') == false) { abort(404); } - $user = Auth::user(); if($user->is_admin == true) { return abort(400, 'You cannot delete an admin account.'); @@ -174,6 +174,7 @@ class SettingsController extends Controller $profile->delete_after = $ts; $user->save(); $profile->save(); + Cache::forget('profiles:private'); Auth::logout(); return redirect('/'); }