src/Controller/EventController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Carbon\Carbon;
  4. use Pimcore\Model\DataObject\Event\Listing as EventListing;
  5. use Pimcore\Model\Document\Listing as PageListing;
  6. use App\Classes\Controller\AbstractFrontController as AbstractFrontController;
  7. use App\Classes\DataMapper\Event\EventListingDataMapper;
  8. use App\Traits\ControllerSidebarLinks;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Knp\Component\Pager\PaginatorInterface;
  12. class EventController extends AbstractFrontController
  13. {
  14.     use ControllerSidebarLinks;
  15.     const SHOW_PER_PAGE 12;
  16.     #[Template()]
  17.     public function indexAction(Request $requestPaginatorInterface $paginator)
  18.     {
  19.         $currentDocument $request->get('contentDocument');
  20.         $elements array_values(array_filter(explode('/'$currentDocument->getPath())));
  21.         $division $elements[0] ?? 'neuroscience';
  22.         $showPastEvents $request->get('show_past_events');
  23.         $this->view->sidebar $this->getSidebarLinks($currentDocument);
  24.         $listing = new EventListing;
  25.         $listing->addConditionParam('o_path LIKE ?'"/Events/{$division}/%");
  26.         $date Carbon::now()->startOfDay()->timestamp;
  27.         if ($showPastEvents) {
  28.             $listing->addConditionParam('DateFrom < ?'$date)
  29.                 ->addConditionParam("IFNULL(DateTo, '') < ?"$date);
  30.         } else {
  31.             $listing->setCondition("(DateFrom >= ? OR IFNULL(DateTo, '') >= ?)", [$date$date]);
  32.         }
  33.         $listing->setOrderKey('DateFrom asc'false);
  34.         $pagination $paginator->paginate(
  35.             $listing,
  36.             $request->query->getInt('page'1),
  37.             self::SHOW_PER_PAGE
  38.         );
  39.         $this->view->paginator $pagination;
  40.         $this->view->paginationVariables $pagination->getPaginationData();
  41.         $this->view->articles EventListingDataMapper::list($pagination->getItems())->all($request);
  42.     }
  43.     protected function getNewsCategory($division)
  44.     {
  45.         $listing = new PageListing();
  46.         $listing->addConditionParam('documents.path LIKE ?'"/{$division}/%");
  47.         $listing->addConditionParam('LOWER(documents.key) = ?''news');
  48.         $listing->setLimit(1);
  49.         $pages $listing->load();
  50.         return array_shift($pages);
  51.     }
  52. }