Procházet zdrojové kódy

Update SettingsController, add export endpoints

Daniel Supernault před 6 roky
rodič
revize
0691961af0
1 změnil soubory, kde provedl 47 přidání a 1 odebrání
  1. 47 1
      app/Http/Controllers/SettingsController.php

+ 47 - 1
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');