src/Pumukit/WebTVBundle/Controller/SeriesController.php line 40

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Pumukit\WebTVBundle\Controller;
  4. use Doctrine\ODM\MongoDB\DocumentManager;
  5. use Pagerfanta\Pagerfanta;
  6. use Pumukit\CoreBundle\Controller\WebTVControllerInterface;
  7. use Pumukit\CoreBundle\Services\PaginationService;
  8. use Pumukit\SchemaBundle\Document\MultimediaObject;
  9. use Pumukit\SchemaBundle\Document\Series;
  10. use Pumukit\WebTVBundle\Services\BreadcrumbsService;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class SeriesController extends AbstractController implements WebTVControllerInterface
  15. {
  16.     protected $documentManager;
  17.     protected $breadcrumbsService;
  18.     protected $paginationService;
  19.     protected $limitObjsSeries;
  20.     public function __construct(
  21.         DocumentManager $documentManager,
  22.         BreadcrumbsService $breadcrumbsService,
  23.         PaginationService $paginationService,
  24.         $limitObjsSeries
  25.     ) {
  26.         $this->documentManager $documentManager;
  27.         $this->breadcrumbsService $breadcrumbsService;
  28.         $this->paginationService $paginationService;
  29.         $this->limitObjsSeries $limitObjsSeries;
  30.     }
  31.     /**
  32.      * @Route("/series/{id}", name="pumukit_webtv_series_index")
  33.      */
  34.     public function indexAction(Request $requestSeries $series)
  35.     {
  36.         $mmobjRepo $this->documentManager->getRepository(MultimediaObject::class);
  37.         $objects $mmobjRepo->createBuilderWithSeriesAndStatus($series, [MultimediaObject::STATUS_PUBLISHED], ['rank' => 1]);
  38.         $pager $this->createPager($objects$request->query->get('page'1));
  39.         $this->updateBreadcrumbs($series);
  40.         return $this->render('@PumukitWebTV/Series/template.html.twig', [
  41.             'series' => $series,
  42.             'multimediaObjects' => $pager,
  43.         ]);
  44.     }
  45.     /**
  46.      * @Route("/series/magic/{secret}", name="pumukit_webtv_series_magicindex", defaults={"show_hide"=true, "broadcast"=false})
  47.      */
  48.     public function magicIndexAction(Request $requestSeries $series)
  49.     {
  50.         $request->attributes->set('noindex'true);
  51.         $objects $this->documentManager->getRepository(MultimediaObject::class)->createBuilderWithSeries(
  52.             $series,
  53.             ['rank' => 1]
  54.         );
  55.         $pager $this->createPager($objects$request->query->get('page'1));
  56.         $this->updateBreadcrumbs($series);
  57.         return $this->render('@PumukitWebTV/Series/template.html.twig', [
  58.             'series' => $series,
  59.             'multimediaObjects' => $pager,
  60.             'magic_url' => true,
  61.         ]);
  62.     }
  63.     private function updateBreadcrumbs(Series $series): void
  64.     {
  65.         $this->breadcrumbsService->addSeries($series);
  66.     }
  67.     private function createPager($objects$page): Pagerfanta
  68.     {
  69.         return $this->paginationService->createDoctrineODMMongoDBAdapter($objects, (int) $page$this->limitObjsSeries);
  70.     }
  71. }