<?php
namespace App\Controller;
use Knp\Component\Pager\PaginatorInterface;
use Pimcore\Model\DataObject\Video\Listing as VideoListing;
use Pimcore\Model\Document\Listing as PageListing;
use App\Classes\Controller\AbstractFrontController as AbstractFrontController;
use App\Classes\DataMapper\Video\VideoListingDataMapper;
use App\Traits\ControllerSidebarLinks;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Zend\Paginator\Paginator;
class VideoController extends AbstractFrontController
{
use ControllerSidebarLinks;
const SHOW_PER_PAGE = 6;
public function __construct(private PaginatorInterface $paginator)
{
}
#[Template()]
public function indexAction(Request $request)
{
$currentDocument = $request->get('contentDocument');
$elements = array_values(array_filter(explode('/', $currentDocument->getPath())));
$division = $elements[0] ?? 'neuroscience';
$this->view->sidebar = $this->getSidebarLinks($currentDocument);
$listing = new VideoListing;
$listing->addConditionParam('o_path LIKE ?', "/Video/{$division}/%");
$paginator = $this->paginator->paginate(
$listing,
$request->get('page', 1),
self::SHOW_PER_PAGE
);
$this->view->paginator = $paginator;
$this->view->paginationVariables = $paginator->getPaginationData();
$this->view->articles = VideoListingDataMapper::list($paginator->getItems())->all($request);
}
protected function getNewsCategory($division)
{
$listing = new PageListing();
$listing->addConditionParam('documents.path LIKE ?', "/{$division}/%");
$listing->addConditionParam('LOWER(documents.key) = ?', 'news');
$listing->setLimit(1);
$pages = $listing->load();
return array_shift($pages);
}
}