From 0691961af060580b6f692563a248aa71e426aab0 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 23 Sep 2018 16:28:35 -0600 Subject: [PATCH] Update SettingsController, add export endpoints --- app/Http/Controllers/SettingsController.php | 48 ++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 9b6c85f73..f82277782 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -3,9 +3,11 @@ namespace App\Http\Controllers; use App\AccountLog; - +use App\Following; +use App\UserFilter; use Auth; use DB; +use Cache; use Illuminate\Http\Request; use App\Http\Controllers\Settings\{ HomeSettings, @@ -69,6 +71,50 @@ class SettingsController extends Controller return view('settings.dataexport'); } + public function exportFollowing() + { + $data = Cache::remember('account:export:profile:following:'.Auth::user()->profile->id, 1440, function() { + return Auth::user()->profile->following()->get()->map(function($i) { + return $i->url(); + }); + }); + return response()->streamDownload(function () use($data) { + echo $data; + }, 'following.json'); + } + + public function exportFollowers() + { + $data = Cache::remember('account:export:profile:followers:'.Auth::user()->profile->id, 1440, function() { + return Auth::user()->profile->followers()->get()->map(function($i) { + return $i->url(); + }); + }); + return response()->streamDownload(function () use($data) { + echo $data; + }, 'followers.json'); + } + + public function exportMuteBlockList() + { + $profile = Auth::user()->profile; + $exists = UserFilter::select('id') + ->whereUserId($profile->id) + ->exists(); + if(!$exists) { + return redirect()->back(); + } + $data = Cache::remember('account:export:profile:muteblocklist:'.Auth::user()->profile->id, 1440, function() use($profile) { + return json_encode([ + 'muted' => $profile->mutedProfileUrls(), + 'blocked' => $profile->blockedProfileUrls() + ], JSON_PRETTY_PRINT); + }); + return response()->streamDownload(function () use($data) { + echo $data; + }, 'muted-and-blocked-accounts.json'); + } + public function dataImport() { return view('settings.import.home');