LabsSettings.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace App\Http\Controllers\Settings;
  3. use Illuminate\Http\Request;
  4. use Cookie, Redis;
  5. use App\Services\SuggestionService;
  6. trait LabsSettings {
  7. public function __constructor()
  8. {
  9. $this->middleware('auth');
  10. }
  11. public function labs(Request $request)
  12. {
  13. $profile = $request->user()->profile;
  14. return view('settings.labs', compact('profile'));
  15. }
  16. public function labsStore(Request $request)
  17. {
  18. $this->validate($request, [
  19. 'profile_layout' => 'nullable',
  20. 'dark_mode' => 'nullable',
  21. 'profile_suggestions' => 'nullable',
  22. 'moment_bg' => 'nullable'
  23. ]);
  24. $changes = false;
  25. $profile = $request->user()->profile;
  26. $cookie = Cookie::forget('dark-mode');
  27. if($request->has('dark_mode')) {
  28. if($request->dark_mode == 'on') {
  29. $cookie = Cookie::make('dark-mode', true, 43800);
  30. }
  31. }
  32. if($request->has('profile_layout')) {
  33. if($profile->profile_layout != 'moment') {
  34. $profile->profile_layout = 'moment';
  35. $changes = true;
  36. }
  37. } else {
  38. $profile->profile_layout = null;
  39. $changes = true;
  40. }
  41. if($request->has('profile_suggestions')) {
  42. if($profile->is_suggestable == false) {
  43. $profile->is_suggestable = true;
  44. $changes = true;
  45. if($profile->statuses->count() > 0) {
  46. SuggestionService::set($profile->id);
  47. }
  48. }
  49. } else {
  50. $profile->is_suggestable = false;
  51. $changes = true;
  52. SuggestionService::del($profile->id);
  53. }
  54. if($request->has('moment_bg') && $profile->profile_layout == 'moment') {
  55. $bg = in_array($request->input('moment_bg'), $this->momentBackgrounds()) ? $request->input('moment_bg') : 'default';
  56. $profile->header_bg = $bg;
  57. $changes = true;
  58. }
  59. if($changes == true) {
  60. $profile->save();
  61. }
  62. return redirect(route('settings.labs'))
  63. ->with('status', 'Labs preferences successfully updated!')
  64. ->cookie($cookie);
  65. }
  66. protected function momentBackgrounds()
  67. {
  68. return [
  69. 'default',
  70. 'azure',
  71. 'passion',
  72. 'reef',
  73. 'lush',
  74. 'neon',
  75. 'flare',
  76. 'morning',
  77. 'tranquil',
  78. 'mauve',
  79. 'argon',
  80. 'royal'
  81. ];
  82. }
  83. }