DashboardController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Controllers;
  3. use App\Database\Queries\MediaQuery;
  4. use Slim\Http\Request;
  5. use Slim\Http\Response;
  6. class DashboardController extends Controller
  7. {
  8. /**
  9. * @param Request $request
  10. * @param Response $response
  11. * @return Response
  12. */
  13. public function redirects(Request $request, Response $response): Response
  14. {
  15. if ($request->getParam('afterInstall') !== null && is_dir('install')) {
  16. $this->session->alert(lang('installed'), 'success');
  17. removeDirectory('install');
  18. }
  19. return redirect($response, 'home');
  20. }
  21. /**
  22. * @param Request $request
  23. * @param Response $response
  24. * @param $args
  25. * @return Response
  26. */
  27. public function home(Request $request, Response $response, $args): Response
  28. {
  29. $page = isset($args['page']) ? (int)$args['page'] : 0;
  30. $page = max(0, --$page);
  31. $query = new MediaQuery($this->database, $this->session->get('admin', false));
  32. switch ($request->getParam('sort', 'time')) {
  33. case 'size':
  34. $order = MediaQuery::ORDER_SIZE;
  35. break;
  36. case 'name':
  37. $order = MediaQuery::ORDER_NAME;
  38. break;
  39. default:
  40. case 'time':
  41. $order = MediaQuery::ORDER_TIME;
  42. break;
  43. }
  44. $query->orderBy($order, $request->getParam('order', 'DESC'))
  45. ->withUserId($this->session->get('user_id'))
  46. ->search($request->getParam('search', null))
  47. ->run($page);
  48. return $this->view->render(
  49. $response,
  50. ($this->session->get('admin', false) && $this->session->get('gallery_view', true)) ? 'dashboard/admin.twig' : 'dashboard/home.twig',
  51. [
  52. 'medias' => $query->getMedia(),
  53. 'next' => $page < floor($query->getPages()),
  54. 'previous' => $page >= 1,
  55. 'current_page' => ++$page,
  56. ]
  57. );
  58. }
  59. /**
  60. * @param Request $request
  61. * @param Response $response
  62. * @param $args
  63. * @return Response
  64. */
  65. public function switchView(Request $request, Response $response, $args): Response
  66. {
  67. $this->session->set('gallery_view', !$this->session->get('gallery_view', true));
  68. return redirect($response, 'home');
  69. }
  70. }