src/Controller/DefaultController.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Pimcore\Controller\FrontendController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Pimcore\Model\DataObject;
  8. use DestiSuiteBundle\Importer\Accommodation\RequestHelper\AccommodationAvailabilityInternalHelper;
  9. use DestiSuiteBundle\Repository\ExperienceRepository;
  10. class DefaultController extends FrontendController
  11. {
  12.     /**
  13.      * @Template
  14.      * @param Request $request
  15.      * @return array
  16.      */
  17.     public function defaultAction(Request $request)
  18.     {
  19.         return [];
  20.     }
  21.     /**
  22.      * @Template
  23.      * @param Request $request
  24.      * @return array
  25.      */
  26.     public function modalAction(Request $request)
  27.     {
  28.         return [];
  29.     }
  30.     /**
  31.      * @Route("/{_locale}/location_badges_num", name="location_badges_num")
  32.      */
  33.     public function location_badges_numAction(Request $request)
  34.     {
  35.         $entityMap = array();
  36.         $response = array();
  37.         $response_urls = array();
  38.         $multisiteOwner $this->document->getProperty('multisiteOwner');
  39.         
  40.         $types $request->get('types');
  41.         $ids $request->get('ids');
  42.         foreach ($types as $index => $type_current) {
  43.             if (!empty($ids[$index])) {
  44.                 $responseKey $type_current '_' $ids[$index];
  45.                 
  46.                 if (!isset($response$responseKey ])) {
  47.                     // collect ids & entities
  48.                     $locationEntities_current = array();
  49.                     $ids_current explode(','$ids[$index]);
  50.                     foreach ($ids_current as $id_current) {
  51.                         if (!empty($entityMap[$id_current])) {
  52.                             $locationEntities_current[] = $entityMap[$id_current];
  53.                         } else {
  54.                             $entity DataObject\Concrete::getById($id_current);
  55.                             if (!empty($entity)) {
  56.                                 $entityMap[$id_current] = $entity;
  57.                                 $locationEntities_current[] = $entity;
  58.                             }
  59.                         }
  60.                     }
  61.                     $count null;
  62.                     $badgeUrl null;
  63.                     if ($type_current == 'experiences') {
  64.                         $filters = array(
  65.                             'locations' => $locationEntities_current,
  66.                         );
  67.                         $eventIds ExperienceRepository::getNextEntities($request->get('_locale'), $multisiteOwner$filtersnulltrue);
  68.                         $count count($eventIds);
  69.                         // build url
  70.                         if(!empty($this->document->getProperty('ds_experiencesPage'))) {
  71.                             $badgeUrl $this->document->getProperty('ds_experiencesPage')->getFullPath();
  72.                             $badgeUrl .= '?' http_build_query(['locations' => $ids_current]);
  73.                         }
  74.                         
  75.                     } elseif ($type_current == 'accommodations') {
  76.                         $helper = new AccommodationAvailabilityInternalHelper();
  77.                         $helper->language $request->get('_locale');
  78.                         $helper->setCustomLocationFilter($locationEntities_current);
  79.                         $helper->limit null;
  80.                         $helper->search();
  81.                         $count $helper->getNumResult();
  82.                         
  83.                         // build url
  84.                         if(!empty($this->document->getProperty('ds_accommodationPage'))) {
  85.                             $badgeUrl $this->document->getProperty('ds_accommodationPage')->getFullPath();
  86.                             $badgeUrl .= '?' http_build_query([
  87.                                 'no_date' => '1',
  88.                                 'overwrite' => '1',
  89.                                 'accommodationLocation' => $ids_current
  90.                             ]);
  91.                         }
  92.                         
  93.                     }
  94.                     $response$responseKey ] = $count;
  95.                     $response_urls$responseKey ] = $badgeUrl;
  96.                 }
  97.             }
  98.         }
  99.         
  100.         
  101.         return $this->json([
  102.             'success' => true,
  103.             'data' => $response,
  104.             'urls' => $response_urls,
  105.             'types' => $request->get('types'),
  106.             'ids' => $request->get('ids'),
  107.         ]);
  108.     }
  109.     
  110.     public function redirectorAction(Request $request)
  111.     {
  112.         /*
  113.         if ($validLanguages = \Pimcore\Tool::getValidLanguages()) {
  114.             $validLanguages = array_merge(['en'], $validLanguages);
  115.             if ($preferred = $request->getPreferredLanguage($validLanguages)) {
  116.                 $preferred = str_replace('_', '-', strtolower($preferred));
  117.                 return $this->redirect('/' . $preferred, 301);
  118.             }
  119.         }
  120.         */
  121.         return $this->redirect('/it'301);
  122.     }
  123. }