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

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