From b6cc9802e4c0bce9ecb7001eac2270c00ab581a2 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 16 Sep 2018 19:45:36 -0600 Subject: [PATCH] Add PrivacySettings Controller --- .../Controllers/Settings/PrivacySettings.php | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 app/Http/Controllers/Settings/PrivacySettings.php diff --git a/app/Http/Controllers/Settings/PrivacySettings.php b/app/Http/Controllers/Settings/PrivacySettings.php new file mode 100644 index 000000000..dd01feb63 --- /dev/null +++ b/app/Http/Controllers/Settings/PrivacySettings.php @@ -0,0 +1,127 @@ +settings; + $is_private = Auth::user()->profile->is_private; + $settings['is_private'] = (bool) $is_private; + + return view('settings.privacy', compact('settings')); + } + + public function privacyStore(Request $request) + { + $settings = Auth::user()->settings; + $profile = Auth::user()->profile; + $fields = [ + 'is_private', + 'crawlable', + 'show_profile_follower_count', + 'show_profile_following_count', + ]; + foreach ($fields as $field) { + $form = $request->input($field); + if ($field == 'is_private') { + if ($form == 'on') { + $profile->{$field} = true; + $settings->show_guests = false; + $settings->show_discover = false; + $profile->save(); + } else { + $profile->{$field} = false; + $profile->save(); + } + } elseif ($field == 'crawlable') { + if ($form == 'on') { + $settings->{$field} = false; + } else { + $settings->{$field} = true; + } + } else { + if ($form == 'on') { + $settings->{$field} = true; + } else { + $settings->{$field} = false; + } + } + $settings->save(); + } + + return redirect(route('settings.privacy'))->with('status', 'Settings successfully updated!'); + } + + public function mutedUsers() + { + $pid = Auth::user()->profile->id; + $ids = (new UserFilter())->mutedUserIds($pid); + $users = Profile::whereIn('id', $ids)->simplePaginate(15); + return view('settings.privacy.muted', compact('users')); + } + + public function mutedUsersUpdate(Request $request) + { + $this->validate($request, [ + 'profile_id' => 'required|integer|min:1' + ]); + $fid = $request->input('profile_id'); + $pid = Auth::user()->profile->id; + DB::transaction(function () use ($fid, $pid) { + $filter = UserFilter::whereUserId($pid) + ->whereFilterableId($fid) + ->whereFilterableType('App\Profile') + ->whereFilterType('mute') + ->firstOrFail(); + $filter->delete(); + }); + return redirect()->back(); + } + + public function blockedUsers() + { + $pid = Auth::user()->profile->id; + $ids = (new UserFilter())->blockedUserIds($pid); + $users = Profile::whereIn('id', $ids)->simplePaginate(15); + return view('settings.privacy.blocked', compact('users')); + } + + + public function blockedUsersUpdate(Request $request) + { + $this->validate($request, [ + 'profile_id' => 'required|integer|min:1' + ]); + $fid = $request->input('profile_id'); + $pid = Auth::user()->profile->id; + DB::transaction(function () use ($fid, $pid) { + $filter = UserFilter::whereUserId($pid) + ->whereFilterableId($fid) + ->whereFilterableType('App\Profile') + ->whereFilterType('block') + ->firstOrFail(); + $filter->delete(); + }); + return redirect()->back(); + } + + public function blockedInstances() + { + $settings = Auth::user()->settings; + return view('settings.privacy.blocked-instances'); + } +} \ No newline at end of file