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

Размер файла: 2.19Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Controllers\Load;
  6.  
  7. use App\Controllers\BaseController;
  8. use App\Models\Down;
  9. use App\Models\Load;
  10. use Illuminate\Http\Request;
  11.  
  12. class LoadController extends BaseController
  13. {
  14. /**
  15. * Главная страница
  16. *
  17. * @return string
  18. */
  19. public function index(): string
  20. {
  21. $categories = Load::query()
  22. ->where('parent_id', 0)
  23. ->with('children', 'new', 'children.new')
  24. ->orderBy('sort')
  25. ->get();
  26.  
  27. if ($categories->isEmpty()) {
  28. abort('default', __('loads.empty_loads'));
  29. }
  30.  
  31. return view('loads/index', compact('categories'));
  32. }
  33.  
  34. /**
  35. * Список файлов в категории
  36. *
  37. * @param int $id
  38. * @param Request $request
  39. *
  40. * @return string
  41. */
  42. public function load(int $id, Request $request): string
  43. {
  44. /** @var Load $category */
  45. $category = Load::query()->with('parent')->find($id);
  46.  
  47. if (! $category) {
  48. abort(404, __('loads.load_not_exist'));
  49. }
  50.  
  51. $sort = check($request->input('sort', 'time'));
  52.  
  53. switch ($sort) {
  54. case 'rated':
  55. $order = 'rated';
  56. break;
  57. case 'comments':
  58. $order = 'count_comments';
  59. break;
  60. case 'loads':
  61. $order = 'loads';
  62. break;
  63. default:
  64. $order = 'created_at';
  65. }
  66.  
  67. $downs = Down::query()
  68. ->where('category_id', $category->id)
  69. ->where('active', 1)
  70. ->orderByDesc($order)
  71. ->paginate(setting('downlist'))
  72. ->appends(['sort' => $sort]);
  73.  
  74. return view('loads/load', compact('category', 'downs', 'order'));
  75. }
  76.  
  77. /**
  78. * RSS всех файлов
  79. *
  80. * @return string
  81. */
  82. public function rss(): string
  83. {
  84. $downs = Down::query()
  85. ->orderByDesc('created_at')
  86. ->limit(15)
  87. ->get();
  88.  
  89. if ($downs->isEmpty()) {
  90. abort('default', __('loads.downs_not_found'));
  91. }
  92.  
  93. return view('loads/rss', compact('downs'));
  94. }
  95. }