LabsSettings.php 2.0 KB

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