src/Aviatur/BlogBundle/Controller/DefaultController.php line 531

Open in your IDE?
  1. <?php
  2. namespace Aviatur\BlogBundle\Controller;
  3. use Aviatur\FormBundle\Entity\Newsletter;
  4. use Aviatur\GeneralBundle\Services\AviaturErrorHandler;
  5. use Aviatur\TwigBundle\Services\TwigFolder;
  6. use Knp\Component\Pager\PaginatorInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  11. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  12. class DefaultController extends AbstractController
  13. {
  14.     public function indexAction(Request $requestSessionInterface $sessionTwigFolder $twigFolderAuthorizationCheckerInterface $authorizationCheckerAviaturErrorHandler $errorHandlerPaginatorInterface $paginator$page$active)
  15.     {
  16.         $em $this->getDoctrine()->getManager();
  17.         $fullRequest $request;
  18.         $routeParams $fullRequest->attributes->get('_route_params');
  19.         $requestUrl $this->generateUrl($fullRequest->attributes->get('_route'), $routeParams);
  20.         $agencyId $session->get('agencyId');
  21.         $agency $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->find($agencyId);
  22.         $agencyFolder $twigFolder->twigFlux();
  23.         $homePromoList $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromoList::class)->findOneBy(['type' => 'slider''agency' => $agency]);
  24.         $homePromos $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromo::class)->findByHomePromoList($homePromoList, ['date' => 'DESC']);
  25.         $homePromoListMain $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromoList::class)->findOneBy(['type' => 'main_slider''agency' => $agency]);
  26.         $homePromosMain $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromo::class)->findByHomePromoList($homePromoListMain);
  27.         $query $em->createQuery('SELECT a FROM AviaturContentBundle:Content a WHERE a.isactive = 1 AND (a.agency = :agency OR a.agency IS NULL) ORDER BY a.creationdate DESC');
  28.         $query $query->setParameter('agency'$agency);
  29.         $queryIn $em->createQuery('SELECT a FROM AviaturContentBundle:Content a WHERE a.isactive = 0 AND (a.agency = :agency OR a.agency IS NULL) ORDER BY a.creationdate DESC');
  30.         $queryIn $queryIn->setParameter('agency'$agency);
  31.         if ('activo' == $active) {
  32.             $articulos $query->getResult();
  33.         } elseif ('inactivo' == $active) {
  34.             if ($authorizationChecker->isGranted('ROLE_AVIATUR_ADMIN_ADMIN_PROMO_PRODUCT_CREATE_'.$agencyId) || $authorizationChecker->isGranted('ROLE_AVIATUR_ADMIN_ADMIN_PROMO_PRODUCT_EDIT_'.$agencyId) || $authorizationChecker->isGranted('ROLE_SUPER_ADMIN')) {
  35.                 $articulos $queryIn->getResult();
  36.             } else {
  37.                 return $this->redirect($twigFolder->pathWithLocale('aviatur_general_homepage'));
  38.             }
  39.         }
  40.         $actualArticles = [];
  41.         foreach ($articulos as $articulo) {
  42.             $description json_decode($articulo->getDescription(), true);
  43.             if ($description && is_array($description) && 'general' == $description['type']) {
  44.                 $actualArticles[] = $articulo;
  45.             }
  46.         }
  47.         if (empty($actualArticles)) {
  48.             return $this->redirect($errorHandler->errorRedirectNoEmail('/''''No existen contenidos para esta agencia.'));
  49.         }
  50.         $cantdatos count($actualArticles);
  51.         $cantRegis 6;
  52.         $totalRegi ceil($cantdatos $cantRegis);
  53.         $pagination $paginator->paginate($actualArticles$fullRequest->query->get('page'$page), $cantRegis);
  54.         $blog = new Newsletter();
  55.         $blogForm $this->createForm(\Aviatur\FormBundle\Form\BlogType::class, $blog);
  56.         return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Blog/Default/index.html.twig'), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalRegi'ajaxUrl' => $requestUrl'slider' => $homePromos'contenidos' => $homePromosMain'blog_form' => $blogForm->createView()]);
  57.     }
  58.     public function indexDestinosAction(Request $requestSessionInterface $sessionTwigFolder $twigFolder)
  59.     {
  60.         $em $this->getDoctrine()->getManager();
  61.         $fullRequest $request;
  62.         $routeParams $fullRequest->attributes->get('_route_params');
  63.         $requestUrl $this->generateUrl($fullRequest->attributes->get('_route'), $routeParams);
  64.         $agencyId $session->get('agencyId');
  65.         $agency $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->find($agencyId);
  66.         $agencyFolder $twigFolder->twigFlux();
  67.         $blog = new Newsletter();
  68.         $blogForm $this->createForm(\Aviatur\FormBundle\Form\BlogType::class, $blog);
  69.         return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Blog/Default/destinos.html.twig'), ['blog_form' => $blogForm->createView()]);
  70.     }
  71.     public function listAction(Request $requestSessionInterface $sessionTwigFolder $twigFolderAviaturErrorHandler $errorHandlerPaginatorInterface $paginator$page$active$type)
  72.     {
  73.         $em $this->getDoctrine()->getManager();
  74.         $fullRequest $request;
  75.         $routeParams $fullRequest->attributes->get('_route_params');
  76.         $requestUrl $this->generateUrl($fullRequest->attributes->get('_route'), $routeParams);
  77.         $agencyId $session->get('agencyId');
  78.         $agency $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->find($agencyId);
  79.         $agencyFolder $twigFolder->twigFlux();
  80.         $blog = new Newsletter();
  81.         $blogForm $this->createForm(\Aviatur\FormBundle\Form\BlogType::class, $blog);
  82.         if ($fullRequest->isXmlHttpRequest()) {
  83.             $query $em->createQuery('SELECT a FROM AviaturContentBundle:Content a WHERE a.isactive = 1 AND (a.agency = :agency OR a.agency IS NULL) ORDER BY a.publicationenddate DESC');
  84.             $query $query->setParameter('agency'$agency);
  85.             $queryIn $em->createQuery('SELECT a FROM AviaturContentBundle:Content a WHERE a.isactive = 0 AND (a.agency = :agency OR a.agency IS NULL) ORDER BY a.publicationenddate DESC');
  86.             $queryIn $queryIn->setParameter('agency'$agency);
  87.             if (isset($routeParams['content'])) {
  88.                 $path '/Blog/Default/Ajaxindex_destinos.html.twig';
  89.             } else {
  90.                 $path '/Blog/Default/Ajaxindex_contenidos.html.twig';
  91.             }
  92.             $urlReturn '@AviaturTwig/'.$agencyFolder.$path;
  93.             $colombia = [];
  94.             $america = [];
  95.             $oceania = [];
  96.             $europa = [];
  97.             $africa = [];
  98.             $asia = [];
  99.             $tipsArticles = [];
  100.             $sostenibilidadArticles = [];
  101.             $gastronomiaArticles = [];
  102.             $experienciasArticles = [];
  103.             $actualArticles = [];
  104.             $cantRegis 9;
  105.             if ('activo' == $active) {
  106.                 $articulos $query->getResult();
  107.             }
  108.             if (isset($routeParams['content'])) {
  109.                 if ('general' == $type) {
  110.                     foreach ($articulos as $articulo) {
  111.                         $description json_decode($articulo->getDescription(), true);
  112.                         if ($description && is_array($description)) {
  113.                             if ('destinos-blog' == $description['type']) {
  114.                                 $actualArticles[] = $articulo;
  115.                             }
  116.                         }
  117.                     }
  118.                     if (empty($actualArticles)) {
  119.                         return $this->redirect($errorHandler->errorRedirectNoEmail('/''''No existen contenidos para esta agencia.'));
  120.                     }
  121.                     $cantDestinos count($actualArticles);
  122.                     $totalDestinos ceil($cantDestinos $cantRegis);
  123.                     $pagination $paginator->paginate($actualArticles$fullRequest->query->get('page'$page), $cantRegis);
  124.                     return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinos'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  125.                 } else {
  126.                     foreach ($articulos as $articulo) {
  127.                         $description json_decode($articulo->getDescription(), true);
  128.                         if ($description && is_array($description)) {
  129.                             if ('destinos-blog' == $description['type'] && 'colombia' == $description['type2']) {
  130.                                 $colombia[] = $articulo;
  131.                             }
  132.                             if ('destinos-blog' == $description['type'] && 'america' == $description['type2']) {
  133.                                 $america[] = $articulo;
  134.                             }
  135.                             if ('destinos-blog' == $description['type'] && 'oceania' == $description['type2']) {
  136.                                 $oceania[] = $articulo;
  137.                             }
  138.                             if ('destinos-blog' == $description['type'] && 'europa' == $description['type2']) {
  139.                                 $europa[] = $articulo;
  140.                             }
  141.                             if ('destinos-blog' == $description['type'] && 'africa' == $description['type2']) {
  142.                                 $africa[] = $articulo;
  143.                             }
  144.                             if ('destinos-blog' == $description['type'] && 'asia' == $description['type2']) {
  145.                                 $asia[] = $articulo;
  146.                             }
  147.                         }
  148.                     }
  149.                     if (empty($colombia) && empty($america) && empty($oceania) && empty($europa) && empty($africa) && empty($asia)) {
  150.                         return $this->redirect($errorHandler->errorRedirectNoEmail('/''''No existen contenidos para esta agencia.'));
  151.                     }
  152.                     
  153.                     /* Redireccion articulos destinos y aerolineas */
  154.                     if ('colombia' == $type) {
  155.                         $cantDestinosC count($colombia);
  156.                         $totalDestinosC ceil($cantDestinosC $cantRegis);
  157.                         $pagination $paginator->paginate($colombia$fullRequest->query->get('page'$page), $cantRegis);
  158.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosC'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  159.                     }
  160.                     if ('america' == $type) {
  161.                         $cantDestinosA count($america);
  162.                         $totalDestinosA ceil($cantDestinosA $cantRegis);
  163.                         $pagination $paginator->paginate($america$fullRequest->query->get('page'$page), $cantRegis);
  164.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosA'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  165.                     }
  166.                     if ('oceania' == $type) {
  167.                         $cantDestinosO count($oceania);
  168.                         $totalDestinosO ceil($cantDestinosO $cantRegis);
  169.                         $pagination $paginator->paginate($oceania$fullRequest->query->get('page'$page), $cantRegis);
  170.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosO'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  171.                     }
  172.                     if ('europa' == $type) {
  173.                         $cantDestinosE count($europa);
  174.                         $totalDestinosE ceil($cantDestinosE $cantRegis);
  175.                         $pagination $paginator->paginate($europa$fullRequest->query->get('page'$page), $cantRegis);
  176.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosE'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  177.                     }
  178.                     if ('africa' == $type) {
  179.                         $cantDestinosAF count($africa);
  180.                         $totalDestinosAF ceil($cantDestinosAF $cantRegis);
  181.                         $pagination $paginator->paginate($africa$fullRequest->query->get('page'$page), $cantRegis);
  182.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosAF'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  183.                     }
  184.                     if ('asia' == $type) {
  185.                         $cantDestinosAS count($asia);
  186.                         $totalDestinosAS ceil($cantDestinosAS $cantRegis);
  187.                         $pagination $paginator->paginate($asia$fullRequest->query->get('page'$page), $cantRegis);
  188.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosAS'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  189.                     }
  190.                     if ('ciudades-mundialistas' == $type) {
  191.                         return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Blog/Default/ciudades_mundialistas.html.twig'), ['agencyId' => $agencyId'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  192.                     }
  193.                 }
  194.             } else {
  195.                 foreach ($articulos as $articulo) {
  196.                     $description json_decode($articulo->getDescription(), true);
  197.                     if ($description && is_array($description)) {
  198.                         if (isset($description['type'])) {
  199.                             if ('general' == $description['type']) {
  200.                                 if ('tips' == $description['categoria']) {
  201.                                     $tipsArticles[] = $articulo;
  202.                                 }
  203.                                 if ('sostenibilidad' == $description['categoria']) {
  204.                                     $sostenibilidadArticles[] = $articulo
  205.                                 }
  206.                                 if ('gastronomia' == $description['categoria']) {
  207.                                     $gastronomiaArticles[] = $articulo;
  208.                                 }
  209.                                 if ('experiencias' == $description['categoria']) {
  210.                                     $experienciasArticles[] = $articulo;
  211.                                 }
  212.                             } else {
  213.                                 $actualArticles[] = $articulo;
  214.                             }
  215.                         } else {
  216.                             $actualArticles[] = $articulo;
  217.                         }
  218.                     }
  219.                 }
  220.                 /* Redireccion articulos contenido general, revista e información */
  221.                 if ('contenidos' == $type) {
  222.                     $cantGeneral count($tipsArticles);
  223.                     $totalGeneral ceil($cantGeneral $cantRegis);
  224.                     $pagination $paginator->paginate($tipsArticles$fullRequest->query->get('page'$page), $cantRegis);
  225.                     return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Blog/Default/division_contenidos.html.twig'), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalGeneral'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  226.                 }
  227.                 if ('sostenibilidad' == $type) {
  228.                     $cantGeneral count($sostenibilidadArticles);
  229.                     $totalGeneral ceil($cantGeneral $cantRegis);
  230.                     $pagination $paginator->paginate($sostenibilidadArticles$fullRequest->query->get('page'$page), $cantRegis);
  231.                                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalGeneral'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  232.                 }
  233.                 if ('tips' == $type) {
  234.                     $cantGeneral count($tipsArticles);
  235.                     $totalGeneral ceil($cantGeneral $cantRegis);
  236.                     $pagination $paginator->paginate($tipsArticles$fullRequest->query->get('page'$page), $cantRegis);
  237.                     return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalGeneral'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  238.                 }
  239.                 if ('gastronomia' == $type) {
  240.                     $cantRevista count($gastronomiaArticles);
  241.                     $totalRevista ceil($cantRevista $cantRegis);
  242.                     $pagination $paginator->paginate($gastronomiaArticles$fullRequest->query->get('page'$page), $cantRegis);
  243.                     return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalRevista'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  244.                 }
  245.                 if ('experiencias' == $type) {
  246.                     $cantInformacion count($experienciasArticles);
  247.                     $totalInformacion ceil($cantInformacion $cantRegis);
  248.                     $pagination $paginator->paginate($experienciasArticles$fullRequest->query->get('page'$page), $cantRegis);
  249.                     return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalInformacion'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  250.                 }
  251.             }
  252.         } else {
  253.             $query $em->createQuery('SELECT a FROM AviaturContentBundle:Content a WHERE a.isactive = 1 AND (a.agency = :agency OR a.agency IS NULL) ORDER BY a.publicationenddate DESC');
  254.             $query $query->setParameter('agency'$agency);
  255.             $queryIn $em->createQuery('SELECT a FROM AviaturContentBundle:Content a WHERE a.isactive = 0 AND (a.agency = :agency OR a.agency IS NULL) ORDER BY a.publicationenddate DESC');
  256.             $queryIn $queryIn->setParameter('agency'$agency);
  257.             if (isset($routeParams['content'])) {
  258.                 $path '/Blog/Default/index_destinos.html.twig';
  259.             } else {
  260.                 $path '/Blog/Default/index_contenidos.html.twig';
  261.             }
  262.             $urlReturn '@AviaturTwig/'.$agencyFolder.$path;
  263.             $colombia = [];
  264.             $america = [];
  265.             $oceania = [];
  266.             $europa = [];
  267.             $africa = [];
  268.             $asia = [];
  269.             $tipsArticles = [];
  270.             $gastronomiaArticles = [];
  271.             $experienciasArticles = [];
  272.             $actualArticles = [];
  273.             $cantRegis 9;
  274.             if ('activo' == $active) {
  275.                 $articulos $query->getResult();
  276.             }
  277.             if (isset($routeParams['content'])) {
  278.                 if ('general' == $type) {
  279.                     foreach ($articulos as $articulo) {
  280.                         $description json_decode($articulo->getDescription(), true);
  281.                         if ($description && is_array($description)) {
  282.                             if ('destinos-blog' == $description['type']) {
  283.                                 $actualArticles[] = $articulo;
  284.                             }
  285.                         }
  286.                     }
  287.                     if (empty($actualArticles)) {
  288.                         return $this->redirect($errorHandler->errorRedirectNoEmail('/''''No existen contenidos para esta agencia.'));
  289.                     }
  290.                     $cantDestinos count($actualArticles);
  291.                     $totalDestinos ceil($cantDestinos $cantRegis);
  292.                     $pagination $paginator->paginate($actualArticles$fullRequest->query->get('page'$page), $cantRegis);
  293.                     
  294.                     return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinos'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  295.                 } else {
  296.                     foreach ($articulos as $articulo) {
  297.                         $description json_decode($articulo->getDescription(), true);
  298.                         if ($description && is_array($description)) {
  299.                             if ('destinos-blog' == $description['type'] && 'colombia' == $description['type2']) {
  300.                                 $colombia[] = $articulo;
  301.                             }
  302.                             if ('destinos-blog' == $description['type'] && 'america' == $description['type2']) {
  303.                                 $america[] = $articulo;
  304.                             }
  305.                             if ('destinos-blog' == $description['type'] && 'oceania' == $description['type2']) {
  306.                                 $oceania[] = $articulo;
  307.                             }
  308.                             if ('destinos-blog' == $description['type'] && 'europa' == $description['type2']) {
  309.                                 $europa[] = $articulo;
  310.                             }
  311.                             if ('destinos-blog' == $description['type'] && 'africa' == $description['type2']) {
  312.                                 $africa[] = $articulo;
  313.                             }
  314.                             if ('destinos-blog' == $description['type'] && 'asia' == $description['type2']) {
  315.                                 $asia[] = $articulo;
  316.                             }
  317.                         }
  318.                     }
  319.                     if (empty($colombia) && empty($america) && empty($oceania) && empty($europa) && empty($africa) && empty($asia)) {
  320.                         return $this->redirect($errorHandler->errorRedirectNoEmail('/''''No existen contenidos para esta agencia.'));
  321.                     }
  322.                     /* Redireccion articulos destinos y aerolineas */
  323.                     if ('colombia' == $type) {
  324.                         $cantDestinosC count($colombia);
  325.                         $totalDestinosC ceil($cantDestinosC $cantRegis);
  326.                         $pagination $paginator->paginate($colombia$fullRequest->query->get('page'$page), $cantRegis);
  327.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosC'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  328.                     }
  329.                     if ('america' == $type) {
  330.                         $cantDestinosA count($america);
  331.                         $totalDestinosA ceil($cantDestinosA $cantRegis);
  332.                         $pagination $paginator->paginate($america$fullRequest->query->get('page'$page), $cantRegis);
  333.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosA'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  334.                     }
  335.                     if ('oceania' == $type) {
  336.                         $cantDestinosO count($oceania);
  337.                         $totalDestinosO ceil($cantDestinosO $cantRegis);
  338.                         $pagination $paginator->paginate($oceania$fullRequest->query->get('page'$page), $cantRegis);
  339.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosO'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  340.                     }
  341.                     if ('europa' == $type) {
  342.                         $cantDestinosE count($europa);
  343.                         $totalDestinosE ceil($cantDestinosE $cantRegis);
  344.                         $pagination $paginator->paginate($europa$fullRequest->query->get('page'$page), $cantRegis);
  345.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosE'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  346.                     }
  347.                     if ('africa' == $type) {
  348.                         $cantDestinosAF count($africa);
  349.                         $totalDestinosAF ceil($cantDestinosAF $cantRegis);
  350.                         $pagination $paginator->paginate($africa$fullRequest->query->get('page'$page), $cantRegis);
  351.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosAF'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  352.                     }
  353.                     if ('asia' == $type) {
  354.                         $cantDestinosAS count($asia);
  355.                         $totalDestinosAS ceil($cantDestinosAS $cantRegis);
  356.                         $pagination $paginator->paginate($asia$fullRequest->query->get('page'$page), $cantRegis);
  357.                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalDestinosAS'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  358.                     }
  359.                     if ('ciudades-mundialistas' == $type) {
  360.                         return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Blog/Default/ciudades_mundialistas.html.twig'), ['agencyId' => $agencyId'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  361.                     }
  362.                 }
  363.             } else {
  364.                 foreach ($articulos as $articulo) {
  365.                     $description json_decode($articulo->getDescription(), true);
  366.                     if ($description && is_array($description)) {
  367.                         if (isset($description['type'])) {
  368.                             if ('general' == $description['type']) {
  369.                                 if ('tips' == $description['categoria']) {
  370.                                     $tipsArticles[] = $articulo;
  371.                                 }
  372.                                 if ('sostenibilidad' == $description['categoria']) {
  373.                                     $sostenibilidadArticles[] = $articulo;
  374.                                 }
  375.                                 if ('gastronomia' == $description['categoria']) {
  376.                                     $gastronomiaArticles[] = $articulo;
  377.                                 }
  378.                                 if ('experiencias' == $description['categoria']) {
  379.                                     $experienciasArticles[] = $articulo;
  380.                                 }
  381.                             } else {
  382.                                 $actualArticles[] = $articulo;
  383.                             }
  384.                         } else {
  385.                             $actualArticles[] = $articulo;
  386.                         }
  387.                     }
  388.                 }
  389.                 /* Redireccion articulos contenido general, revista e información */
  390.                 if ('contenidos' == $type) {
  391.                     $cantGeneral count($tipsArticles);
  392.                     $totalGeneral ceil($cantGeneral $cantRegis);
  393.                     $pagination $paginator->paginate($tipsArticles$fullRequest->query->get('page'$page), $cantRegis);
  394.                     return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Blog/Default/division_contenidos.html.twig'), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalGeneral'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  395.                 }
  396.                 if ('tips' == $type) {
  397.                     $cantGeneral count($tipsArticles);
  398.                     $totalGeneral ceil($cantGeneral $cantRegis);
  399.                     $pagination $paginator->paginate($tipsArticles$fullRequest->query->get('page'$page), $cantRegis);
  400.                     return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalGeneral'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  401.                 }
  402.                    if ('sostenibilidad' == $type) {
  403.                     $cantGeneral count($sostenibilidadArticles);
  404.                     $totalGeneral ceil($cantGeneral $cantRegis);
  405.                     $pagination $paginator->paginate($sostenibilidadArticles$fullRequest->query->get('page'$page), $cantRegis);
  406.                                         return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalGeneral'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  407.                 }
  408.                 if ('gastronomia' == $type) {
  409.                     $cantRevista count($gastronomiaArticles);
  410.                     $totalRevista ceil($cantRevista $cantRegis);
  411.                     $pagination $paginator->paginate($gastronomiaArticles$fullRequest->query->get('page'$page), $cantRegis);
  412.                     return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalRevista'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  413.                 }
  414.                 if ('experiencias' == $type) {
  415.                     $cantInformacion count($experienciasArticles);
  416.                     $totalInformacion ceil($cantInformacion $cantRegis);
  417.                     $pagination $paginator->paginate($experienciasArticles$fullRequest->query->get('page'$page), $cantRegis);
  418.                     return $this->render($twigFolder->twigExists($urlReturn), ['agencyId' => $agencyId'articulo' => $pagination'page' => $page'active' => $active'totalRegi' => $totalInformacion'ajaxUrl' => $requestUrl'typeArticle' => $type'params' => $routeParams'blog_form' => $blogForm->createView()]);
  419.                 }
  420.             }
  421.         }
  422.     }
  423.     public function extractDescriptionAction($text)
  424.     {
  425.         $article $text;
  426.         $separator1 '<p style="text-align: justify;">';
  427.         $separator2 '</p>';
  428.         $articleText $article->getText();
  429.         $pos strrpos($articleText$separator1);
  430.         if (false !== $pos) {
  431.             $position strpos($articleText$separator1);
  432.             $pText substr($articleText$position strlen($separator1));
  433.             $posText strrpos($pText$separator2);
  434.             if (false !== $posText) {
  435.                 $newPosition strpos($pText$separator2);
  436.                 $description substr($pText0$newPosition);
  437.                 $descriptionArticle preg_replace('/<.+?>/'''$description);
  438.                 $descriptionArticle html_entity_decode($descriptionArticleENT_QUOTES'UTF-8');
  439.                 return new Response($descriptionArticle);
  440.             }
  441.         }
  442.         return new Response('vacio');
  443.     }
  444.     public function nameCityBlogAction($iata)
  445.     {
  446.         $em $this->getDoctrine()->getManager();
  447.         $dest $em->getRepository(\Aviatur\SearchBundle\Entity\SearchCities::class)->findOneBy(['iata' => $iata]);
  448.         if (!empty($dest)) {
  449.             $cityName $dest->getCity();
  450.             $cities = ['Paris''Mexico''Cancun''Panama City''Puerto Asis''Amsterdam''Iguazu''Zurich''Moscow''Dublin''Kazan''Monte Carlo''Malaga''Rio de Janeiro''Cordoba''Dubai''Seul'];
  451.             $citiesCorrection = ['París''Ciudad de México''Cancún''Panamá''Puerto Asís''Ámsterdam''Iguazú''Zúrich''Moscú''Dublín''Kazán''Mónaco''Málaga''Río de Janeiro''Córdoba''Dubái''Seúl'];
  452.             $city str_replace($cities$citiesCorrection$cityName);
  453.         } else {
  454.             $city 'vacio';
  455.         }
  456.         return new Response($city);
  457.     }
  458.     /*
  459.      * Visualiza el articulo seleccionado
  460.      */
  461.     public function viewAction(SessionInterface $sessionTwigFolder $twigFolder$id)
  462.     {
  463.         $em $this->getDoctrine()->getManager();
  464.         $articulo $em->getRepository(\Aviatur\ContentBundle\Entity\Content::class)->findByAgencyNull($session->get('agencyId'), $id);
  465.         
  466.         // $validateExplore = ((null === $em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneBy(['name' => 'aviatur_search_explore', 'value' => 1]) ? 0 : count($em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneBy(['name' => 'aviatur_search_explore', 'value' => 1]))) > 0) ? true : false; 
  467.         $validateExplore=false;
  468.         $aviaturSearchExploreEntity=$em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneBy(['name' => 'aviatur_search_explore''value' => 1]);
  469.         if (! is_null($aviaturSearchExploreEntity)) {
  470.             $aviaturSearchExploreEntity $em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneBy(['name' => 'aviatur_search_explore''value' => 1]);
  471.             if (is_countable($aviaturSearchExploreEntity) ) {
  472.                 if (count($aviaturSearchExploreEntity) > 0) {
  473.                     $validateExplore=true;
  474.                 }
  475.             }
  476.         }
  477.         if (isset($articulo[0]) && (null != $articulo[0])) {
  478.             $agencyFolder $twigFolder->twigFlux();
  479.             $description json_decode($articulo[0]->getDescription(), true);
  480.             $blog = new Newsletter();
  481.             $blogForm $this->createForm(\Aviatur\FormBundle\Form\BlogType::class, $blog);
  482.             // determine content type based on eventual json encoded description
  483.             if ($description && is_array($description)) {
  484.                 $pos strpos($agencyFolder'aviatur');
  485.                 if (false !== $pos) {
  486.                     if ('destinos' == $description['type'] || 'destinos-blog' == $description['type']) {
  487.                         $cookieArray = [];
  488.                         foreach ($description as $key => $value) {
  489.                             $cookieArray[$key] = $value;
  490.                         }
  491.                         if (isset($cookieArray['origin1']) && preg_match('/^[A-Z]{3}$/'$cookieArray['origin1'])) {
  492.                             $ori $em->getRepository(\Aviatur\SearchBundle\Entity\SearchCities::class)->findOneBy(['iata' => $cookieArray['origin1']]);
  493.                             $cookieArray['originLabel1'] = $ori->getCity().', '.$ori->getCountry().' ('.$ori->getIata().')';
  494.                         } else {
  495.                             $cookieArray['originLabel1'] = '';
  496.                         }
  497.                         if (isset($cookieArray['destination1']) && preg_match('/^[A-Z]{3}$/'$cookieArray['destination1'])) {
  498.                             $dest $em->getRepository(\Aviatur\SearchBundle\Entity\SearchCities::class)->findOneBy(['iata' => $cookieArray['destination1']]);
  499.                             $cookieArray['destinationLabel1'] = $dest->getCity().', '.$dest->getCountry().' ('.$dest->getIata().')';
  500.                             $cookieArray['destinationIata'] = $dest->getIata();
  501.                         } else {
  502.                             $cookieArray['destinationLabel1'] = '';
  503.                             $cookieArray['destinationIata'] = '';
  504.                         }
  505.                         return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Blog/Default/view.html.twig'), ['articulo' => $articulo[0], 'cookieLastSearch' => $cookieArray'validateExplore' => $validateExplore'blog_form' => $blogForm->createView()]);
  506.                     } else {
  507.                         // eg: {"categoria":"tips|gastronomia|experiencias"}
  508.                         $cookieArray = [];
  509.                         foreach ($description as $key => $value) {
  510.                             $cookieArray[$key] = $value;
  511.                         }
  512.                         return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Blog/Default/view_contenidos.html.twig'), ['articulo' => $articulo[0], 'cookieLastSearch' => $cookieArray'validateExplore' => $validateExplore'blog_form' => $blogForm->createView()]);
  513.                     }
  514.                 }
  515.             }
  516.             return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Blog/Default/view.html.twig'), ['articulo' => $articulo[0]]);
  517.         } else {
  518.             throw $this->createNotFoundException('Contenido no encontrado');
  519.         }
  520.     }
  521.     public function subscriptionAction(Request $requestSessionInterface $session)
  522.     {
  523.         $resgisterBlog = new Newsletter();
  524.         $em $this->getDoctrine()->getManager();
  525.         $agency $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->find($session->get('agencyId'));
  526.         $form $this->createForm(\Aviatur\FormBundle\Form\BlogType::class, $resgisterBlog);
  527.         $form->handleRequest($request);
  528.         if ($form->isSubmitted()) {
  529.             $post $request->request->get('blog_form');
  530.             if ($form->isValid()) {
  531.                 if ($request->isXmlHttpRequest()) {
  532.                     $resgisterBlog->setFirstname(ucwords(mb_strtolower($post['firstname'])));
  533.                     $resgisterBlog->setLastname(ucwords(mb_strtolower($post['lastname'])));
  534.                     $resgisterBlog->setEmail($post['email']);
  535.                     $typeBlog '{"newsletter":"no","blog":"si"}';
  536.                     $resgisterBlog->setType($typeBlog);
  537.                     $resgisterBlog->setAgency($agency);
  538.                     $resgisterBlog->setPublicationDate(new \DateTime());
  539.                     $em->persist($resgisterBlog);
  540.                     $em->flush();
  541.                     $response = new Response();
  542.                     $output = ['success' => true];
  543.                     $response->headers->set('Content-Type''application/json');
  544.                     $response->setContent(json_encode($output));
  545.                 } else {
  546.                     $response = new Response();
  547.                     $output = ['error' => true];
  548.                     $response->headers->set('Content-Type''application/json');
  549.                     $response->setContent(json_encode($output));
  550.                     return $response;
  551.                 }
  552.             } else {
  553.                 $emailRegister $em->getRepository(\Aviatur\FormBundle\Entity\Newsletter::class)->findByEmail($post['email']);
  554.                 if ($emailRegister) {
  555.                     $type json_decode($emailRegister[0]->getType(), true);
  556.                     if ('no' == $type['blog']) {
  557.                         $typeBlog '{"newsletter":"si","blog":"si"}';
  558.                         $emailRegister[0]->setType($typeBlog);
  559.                         $em->persist($emailRegister[0]);
  560.                         $em->flush();
  561.                         $response = new Response();
  562.                         $output = ['success' => true];
  563.                         $response->headers->set('Content-Type''application/json');
  564.                         $response->setContent(json_encode($output));
  565.                         return $response;
  566.                     } else {
  567.                         $response = new Response();
  568.                         $output = ['email' => true];
  569.                         $response->headers->set('Content-Type''application/json');
  570.                         $response->setContent(json_encode($output));
  571.                         return $response;
  572.                     }
  573.                 } else {
  574.                     $response = new Response();
  575.                     $output = ['error' => true];
  576.                     $response->headers->set('Content-Type''application/json');
  577.                     $response->setContent(json_encode($output));
  578.                     return $response;
  579.                 }
  580.             }
  581.         } else {
  582.             $response = new Response();
  583.             $output = ['error' => true];
  584.             $response->headers->set('Content-Type''application/json');
  585.             $response->setContent(json_encode($output));
  586.             return $response;
  587.         }
  588.     }
  589. }