src/Controller/VideoController.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Knp\Component\Pager\PaginatorInterface;
  4. use Pimcore\Model\DataObject\Video\Listing as VideoListing;
  5. use Pimcore\Model\Document\Listing as PageListing;
  6. use App\Classes\Controller\AbstractFrontController as AbstractFrontController;
  7. use App\Classes\DataMapper\Video\VideoListingDataMapper;
  8. use App\Traits\ControllerSidebarLinks;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Zend\Paginator\Paginator;
  12. class VideoController extends AbstractFrontController
  13. {
  14.     use ControllerSidebarLinks;
  15.     const SHOW_PER_PAGE 6;
  16.     public function __construct(private PaginatorInterface $paginator)
  17.     {
  18.     }
  19.     #[Template()]
  20.     public function indexAction(Request $request)
  21.     {
  22.         $currentDocument $request->get('contentDocument');
  23.         $elements array_values(array_filter(explode('/'$currentDocument->getPath())));
  24.         $division $elements[0] ?? 'neuroscience';
  25.         $this->view->sidebar $this->getSidebarLinks($currentDocument);
  26.         $listing = new VideoListing;
  27.         $listing->addConditionParam('o_path LIKE ?'"/Video/{$division}/%");
  28.         $paginator $this->paginator->paginate(
  29.             $listing,
  30.             $request->get('page'1),
  31.             self::SHOW_PER_PAGE
  32.         );
  33.         $this->view->paginator $paginator;
  34.         $this->view->paginationVariables $paginator->getPaginationData();
  35.         $this->view->articles VideoListingDataMapper::list($paginator->getItems())->all($request);
  36.     }
  37.     protected function getNewsCategory($division)
  38.     {
  39.         $listing = new PageListing();
  40.         $listing->addConditionParam('documents.path LIKE ?'"/{$division}/%");
  41.         $listing->addConditionParam('LOWER(documents.key) = ?''news');
  42.         $listing->setLimit(1);
  43.         $pages $listing->load();
  44.         return array_shift($pages);
  45.     }
  46. }