src/Controller/Frontend/VideoController.php line 18

  1. <?php
  2. namespace App\Controller\Frontend;
  3. use App\Paging;
  4. use App\Repository\ActorRepository;
  5. use App\Repository\StudioRepository;
  6. use App\Repository\TagCategoryRepository;
  7. use App\Repository\TagRepository;
  8. use App\Repository\VideoRepository;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class VideoController extends AbstractController
  13. {
  14.     #[Route('/'name'video.index')]
  15.     public function index(
  16.         Request $request,
  17.         VideoRepository $repo,
  18.         StudioRepository $repoStudio,
  19.         ActorRepository $repoActor,
  20.         TagCategoryRepository $repoTagCat,
  21.         TagRepository $repoTag,
  22.     )
  23.     {
  24.         $page = (int)$request->query->get('page');
  25.         if ($page === 0) {
  26.             $page 1;
  27.         }
  28.         $search           $request->query->get('search');
  29.         $selectedStudioId $request->query->get('studio');
  30.         $selectedActorId  $request->query->get('actor');
  31.         $selectedTagIds   $request->query->get('tags');
  32.         $selectedTagIds = ($selectedTagIds) ? explode(','$selectedTagIds) : [];
  33.         $query $repo->getQueryAllWithImage($selectedStudioId$selectedActorId$selectedTagIds$search);
  34.         $count $repo->countWithNativeQuery($query);
  35.         $paging = new Paging($page9);
  36.         $paging->setNumRecords($count);
  37.         $query->setSQL($query->getSQL() . $paging->GetSQL());
  38.         $videos $query->getResult();
  39.         $selectedActors = ($selectedActorId) ? $repoActor->findSelected([$selectedActorId]) : [];
  40.         $selectedStudios = ($selectedStudioId) ? $repoStudio->findSelected([$selectedStudioId]) : [];
  41.         $urlNextPage null;
  42.         if ($paging->getNextPage()) {
  43.             $urlNextPage $this->generateUrl('video.index');
  44.             $urlNextPage .= '?page=' $paging->getNextPage();
  45.             if ($selectedStudioId) {
  46.                 $urlNextPage .= '&studio='.$selectedStudioId;
  47.             }
  48.             if ($selectedActorId) {
  49.                 $urlNextPage .= '&actor='.$selectedActorId;
  50.             }
  51.             if (count($selectedTagIds)) {
  52.                 $urlNextPage .= '&tags='.implode(','$selectedTagIds);
  53.             }
  54.             if ($search) {
  55.                 $urlNextPage .= '&search='.urlencode($search);
  56.             }
  57.         }
  58.         $categories $repoTagCat->findAllIndexed();
  59.         $tags $repoTag->findAllGroupedByCategory();
  60. // echo '<pre>';
  61. //dump($categories);
  62. //dd($tags);
  63.         return $this->render('Frontend/Video/Index.twig', [
  64.             'videos'  => $videos,
  65.             'selectedActors' => $selectedActors,
  66.             'selectedStudios' => $selectedStudios,
  67.             'selectedTagIds' => $selectedTagIds,
  68.             'search' => $search,
  69.             'paging' => $paging,
  70.             'url_next_page' => $urlNextPage,
  71.             'categories' => $categories,
  72.             'tags' => $tags,
  73.         ]);
  74.     }
  75.     #[Route('/video/{id}'name'video.show')]
  76.     public function show($idVideoRepository $repo)
  77.     {
  78.         $video $repo->find($id);
  79.         return $this->render('Frontend/Video/Show.twig', [
  80.             'video' => $video,
  81.         ]);
  82.     }
  83. }