Просмотр файла app/Http/Controllers/Load/ActiveController.php

Размер файла: 2.15Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers\Load;
  6.  
  7. use App\Http\Controllers\Controller;
  8. use App\Models\Comment;
  9. use App\Models\Down;
  10. use App\Models\User;
  11. use Illuminate\Http\Request;
  12. use Illuminate\View\View;
  13.  
  14. class ActiveController extends Controller
  15. {
  16. /**
  17. * @var User
  18. */
  19. public $user;
  20.  
  21. /**
  22. * Конструктор
  23. */
  24. public function __construct()
  25. {
  26. $this->middleware(function ($request, $next) {
  27. $login = $request->input('user', getUser('login'));
  28. $this->user = getUserByLogin($login);
  29.  
  30. if (! $this->user) {
  31. abort(404, __('validator.user'));
  32. }
  33.  
  34. return $next($request);
  35. });
  36. }
  37.  
  38. /**
  39. * Мои файлы
  40. *
  41. * @param Request $request
  42. *
  43. * @return View
  44. */
  45. public function files(Request $request): View
  46. {
  47. $active = int($request->input('active', 1));
  48. $user = $this->user;
  49.  
  50. if (getUser() && getUser('id') !== $user->id) {
  51. $active = 1;
  52. }
  53.  
  54. $downs = Down::query()
  55. ->where('active', $active)
  56. ->where('user_id', $user->id)
  57. ->orderByDesc('created_at')
  58. ->with('category', 'user')
  59. ->paginate(setting('downlist'))
  60. ->appends([
  61. 'user' => $user->login,
  62. 'active' => $active,
  63. ]);
  64.  
  65. return view('loads/active_files', compact('downs', 'user', 'active'));
  66. }
  67.  
  68. /**
  69. * Мои комментарии
  70. *
  71. * @return View
  72. */
  73. public function comments(): View
  74. {
  75. $user = $this->user;
  76.  
  77. $comments = Comment::query()
  78. ->select('comments.*', 'title', 'count_comments')
  79. ->where('relate_type', Down::$morphName)
  80. ->where('comments.user_id', $user->id)
  81. ->leftJoin('downs', 'comments.relate_id', 'downs.id')
  82. ->orderByDesc('comments.created_at')
  83. ->with('user')
  84. ->paginate(setting('comments_per_page'))
  85. ->appends(['user' => $user->login]);
  86.  
  87. return view('loads/active_comments', compact('comments', 'user'));
  88. }
  89. }