DashboardController.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. const PER_PAGE = 21;
  9. const PER_PAGE_ADMIN = 25;
  10. /**
  11. * @param Request $request
  12. * @param Response $response
  13. * @return Response
  14. */
  15. public function redirects(Request $request, Response $response): Response
  16. {
  17. if ($request->getParam('afterInstall') !== null && is_dir('install')) {
  18. $this->session->alert(lang('installed'), 'success');
  19. removeDirectory('install');
  20. }
  21. return redirect($response, 'home');
  22. }
  23. /**
  24. * @param Request $request
  25. * @param Response $response
  26. * @param $args
  27. * @return Response
  28. */
  29. public function home(Request $request, Response $response, $args): Response
  30. {
  31. $page = isset($args['page']) ? (int)$args['page'] : 0;
  32. $page = max(0, --$page);
  33. $query = new MediaQuery($this->database, $this->session->get('admin', false));
  34. $query->orderBy(MediaQuery::ORDER_NAME)
  35. ->withUserId($this->session->get('user_id'))
  36. ->run($page);
  37. return $this->view->render(
  38. $response,
  39. ($this->session->get('admin', false) && $this->session->get('gallery_view', true)) ? 'dashboard/admin.twig' : 'dashboard/home.twig',
  40. [
  41. 'medias' => $query->getMedia(),
  42. 'next' => $page < floor($query->getPages()),
  43. 'previous' => $page >= 1,
  44. 'current_page' => ++$page,
  45. ]
  46. );
  47. }
  48. /**
  49. * @param Request $request
  50. * @param Response $response
  51. * @param $args
  52. * @return Response
  53. */
  54. public function switchView(Request $request, Response $response, $args): Response
  55. {
  56. $this->session->set('gallery_view', !$this->session->get('gallery_view', true));
  57. return redirect($response, 'home');
  58. }
  59. }