src/Framework/FrontBundle/Controller/PageController.php line 252

Open in your IDE?
  1. <?php
  2. namespace App\Framework\FrontBundle\Controller;
  3. use App\Framework\AppBundle\Entity\Venue;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\String\Slugger\AsciiSlugger;
  10. use App\Framework\AppBundle\Entity\Page;
  11. use App\Framework\AppBundle\Entity\Newsletter;
  12. use Symfony\Component\HttpKernel\Profiler\Profiler;
  13. use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
  14. use Symfony\Component\Mailer\MailerInterface;
  15. use Symfony\Component\Mime\Email;
  16. class PageController extends AbstractController
  17. {
  18.   public function __construct(ContainerBagInterface $params)
  19.   {
  20.       $this->params $params;
  21.       if( in_array($_SERVER['REMOTE_ADDR'], ['176.113.115.113']) ){
  22.         exit;
  23.       }
  24.   }
  25.   /**
  26.   * @Route("/", name="framework_front_page_index")
  27.   * @Route("/de", name="framework_front_page_index_de")
  28.   * @Route("/en", name="framework_front_page_index_en")
  29.   */
  30.   public function indexAction(Request $requestEntityManagerInterface $em)
  31.   {
  32.     $concert $em->getRepository(Venue::class)->findOneBy(['title'=>'Mégaconcert']);
  33.     $em $this->getDoctrine()->getManager();
  34.     $locale 'fr';
  35.     if($request->attributes->get('_route') == 'framework_front_page_index_de'){
  36.       $request->setLocale('de');
  37.     } elseif($request->attributes->get('_route') == 'framework_front_page_index_en'){
  38.       $request->setLocale('en');
  39.     }
  40.     $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['isHome' => 1'locale' => $locale]);
  41.     return $this->render('FrontBundle/Page/index.html.twig', [
  42.       'page' => $page,
  43.       'concert'=> $concert,
  44.       'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(),
  45.     ]);
  46.     // return $this->redirectToRoute('framework_front_page_url', ['locale' => $locale, 'url' => NULL]);
  47.   }
  48.   /**
  49.   * @Route("/fr", name="framework_front_page_index_de")
  50.   */
  51.   public function frAction(Request $request)
  52.   {
  53.     return $this->redirectToRoute('framework_front_page_index');
  54.   }
  55.   /**
  56.   * @Route("/{locale}/404", name="framework_front_page_404", requirements={"locale" = "([a-z\-0-9]+)"})
  57.   */
  58.   public function error404Action(Request $request$locale NULL)
  59.   {
  60.     $request->setLocale($locale);
  61.     return $this->render('FrontBundle/Page/404.html.twig', [
  62.       'locale' => $request->getLocale()
  63.     ]);
  64.   }
  65.   /**
  66.   * @Route("/page/{slug}", name="framework_front_page_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  67.   */
  68.   public function slugAction(Request $request$slug NULL$locale NULL)
  69.   {
  70.     $em $this->getDoctrine()->getManager();
  71.     $globals $this->get("twig")->getGlobals();
  72.     $locales explode('|'$globals["app_locales"]);
  73.     $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => $slug'locale' => $locale]);
  74.     if(is_null($page)){
  75.       return $this->redirectToRoute('framework_front_page_404', ['locale' => $locale]);
  76.     }
  77.     return $this->redirectToRoute('framework_front_page_url', ['locale' => $locale'url' => $page->getUrl()]);
  78.   }
  79.   /**
  80.   * @Route("/{locale}/mon-compte", name="framework_front_account_infos", requirements={"locale" = "([a-z\-0-9]+)"})
  81.   */
  82.   public function accountAction(Request $request$locale NULL)
  83.   {
  84.     $request->setLocale($locale);
  85.     $em $this->getDoctrine()->getManager();
  86.     $booking $em->getRepository('FrameworkAppBundle:Booking')->findOneBy(['user' => $this->getUser()->getId()], ['createdAt' => 'DESC']);
  87.     $order $em->getRepository('FrameworkAppBundle:Order')->findOneBy(['user' => $this->getUser()->getId()], ['createdAt' => 'DESC']);
  88.     $infos $this->getUser()->getInfos();
  89.     if($order){
  90.       $infos $order->getInfos();
  91.     } elseif($booking){
  92.       $infos $booking->getInfos();
  93.     }
  94.     if( !isset($infos->lastname) ){
  95.       $infos->lastname '';
  96.     }
  97.     if( !isset($infos->firstname) ){
  98.       $infos->firstname '';
  99.     }
  100.     if( !isset($infos->company) ){
  101.       $infos->company '';
  102.     }
  103.     if( !isset($infos->phone) ){
  104.       $infos->phone '';
  105.     }
  106.     if( !isset($infos->address) ){
  107.       $infos->address '';
  108.     }
  109.     if( !isset($infos->city) ){
  110.       $infos->city '';
  111.     }
  112.     if( !isset($infos->zipcode) ){
  113.       $infos->zipcode '';
  114.     }
  115.     if( !isset($infos->country_code) ){
  116.       $infos->country_code '';
  117.     }
  118.     $em $this->getDoctrine()->getManager();
  119.     $globals $this->get("twig")->getGlobals();
  120.     $locales explode('|'$globals["app_locales"]);
  121.     $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'account''locale' => $locale]);
  122.     return $this->render('FrontBundle/Page/account.html.twig', [
  123.       'infos' => $infos,
  124.       'page' => $page,
  125.       'body' => '',
  126.       'de_url' => 'mon-compte',
  127.       'en_url' => 'mon-compte',
  128.       'fr_url' => 'mon-compte',
  129.     ]);
  130.   }
  131.   /**
  132.   * @Route("/{locale}/mon-compte/favoris", name="framework_front_account_favoris", requirements={"locale" = "([a-z\-0-9]+)"})
  133.   */
  134.   public function accountFavorisAction(Request $request$locale NULL)
  135.   {
  136.     $request->setLocale($locale);
  137.     $em $this->getDoctrine()->getManager();
  138.     $globals $this->get("twig")->getGlobals();
  139.     $locales explode('|'$globals["app_locales"]);
  140.     $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'account-favoris''locale' => $locale]);
  141.     $bookmark $em->getRepository('FrameworkShopBundle:Bookmark')->findBy(['user' => $this->getUser()], ['createdAt' => 'DESC']);
  142.     return $this->render('FrontBundle/Page/account-favoris.html.twig', [
  143.       'page' => $page,
  144.       'body' => '',
  145.       'bookmark' => $bookmark,
  146.       'de_url' => 'mon-compte/favoris',
  147.       'en_url' => 'mon-compte/favoris',
  148.       'fr_url' => 'mon-compte/favoris',
  149.     ]);
  150.   }
  151.   /**
  152.   * @Route("/{locale}/mon-compte/historique", name="framework_front_account_histo", requirements={"locale" = "([a-z\-0-9]+)"})
  153.   */
  154.   public function accountHistoAction(Request $request$locale NULL)
  155.   {
  156.     $request->setLocale($locale);
  157.     $em $this->getDoctrine()->getManager();
  158.     $globals $this->get("twig")->getGlobals();
  159.     $locales explode('|'$globals["app_locales"]);
  160.     $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'account-histo''locale' => $locale]);
  161.     $bookings $em->getRepository('FrameworkAppBundle:Booking')->findBy(['user' => $this->getUser()->getId()], ['createdAt' => 'DESC']);
  162.     $orders $em->getRepository('FrameworkAppBundle:Order')->findBy(['user' => $this->getUser()->getId()], ['createdAt' => 'DESC']);
  163.     return $this->render('FrontBundle/Page/account-histo.html.twig', [
  164.       'orders' => $orders,
  165.       'bookings' => $bookings,
  166.       'page' => $page,
  167.       'body' => '',
  168.       'de_url' => 'mon-compte/historique',
  169.       'en_url' => 'mon-compte/historique',
  170.       'fr_url' => 'mon-compte/historique',
  171.     ]);
  172.   }
  173.   /**
  174.   * @Route("/{locale}/mon-compte/contact", name="framework_front_account_contact", requirements={"locale" = "([a-z\-0-9]+)"})
  175.   */
  176.   public function accountContactAction(Request $request$locale NULL)
  177.   {
  178.     $request->setLocale($locale);
  179.     $em $this->getDoctrine()->getManager();
  180.     $globals $this->get("twig")->getGlobals();
  181.     $locales explode('|'$globals["app_locales"]);
  182.     $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'account-contact''locale' => $locale]);
  183.     return $this->render('FrontBundle/Page/account-contact.html.twig', [
  184.       'page' => $page,
  185.       'body' => '',
  186.       'de_url' => 'mon-compte/contact',
  187.       'en_url' => 'mon-compte/contact',
  188.       'fr_url' => 'mon-compte/contact',
  189.     ]);
  190.   }
  191.   
  192.   /**
  193.   * @Route("/{locale}/{url}", name="framework_front_page_url", requirements={"locale" = "([a-z][a-z])", "url" = "([a-z\-0-9]+)"})
  194.   */
  195.   public function urlAction(Request $request$locale NULL$url NULL)
  196.   {
  197.     $em $this->getDoctrine()->getManager();
  198.     $request->setLocale($locale);
  199.     
  200.     if(is_null($url)){
  201.       $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['isHome' => 1'locale' => $locale]);
  202.     } else {
  203.       $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['url' => $url'locale' => $locale]);
  204.     }
  205.     if(is_null($page)){
  206.       return $this->redirectToRoute('framework_front_page_404', ['locale' => $locale]);
  207.     }
  208.     $content $page->getContent();
  209.     $body explode('<body>'$content);
  210.     if(isset($body[1])){
  211.       $body explode('</body>'$body[1])[0];
  212.     } else {
  213.       $body '';
  214.     }
  215.     
  216.     $head '<head>
  217.       <title>'.$page->getMetaTitle().'</title>
  218.       <meta charset="utf-8">
  219.       <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  220.       <meta name="description" content="'.$page->getMetaDescription().'">
  221.       <link href="/editor/css/editor.css" rel="stylesheet">
  222.     </head>';
  223.     if($page->getIsHome()){
  224.         $concert $em->getRepository('FrameworkAppBundle:Venue')->findOneBy(['title' => 'Mégaconcert']);
  225.       $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['isHome' => 1'locale' => $locale]);
  226.       return $this->render('FrontBundle/Page/index.html.twig', [
  227.         'page' => $page,
  228.         'concert' =>$concert,
  229.         'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(),
  230.       ]);
  231.     } elseif($page->getIsCms()){
  232.       return $this->render('FrontBundle/Page/page.html.twig', [
  233.         'page' => $page,
  234.         'body' => $body,
  235.       ]);
  236.     // CUSTOM PAGES
  237.     } else {
  238.       switch ($page->getSlug()) {
  239.         // CONTACT
  240.         case 'contact':
  241.           return $this->render('FrontBundle/Page/contact.html.twig', [
  242.             'page' => $page,
  243.           ]);
  244.           break;
  245.         case 'le-majestic':
  246.           return $this->render('FrontBundle/Page/le-majestic.html.twig', [
  247.             'page' => $page,
  248.           ]);
  249.           break;
  250.           
  251.         case 'nos-espaces':
  252.           return $this->render('FrontBundle/Page/nos-espaces.html.twig', [
  253.             'page' => $page,
  254.           ]);
  255.           break;
  256.           
  257.         case 'le-majestic':
  258.           return $this->render('FrontBundle/Page/le-majestic.html.twig', [
  259.             'page' => $page,
  260.           ]);
  261.           break;
  262.           
  263.         case 'le-versailles':
  264.           return $this->render('FrontBundle/Page/le-versailles.html.twig', [
  265.             'page' => $page,
  266.           ]);
  267.           break;
  268.         
  269.         case 'la-salle':
  270.           return $this->render('FrontBundle/Page/la-salle.html.twig', [
  271.             'page' => $page,
  272.           ]);
  273.           break;
  274.         
  275.         case 'lounge-club':
  276.           return $this->render('FrontBundle/Page/lounge-club.html.twig', [
  277.             'page' => $page,
  278.           ]);
  279.           break;
  280.         
  281.         case 'espace-entreprises':
  282.           return $this->render('FrontBundle/Page/espace-entreprises.html.twig', [
  283.             'page' => $page,
  284.           ]);
  285.           break;
  286.         
  287.         case 'notre-histoire':
  288.           return $this->render('FrontBundle/Page/notre-histoire.html.twig', [
  289.             'page' => $page,
  290.           ]);
  291.           break;
  292.         
  293.         case 'informations-pratiques':
  294.           return $this->render('FrontBundle/Page/informations-pratiques.html.twig', [
  295.             'page' => $page,
  296.           ]);
  297.           break;
  298.         
  299.         case 'nos-partenaires':
  300.           return $this->render('FrontBundle/Page/nos-partenaires.html.twig', [
  301.             'page' => $page,
  302.           ]);
  303.           break;
  304.         
  305.         // case 'Politique de confidentialité':
  306.         //   return $this->render('FrontBundle/Page/politique-de-confidentialite.html.twig', [
  307.         //     'page' => $page,
  308.         //   ]);
  309.         //   break;
  310.         
  311.         case 'faq':
  312.           $categories $em->getRepository('FrameworkAppBundle:FaqCategory')->findBy([], ['position' => 'ASC']);
  313.           $items $em->getRepository('FrameworkAppBundle:Faq')->findBy([], ['id' => 'ASC']);
  314.           return $this->render('FrontBundle/Page/faq.html.twig', [
  315.             'page' => $page,
  316.             'categories' => $categories,
  317.             'items' => $items,
  318.           ]);
  319.           break;
  320.         
  321.         case 'mini-suites':
  322.           return $this->render('FrontBundle/Page/mini-suites.html.twig', [
  323.             'page' => $page,
  324.           ]);
  325.           break;
  326.         
  327.         case 'offres-emploi':
  328.           $jobs $em->getRepository('FrameworkAppBundle:Job')->findBy(['locale' => $locale'published' => 1], ['id' => 'ASC']);
  329.           return $this->render('FrontBundle/Page/offres-emploi.html.twig', [
  330.             'page' => $page,
  331.             'jobs' => $jobs,
  332.           ]);
  333.           break;
  334.         case 'spectacles-speciaux':
  335.           return $this->render('FrontBundle/Page/spectacles-speciaux2.html.twig', [
  336.             'concerts' => $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => [3823243334]], ['start' => 'ASC']),
  337.             'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(['no''sv''ss''pa''main']),
  338.             'page' => $page,
  339.           ]);
  340.           break;
  341.         case 'boutique':
  342.           if($locale == 'fr'){
  343.             return $this->redirectToRoute('framework_front_shop_all', ['locale' => $locale]);
  344.           } else {
  345.             return $this->redirectToRoute('framework_front_shop_all_de', ['locale' => $locale]);
  346.           }
  347.           $categories $em->getRepository('FrameworkShopBundle:Category')->findBy([], ['position' => 'ASC']);
  348.           $featured $em->getRepository('FrameworkShopBundle:Product')->featured();
  349.           return $this->render('FrontBundle/Page/shop-landing.html.twig', [
  350.             'page' => $page,
  351.             'featured' => $featured,
  352.             'categories' => $categories,
  353.           ]);
  354.           break;
  355.         case 'reservation':
  356.           $events null;
  357.           if( $request->get('event') != null ){
  358.             $events explode(','$request->get('event'));
  359.           }
  360.           return $this->render('FrontBundle/Page/reservation.html.twig', [
  361.             'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues($events),
  362.             'page' => $page,
  363.           ]);
  364.           break;
  365.           
  366.         case 'spectacles-precedents':
  367.           $posts $em->getRepository('FrameworkAppBundle:Spectacle')->findBy(['locale' => $locale'published' => 1], ['id' => 'DESC']);
  368.           $posts_arr = [];
  369.           foreach ($posts as $key => $post) {
  370.             $post_fr $em->getRepository('FrameworkAppBundle:Spectacle')->findOneBy(['slug' => $post->getSlug(), 'locale' => 'fr']);
  371.             $post->setDataform$post_fr->getDataform() );
  372.             $post->setId$post_fr->getId() );
  373.             $posts_arr[] = $post;
  374.           }
  375.           return $this->render('FrontBundle/Page/spectacles-precedents.html.twig', [
  376.             'spectacles' => $posts_arr,
  377.             'page' => $page,
  378.           ]);
  379.           break;
  380.         
  381.         case 'menus-tarifs':
  382.           return $this->render('FrontBundle/Page/menus-tarifs.html.twig', [
  383.             'page' => $page,
  384.           ]);
  385.           break;
  386.         
  387.         case 'actualites':
  388.           $posts $em->getRepository('FrameworkAppBundle:Post')->findBy(['locale' => $locale'published' => 1], ['createdAt' => 'DESC']);
  389.           $posts_arr = [];
  390.           foreach ($posts as $key => $post) {
  391.             $post_fr $em->getRepository('FrameworkAppBundle:Post')->findOneBy(['slug' => $post->getSlug(), 'locale' => 'fr']);
  392.             $post->setDataform$post_fr->getDataform() );
  393.             $post->setId$post_fr->getId() );
  394.             $posts_arr[] = $post;
  395.           }
  396.           return $this->render('FrontBundle/Page/actualites.html.twig', [
  397.             'posts' => $posts_arr,
  398.             'page' => $page,
  399.           ]);
  400.           break;
  401.         
  402.         case 'miss-alsace':
  403. /*          header("Location: https://miss-alsace.fr/");
  404.           die();*/
  405.           $price 85;
  406.           $title 'Miss Alsace';
  407.           $desc 'Ouverture des portes à 17h15<br>Repas de 18h à 19h45<br>Élection à 20h<br>After au Lounge Club hors boissons de 23h jusqu\'à 2h30';
  408.           $subtitle '26 juin 2025';
  409.           if($locale == 'en'){
  410.               $desc 'Doors open at 5:15 PM<br>Dinner from 6:00 PM to 7:45 PM<br>Election at 8:00 PM<br>After-party at the Lounge Club (drinks not included) from 11:00 PM to 2:30 AM';
  411.               $subtitle 'June 26, 2025';
  412.           }
  413.           if($locale == 'de'){
  414.               $desc 'Einlass ab 17:15 Uhr<br>Abendessen von 18:00 bis 19:45 Uhr<br>Wahl um 20:00 Uhr<br>After-Party in der Lounge (Getränke nicht inbegriffen) von 23:00 bis 2:30 Uhr';
  415.               $subtitle '26. Juni 2025';
  416.           }
  417.           return $this->render('FrontBundle/Page/miss-alsace.html.twig', [
  418.             'page' => $page,
  419.             'title' => $title,
  420.             'subtitle' => $subtitle,
  421.             'desc' => $desc,
  422.             'price' => $price,
  423.           ]);
  424.           break;
  425.                 
  426.         case 'afterwork':
  427.           return $this->redirectToRoute('framework_front_page_index');
  428. // if( !in_array($_SERVER['REMOTE_ADDR'], ['92.188.126.134', '91.171.9.214', '92.188.134.117', '45.80.34.7']) ){
  429. //  exit;
  430. // }
  431.           $venues $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => 16]);
  432.           $price 25;
  433.           $title 'Afterwork';
  434.           $desc 'Ouverture des portes à 18h00. Début à 18h30.';
  435.           $subtitle 'Coup de coeur de Pierre Meyer';
  436.           if($locale == 'en'){
  437.             $subtitle 'Coup de coeur de Pierre Meyer';
  438.             $desc 'Doors open at 6:00 pm. Starts at 6:30pm.';
  439.           }
  440.           if($locale == 'de'){
  441.             $subtitle 'Coup de coeur de Pierre Meyer';
  442.             $desc 'Die Türen werden um 18.00 Uhr geöffnet. Beginn um 18:30 Uhr.';
  443.           }
  444.           return $this->render('FrontBundle/Page/afterwork.html.twig', [
  445.             'page' => $page,
  446.             'title' => $title,
  447.             'subtitle' => $subtitle,
  448.             'desc' => $desc,
  449.             'price' => $price,
  450.             'venues' => $venues,
  451.             'v_id' => intval($request->get('v')),
  452.           ]);
  453.           break;
  454.         
  455.                 
  456.         case 'oktoberfest':
  457.           return $this->redirectToRoute('framework_front_page_index');
  458. // if( !in_array($_SERVER['REMOTE_ADDR'], ['92.188.126.134', '91.171.9.214', '92.188.134.117', '45.80.34.7']) ){
  459. //  exit;
  460. // }
  461.           $price 16;
  462.           $title 'Oktoberfest 2023';
  463.           $desc 'Dîner à 19h00 | Soirée dansante à 20h00';
  464.           $subtitle 'Mardi 31 octobre 2023';
  465.           if($locale == 'en'){
  466.             $subtitle 'Tuesday, October 31, 2023';
  467.             $desc 'Dinner at 7pm | Dance evening at 8pm';
  468.           }
  469.           if($locale == 'de'){
  470.             $subtitle 'Dienstag, 31. Oktober 2023';
  471.             $desc 'Abendessen um 19.00 Uhr | Tanzabend um 20.00 Uhr';
  472.           }
  473.           return $this->render('FrontBundle/Page/oktoberfest.html.twig', [
  474.             'page' => $page,
  475.             'title' => $title,
  476.             'subtitle' => $subtitle,
  477.             'desc' => $desc,
  478.             'price' => $price,
  479.             'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(),
  480.           ]);
  481.           break;
  482.         
  483.         
  484.         case 'flash':
  485.           return $this->redirectToRoute('framework_front_page_index');
  486.           $price 20;
  487.           $title 'FLASH2211';
  488.           $desc 'Vente flash / Grand Amour (Billet de spectacle à -53%)';
  489.           $desc 'Il n\'y a plus de tickets disponibles pour cette date.';
  490.           $subtitle '22 novembre 2023';
  491.           $dispo 'Disponible du <strong>09.11.2023</strong> au <strong>13.11.2023</strong>';
  492.           if($locale == 'en'){
  493.             $subtitle 'November 22, 2023';
  494.             $desc 'Flash sale / Grand Amour (Show ticket at -53%)';
  495.             $desc 'There are no more tickets available for this date.';
  496.             $dispo 'Available from <strong>09.11.2023</strong> to <strong>13.11.2023</strong>';
  497.           }
  498.           if($locale == 'de'){
  499.             $subtitle '22. November 2023';
  500.             $desc 'Blitzverkauf / Grand Amour (Show-Ticket -53%)';
  501.             $desc 'Für dieses Datum sind keine Tickets mehr verfügbar.';
  502.             $dispo 'Verfügbar vom <strong>09.11.2023</strong> bis <strong>13.11.2023</strong>';
  503.           }
  504.           return $this->render('FrontBundle/Page/flash.html.twig', [
  505.             'page' => $page,
  506.             'title' => $title,
  507.             'subtitle' => $subtitle,
  508.             'desc' => $desc,
  509.             'price' => $price,
  510.             'dispo' => $dispo,
  511.           ]);
  512.           break;
  513.         case 'housh-ma-housh':
  514.           $venues $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => 17'isfull' => NULL]);
  515.           $isfull true;
  516.           foreach ($venues as $key => $venue) {
  517.             if($venue->getIsfull() == NULL){
  518.               $isfull false;
  519.             }
  520.           }
  521.           $price 16;
  522.           $title 'Housch Ma Housch «WOW»';
  523.           $desc 'Spectacle pour enfants';
  524.           $subtitle 'Du rire pendant les vacances scolaires d’hiver';
  525.           if($locale == 'en'){
  526.             $subtitle 'Laughter during the winter school vacations';
  527.             $desc 'Children\'s show';
  528.           }
  529.           if($locale == 'de'){
  530.             $subtitle 'Lachen während der Winterschulferien';
  531.             $desc 'Aufführung für Kinder';
  532.           }
  533.           return $this->render('FrontBundle/Page/housh-ma-housh.html.twig', [
  534.             'page' => $page,
  535.             'title' => $title,
  536.             'subtitle' => $subtitle,
  537.             'desc' => $desc,
  538.             'price' => $price,
  539.             'venues' => $venues,
  540.             'v_id' => intval($request->get('v')),
  541.             'isfull' => $isfull
  542.           ]);
  543.           break;
  544.         case 'elixir-magique':
  545.           $venues $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => 28'isfull' => NULL]);
  546.           $isfull true;
  547.           foreach ($venues as $key => $venue) {
  548.             if($venue->getIsfull() == NULL){
  549.               $isfull false;
  550.             }
  551.           }
  552.           $price 27;
  553.           $title 'L\'élixir magique des 4 mondes';
  554.           $desc 'Le plus grand spectacle pour les enfants';
  555.           $subtitle '43 artistes, 4 comédiennes chanteuses';
  556.           if($locale == 'en'){
  557.             $subtitle '43 artists, 4 actresses and singers';
  558.             $desc 'The biggest show for kids';
  559.           }
  560.           if($locale == 'de'){
  561.             $subtitle '43 Künstler, 4 Schauspielerinnen, Sängerinnen';
  562.             $desc 'Die größte Show für Kinder';
  563.           }
  564.           return $this->render('FrontBundle/Page/elixir-magique.html.twig', [
  565.             'page' => $page,
  566.             'title' => $title,
  567.             'subtitle' => $subtitle,
  568.             'desc' => $desc,
  569.             'price' => $price,
  570.             'venues' => $venues,
  571.             'v_id' => intval($request->get('v')),
  572.             'isfull' => $isfull
  573.           ]);
  574.           break;
  575.           case 'black-friday-2024':
  576.               return $this->redirectToRoute('framework_front_page_index');
  577.               return $this->render('FrontBundle/Page/black-friday-landing.html.twig', [
  578.                   'page' => $page,
  579.               ]);
  580.           break;
  581.         case 'black-friday':
  582.             return $this->redirectToRoute('framework_front_page_index');
  583.           $venues $em->getRepository('FrameworkAppBundle:Venue')->findBy(['id' => [
  584.               '1546',
  585.               '1555',
  586.               '1577',
  587.               '1583',
  588.               '1594',
  589.               '1601',
  590.           ], 'isfull' => NULL]);
  591.           $isfull false;
  592.           $price 84;
  593.           $title 'Black Friday';
  594.           $desc 'Du jeudi 28 novembre au lundi 2 décembre (16h00)';
  595.           $subtitle 'REMISE EXCEPTIONNELLE de 25 %';
  596.           if($locale == 'en'){
  597.             $subtitle '25% EXCEPTIONAL DISCOUNT';
  598.             $desc 'Thursday, November 28 to Monday, December 2 (4:00 pm)';
  599.           }
  600.           if($locale == 'de'){
  601.             $subtitle 'AUSSERGEWÖHNLICHER RABATT von 25 %';
  602.             $desc 'Donnerstag, 28. November bis Montag, 2. Dezember (16.00 Uhr)';
  603.           }
  604.           return $this->render('FrontBundle/Page/black-friday.html.twig', [
  605.             'page' => $page,
  606.             'title' => $title,
  607.             'subtitle' => $subtitle,
  608.             'desc' => $desc,
  609.             'price' => $price,
  610.             'venues' => $venues,
  611.             'v_id' => intval($request->get('v')),
  612.             'isfull' => $isfull
  613.           ]);
  614.           break;
  615.           case 'noel':
  616.               return $this->render('FrontBundle/Page/noel.html.twig', [
  617.                   'page' => $page,
  618.                   'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(),
  619.               ]);
  620.               break;
  621.           case 'promos':
  622.               return $this->redirectToRoute('framework_front_page_index');
  623.               return $this->render('FrontBundle/Page/promos.html.twig', [
  624.                   'page' => $page,
  625.                   'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(),
  626.               ]);
  627.               break;
  628.         case 'robin-leon-show':
  629.         
  630.           return $this->redirectToRoute('framework_front_page_index');
  631.           $venues $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => 18'isfull' => NULL]);
  632.           $isfull true;
  633.           foreach ($venues as $key => $venue) {
  634.             if($venue->getIsfull() == NULL){
  635.               $isfull false;
  636.             }
  637.           }
  638.           $price 20;
  639.           $title 'Robin Leon Show';
  640.           $desc 'Ouverture des portes à 19 H 00 - début de l\'enregistrement : 20 H 00';
  641.           $subtitle 'Avec la participation d\'artistes internationaux.';
  642.           if($locale == 'en'){
  643.               $subtitle 'With the participation of international artists.';
  644.               $desc 'Doors open at 7.00 p.m. - Start of registration: 8.00 p.m.';
  645.           }
  646.           if($locale == 'de'){
  647.               $subtitle 'Mit der Teilnahme von internationalen Künstlern.';
  648.               $desc 'Türöffnung: 19.00 Uhr - Beginn der Aufnahme: 20.00 Uhr';
  649.           }
  650.           return $this->render('FrontBundle/Page/leon-show.html.twig', [
  651.               'page' => $page,
  652.               'title' => $title,
  653.               'subtitle' => $subtitle,
  654.               'desc' => $desc,
  655.               'price' => $price,
  656.               'venues' => $venues,
  657.               'v_id' => intval($request->get('v')),
  658.               'isfull' => $isfull
  659.           ]);
  660.           break;
  661.         
  662.         case 'carnaval-de-venise':
  663.           return $this->redirectToRoute('framework_front_page_index');
  664.           $venues $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => 19'isfull' => NULL]);
  665.           $isfull true;
  666.           foreach ($venues as $key => $venue) {
  667.             if($venue->getIsfull() == NULL){
  668.               $isfull false;
  669.             }
  670.           }
  671.           $price 16;
  672.           $optionPrice 3;
  673.           $title 'Carnaval de Venise';
  674.           $desc 'Vendredi 1er Mars 2024 / Lounge Club';
  675.           $subtitle 'Animé par le Challenger Orchestre';
  676.           if($locale == 'en'){
  677.               $subtitle 'Hosted by the Challenger Orchestre';
  678.               $desc 'Friday, March 1, 2024 / Lounge Club';
  679.           }
  680.           if($locale == 'de'){
  681.               $subtitle 'Animiert durch das Challenger Orchester';
  682.               $desc 'Freitag, 1. März 2024 / Lounge Club';
  683.           }
  684.           return $this->render('FrontBundle/Page/carnaval-de-venise.html.twig', [
  685.               'page' => $page,
  686.               'title' => $title,
  687.               'subtitle' => $subtitle,
  688.               'desc' => $desc,
  689.               'price' => $price,
  690.               'optionPrice' => $optionPrice,
  691.               'venues' => $venues,
  692.               'v_id' => intval($request->get('v')),
  693.               'isfull' => $isfull
  694.           ]);
  695.           break;
  696.         case 'droits-de-la-femme':
  697.           //return $this->redirectToRoute('framework_front_page_index');
  698.           $price 20;
  699.           $price2 48;
  700.           $title 'Vente flash à l\'honneur des femmes';
  701.           $desc 'Réservée à 200 femmes | -57% sur le billet du spectacle';
  702.           //$desc = 'Il n\'y a plus de tickets disponibles pour cette date.';
  703.           $subtitle '8 Mars 2024 | 22h15';
  704.           $dispo 'Disponible du <strong>09.11.2023</strong> au <strong>13.11.2023</strong>';
  705.           if($locale == 'en'){
  706.             $title 'Flash Sale zu Ehren der Frauen';
  707.             $subtitle 'March 8, 2024 | 22h15';
  708.             $desc 'Reserviert für 200 Frauen | -57% auf die Eintrittskarte für die Show';
  709.             //$desc = 'There are no more tickets available for this date.';
  710.             $dispo 'Available from <strong>09.11.2023</strong> to <strong>13.11.2023</strong>';
  711.           }
  712.           if($locale == 'de'){
  713.             $title 'Flash sale in honor of women';
  714.             $subtitle '8. März 2024 | 22.15 Uhr';
  715.             $desc 'Reserved for 200 women | -57% off ticket price';
  716.             //$desc = 'Für dieses Datum sind keine Tickets mehr verfügbar.';
  717.             $dispo 'Verfügbar vom <strong>09.11.2023</strong> bis <strong>13.11.2023</strong>';
  718.           }
  719.           return $this->render('FrontBundle/Page/droits-de-la-femme.html.twig', [
  720.             'page' => $page,
  721.             'title' => $title,
  722.             'subtitle' => $subtitle,
  723.             'desc' => $desc,
  724.             'price' => $price,
  725.             'price2' => $price2,
  726.             'dispo' => $dispo,
  727.           ]);
  728.           break;
  729.                     
  730.         default:
  731.           return $this->redirectToRoute('framework_front_page_404');
  732.           // return $this->render('FrontBundle/Page/page.html.twig', [
  733.           //  'page' => $page,
  734.           //  'body' => $body,
  735.           // ]);
  736.           break;
  737.       }
  738.     // END CUSTOM PAGES
  739.     }
  740.     // return new Response(
  741.   //       '<!DOCTYPE html><html lang="'.$page->getLocale().'">'.$head.$body.'</html>'
  742.   //   );
  743.   }
  744.   /**
  745.   * @Route("/{locale}/actualite/{slug}", name="framework_front_actualite_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  746.   */
  747.   public function actualiteAction(Request $request$slug NULL$locale NULL)
  748.   {
  749.     $request->setLocale($locale);
  750.     $em $this->getDoctrine()->getManager();
  751.     $globals $this->get("twig")->getGlobals();
  752.     $locales explode('|'$globals["app_locales"]);
  753.     $post $em->getRepository('FrameworkAppBundle:Post')->findOneBy(['slug' => $slug'locale' => $locale]);
  754.     $post_fr $em->getRepository('FrameworkAppBundle:Post')->findOneBy(['slug' => $slug'locale' => 'fr']);
  755.     $post->setDataform$post_fr->getDataform() );
  756.     $post->setId$post_fr->getId() );
  757.     $post->setTags$post_fr->getTags() );
  758.     $posts $em->getRepository('FrameworkAppBundle:Post')->sameTags($post_fr->getTags());
  759.     if(is_null($post)){
  760.       return $this->redirectToRoute('framework_front_page_index');
  761.     }
  762.     $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'news''locale' => $locale]);
  763.     return $this->render('FrontBundle/Page/actualite.html.twig', [
  764.       'posts' => $posts,
  765.       'slug' => $slug,
  766.       'post' => $post,
  767.       'page' => $page,
  768.       'body' => '',
  769.       'de_url' => 'news',
  770.       'en_url' => 'news',
  771.       'fr_url' => 'actualites',
  772.     ]);
  773.   }
  774.   /**
  775.   * @Route("/{locale}/spectacles-precedents/{slug}", name="framework_front_spectacle_prev_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  776.   * @Route("/{locale}/vergangene-auffuhrungen/{slug}", name="framework_front_spectacle_prev_slug_de", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  777.   * @Route("/{locale}/past-shows/{slug}", name="framework_front_spectacle_prev_slug_en", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  778.   */
  779.   public function spectaclePrevAction(Request $request$slug NULL$locale NULL)
  780.   {
  781.     $request->setLocale($locale);
  782.     $em $this->getDoctrine()->getManager();
  783.     $globals $this->get("twig")->getGlobals();
  784.     $locales explode('|'$globals["app_locales"]);
  785.     $post $em->getRepository('FrameworkAppBundle:Spectacle')->findOneBy(['slug' => $slug'locale' => $locale]);
  786.     $post_fr $em->getRepository('FrameworkAppBundle:Spectacle')->findOneBy(['slug' => $slug'locale' => 'fr']);
  787.     $post->setDataform$post_fr->getDataform() );
  788.     $post->setId$post_fr->getId() );
  789.     // $post->setTags( $post_fr->getTags() );
  790.     $posts $em->getRepository('FrameworkAppBundle:Spectacle')->sameTags($post_fr->getTags());
  791.     if(is_null($post)){
  792.       return $this->redirectToRoute('framework_front_page_index');
  793.     }
  794.     $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'spectacle-precedent-page''locale' => $locale]);
  795.     return $this->render('FrontBundle/Page/spectacle-prev.html.twig', [
  796.       'posts' => $posts,
  797.       'post' => $post,
  798.       'page' => $page,
  799.       'post_id' => $post_fr->getId(),
  800.       'de_url' => 'vergangene-auffuhrungen/'.$slug,
  801.       'en_url' => 'past-shows/'.$slug,
  802.       'fr_url' => 'menus-tarifs/'.$slug,
  803.       'body' => '',
  804.     ]);
  805.   }
  806.   /**
  807.   * @Route("/{locale}/menus-tarifs/{slug}", name="framework_front_menus_tarifs_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  808.   * @Route("/{locale}/menu-preise/{slug}", name="framework_front_menus_tarifs_slug_de", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  809.   * @Route("/{locale}/menus-prices/{slug}", name="framework_front_menus_tarifs_slug_en", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  810.   */
  811.   public function menusTarifsAction(Request $request$slug NULL$locale NULL)
  812.   {
  813.     $request->setLocale($locale);
  814.     $em $this->getDoctrine()->getManager();
  815.     $globals $this->get("twig")->getGlobals();
  816.     $locales explode('|'$globals["app_locales"]);
  817.     if( !in_array($slug, ['le-majestic''le-versailles''spectacle']) ) {
  818.       return $this->redirectToRoute('framework_front_page_index');
  819.     }
  820.     $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'menus-tarifs-page''locale' => $locale]);
  821.     $venues = [];
  822.     $tr $this->loadTranslation($locale);
  823.     if($slug == 'le-majestic'){
  824.       $metaDesc $tr['menus_tarifs_metadesc_mj'];
  825.       $h1 $tr['menus_tarifs_h1_mj'];
  826.     }
  827.     if($slug == 'le-versailles'){
  828.       $metaDesc $tr['menus_tarifs_metadesc_ve'];
  829.       $h1 $tr['menus_tarifs_h1_ve'];
  830.     }
  831.     if($slug == 'spectacle'){
  832.       $metaDesc $tr['menus_tarifs_metadesc_sl'];
  833.       $h1 $tr['menus_tarifs_h1_sl'];
  834.     }
  835.     // $nbr = 365;
  836.     // for ($i=0; $i < $nbr; $i++) {
  837.     //  $time = strtotime('+'.$i.' day', time());
  838.     //  $day = intval(date('w', $time));
  839.     //  if( $day == 3 || $day == 4 || $day == 6  || $day == 0 ){
  840.     //    if($day == 3 || $day == 4){
  841.     //      $className = 'd1';
  842.     //    }
  843.     //    if($day == 6){
  844.     //      $className = 'd3';
  845.     //    }
  846.     //    if($day == 0){
  847.     //      // $className = 'd5';
  848.     //       $className = 'd3'; // NEW SHOW 2023
  849.     //    }
  850.     //    $venues[] = [
  851.     //      'title' => 'Midi',
  852.     //      'className' => 'midi '.$className,
  853.     //      'start' => date('Y-m-d', $time).'T12:00:00',
  854.     //    ];
  855.     //  }
  856.     //  if( $day == 5 || $day == 6 ){
  857.     //    if($day == 5){
  858.     //      // $className = 'd2';
  859.     //       $className = 'd4'; // NEW SHOW 2023
  860.     //    }
  861.     //    if($day == 6){
  862.     //      $className = 'd4';
  863.     //    }
  864.     //    $venues[] = [
  865.     //      'title' => 'Soirée',
  866.     //      'className' => 'soir '.$className,
  867.     //      'start' => date('Y-m-d', $time).'T19:00:00',
  868.     //    ];
  869.     //  }
  870.     // }
  871.     // FIX NEW MODE WITH REAL VENUES
  872.     $venues = [];
  873.     // $venuesList = $em->getRepository('FrameworkAppBundle:Venue')->findBy(['deleted' => NULL]);
  874.     $venuesList $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues();
  875.     foreach ($venuesList as $key => $venue) {
  876.       // if($venue->getVenueType()->getId() != 4 && $venue->getVenueType()->getId() != 5 && $venue->getVenueType()->getId() != 15){ //EXIT noel enfants + miss
  877.       if($venue->getVenueType()->getId() == || $venue->getVenueType()->getId() == 11){
  878.         $day intval($venue->getStart()->format('w'));
  879.         if($day == || $day == 4){
  880.           $className 'd1';
  881.         }
  882.         if($day == 6){
  883.           $className 'd3';
  884.         }
  885.         if($day == 0){
  886.           // $className = 'd5';
  887.           $className 'd3'// NEW SHOW 2023
  888.         }
  889.         if($day == 5){
  890.           // $className = 'd2';
  891.           $className 'd4'// NEW SHOW 2023
  892.         }
  893.         if($day == 6){
  894.           $className 'd4';
  895.         }
  896.         if($day == 2){ // MARDI DECEMBRE
  897.           $className 'd1';
  898.         }
  899.         if($venue->getForceDay() != ''){
  900.           $className $venue->getForceDay();
  901.         }
  902.         $isFull $venue->getIsfull();
  903.         // PLACES DISPO EN FONCTION DES RESTAURANTS
  904.         $places $venue->getPlaces()->toArray();
  905.         if( isset($places[0]) ){
  906.           if($slug == 'le-majestic'){
  907.             if($places[0]->isIsMajesicFull()){
  908.               $isFull true;
  909.             }
  910.           } else {
  911.             if($places[0]->isIsVersaillesFull()){
  912.               $isFull true;
  913.             }
  914.           }
  915.         }
  916.         if( intval($venue->getStart()->format('H')) < 16){
  917.           $venues[] = [
  918.             'isfull' => $isFull,
  919.             'title' => 'Midi',
  920.             'className' => 'midi '.$className,
  921.             'start' => $venue->getStart()->format('Y-m-d').'T12:00:00',
  922.           ];
  923.         } else {
  924.           $venues[] = [
  925.             'isfull' => $isFull,
  926.             'title' => 'Soirée',
  927.             'className' => 'soir '.$className,
  928.             'start' => $venue->getStart()->format('Y-m-d').'T19:00:00',
  929.           ];
  930.         }
  931.       }
  932.     }
  933.     // END FIX NEW MODE WITH REAL VENUES
  934.     return $this->render('FrontBundle/Page/menus-tarifs-page.html.twig', [
  935.       'venues' => $venues,
  936.       'slug' => $slug,
  937.       'de_url' => 'menu-preise/'.$slug,
  938.       'en_url' => 'menus-prices/'.$slug,
  939.       'fr_url' => 'menus-tarifs/'.$slug,
  940.       'page' => $page,
  941.       'body' => '',
  942.       'metaDesc' => $metaDesc,
  943.       'h1' => $h1,
  944.     ]);
  945.   }
  946.   /**
  947.   * @Route("/{locale}/spectacle/{slug}", name="framework_front_spectacle_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  948.   */
  949.   public function spectacleAction(Request $request$slug NULL$locale NULL)
  950.   {
  951.     $request->setLocale($locale);
  952.     $em $this->getDoctrine()->getManager();
  953.     $globals $this->get("twig")->getGlobals();
  954.     $locales explode('|'$globals["app_locales"]);
  955.     $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => $slug'locale' => $locale]);
  956.   if ($page && $page->getSlug() == "grand-amour") {
  957.           return $this->redirectToRoute('framework_front_spectacle_prev_slug', ['locale' => $locale]);
  958.       }
  959.     return $this->render('FrontBundle/Page/spectacle-'.$slug.'.html.twig', [
  960.       'slug' => $slug,
  961.       'page' => $page,
  962.       'body' => '',
  963.       'de_url' => 'spectacle/'.$slug,
  964.       'en_url' => 'spectacle/'.$slug,
  965.       'fr_url' => 'spectacle/'.$slug,
  966.     ]);
  967.   }
  968.   /**
  969.   * @Route("/contact/send/{locale}", name="framework_front_page_contact_send", requirements={"locale" = "([a-z\-0-9]+)"})
  970.   */
  971.   public function contactSendAction(Request $requestMailerInterface $mailer$locale NULL)
  972.   {
  973.     $request->setLocale($locale);
  974.     $error '';
  975.     $success true;
  976.     $isValid $this->reCaptcha($request->get('token'));
  977.     $tr $this->loadTranslation($locale);
  978.     $globals $this->get("twig")->getGlobals();
  979.     if(!$isValid){
  980.      $error $tr['contact_error1'];
  981.      $success false;
  982.     }
  983.     if($request->get('subject') == '' 
  984.       || $request->get('firstname') == '' 
  985.       || $request->get('lastname') == '' 
  986.       || $request->get('phone') == '' 
  987.       || $request->get('email') == '' 
  988.       || $request->get('address') == '' 
  989.       || $request->get('zipcode') == '' 
  990.       || $request->get('city') == '' 
  991.       || $request->get('country') == '' 
  992.       || $request->get('subject') == '' 
  993.       || $request->get('message') == ''){
  994.       $error $tr['contact_error2'];
  995.       $success false;
  996.     }
  997.     if (!filter_var($request->get('email'), FILTER_VALIDATE_EMAIL)) {
  998.       $error $tr['contact_error3'];
  999.       $success false;
  1000.     }
  1001.     if($success){
  1002.       //ENVOI EMAIL
  1003.       $from $globals['app_email_noreply'];
  1004.       $to $globals['app_email_address'];
  1005.       $email = (new Email())
  1006.           ->from($from)
  1007.           ->to($to)
  1008.           ->replyTo($request->get('email'))
  1009.           //->priority(Email::PRIORITY_HIGH)
  1010.           ->subject('Nouveau message : Formulaire de contact')
  1011.           ->text(nl2br('Nouveau message : Formulaire de contact'))
  1012.           ->html($this->renderView(
  1013.                       'FrontBundle/Emails/general.html.twig', array(
  1014.                               'title'   => 'Nouveau message : Formulaire de contact',
  1015.                               'content' => '<p>
  1016.                                 Nom : <strong>'.ucfirst(strtolower($request->get('firstname'))).' '.strtoupper($request->get('lastname')).'</strong><br>
  1017.                                 Société : <strong>'.$request->get('company').'</strong><br>
  1018.                                 Téléphone : <strong><a href="tel:'.$request->get('phone').'">'.$request->get('phone').'</a></strong><br>
  1019.                                 E-mail : <strong><a href="mailto:'.$request->get('email').'">'.$request->get('email').'</a></strong><br>
  1020.                                 Adresse : <strong>'.$request->get('address').' '.$request->get('zipcode').' '.$request->get('city').' '.$request->get('country').'</strong><br><br>
  1021.                                 Sujet : <strong>'.$request->get('subject').'</strong><br>
  1022.                                 Message : <strong>'.$request->get('message').'</strong>
  1023.                               </p>
  1024.                               '
  1025.                           )
  1026.                    ));
  1027.       $mailer->send($email);
  1028.       //FIN ENVOI EMAIL
  1029.     }
  1030.     $data = [
  1031.       'error'   => $error,
  1032.       'success' => $success
  1033.     ];
  1034.     $response = new Response(json_encode($data));
  1035.     $response->headers->set('Content-Type''application/json');
  1036.     return $response;
  1037.   }
  1038.   /**
  1039.   * @Route("/contact/send-bo/{locale}", name="framework_front_page_contact_send_bo", requirements={"locale" = "([a-z\-0-9]+)"})
  1040.   */
  1041.   public function contactSendBoAction(Request $requestMailerInterface $mailer$locale NULL)
  1042.   {
  1043.     $request->setLocale($locale);
  1044.     $error '';
  1045.     $success true;
  1046.     $isValid $this->reCaptcha($request->get('token'));
  1047.     $tr $this->loadTranslation($locale);
  1048.     $globals $this->get("twig")->getGlobals();
  1049.     if(!$isValid){
  1050.      $error $tr['contact_error1'];
  1051.      $success false;
  1052.     }
  1053.     if($request->get('subject') == '' 
  1054.       || $request->get('firstname') == '' 
  1055.       || $request->get('lastname') == ''
  1056.       || $request->get('subject') == '' 
  1057.       || $request->get('message') == ''){
  1058.       $error $tr['contact_error2'];
  1059.       $success false;
  1060.     }
  1061.     if (!filter_var($request->get('email'), FILTER_VALIDATE_EMAIL)) {
  1062.       $error $tr['contact_error3'];
  1063.       $success false;
  1064.     }
  1065.     if($success){
  1066.       //ENVOI EMAIL
  1067.       $from $globals['app_email_noreply'];
  1068.       $to $globals['app_email_address'];
  1069.       $email = (new Email())
  1070.           ->from($from)
  1071.           ->to($to)
  1072.           ->replyTo($request->get('email'))
  1073.           //->priority(Email::PRIORITY_HIGH)
  1074.           ->subject('Nouveau message : Formulaire de contact')
  1075.           ->text(nl2br('Nouveau message : Formulaire de contact'))
  1076.           ->html($this->renderView(
  1077.                       'FrontBundle/Emails/general.html.twig', array(
  1078.                               'title'   => 'Nouveau message : Formulaire de contact',
  1079.                               'content' => '<p>
  1080.                                 Nom : <strong>'.ucfirst(strtolower($request->get('firstname'))).' '.strtoupper($request->get('lastname')).'</strong><br>
  1081.                                 Société : <strong>'.$this->getUser()->getInfo('company').'</strong><br>
  1082.                                 Téléphone : <strong><a href="tel:'.$this->getUser()->getInfo('phone').'">'.$this->getUser()->getInfo('phone').'</a></strong><br>
  1083.                                 E-mail : <strong><a href="mailto:'.$this->getUser()->getEmail().'">'.$this->getUser()->getEmail().'</a></strong><br>
  1084.                                 Adresse : <strong>'.$this->getUser()->getInfo('address').' '.$this->getUser()->getInfo('zipcode').' '.$this->getUser()->getInfo('city').' '.$this->getUser()->getInfo('country').'</strong><br><br>
  1085.                                 Sujet : <strong>'.$request->get('subject').'</strong><br>
  1086.                                 Message : <strong>'.$request->get('message').'</strong>
  1087.                               </p>
  1088.                               '
  1089.                           )
  1090.                    ));
  1091.       $mailer->send($email);
  1092.       //FIN ENVOI EMAIL
  1093.     }
  1094.     $data = [
  1095.       'error'   => $error,
  1096.       'success' => $success
  1097.     ];
  1098.     $response = new Response(json_encode($data));
  1099.     $response->headers->set('Content-Type''application/json');
  1100.     return $response;
  1101.   }
  1102.   
  1103.   function reCaptcha($token NULL){
  1104.     $globals $this->get("twig")->getGlobals();
  1105.     try {
  1106.       $url 'https://www.google.com/recaptcha/api/siteverify';
  1107.       $data = ['secret'   => $globals['recaptcha_secret_key'],
  1108.       'response' => $token,
  1109.       'remoteip' => $_SERVER['REMOTE_ADDR']];
  1110.       $options = [
  1111.         'http' => [
  1112.           'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
  1113.           'method'  => 'POST',
  1114.           'content' => http_build_query($data)
  1115.         ]
  1116.       ];
  1117.       $context  stream_context_create($options);
  1118.       $result file_get_contents($urlfalse$context);
  1119.       $result json_decode($result);
  1120.       if($result->success && $result->score >= 0.5){
  1121.         return true;
  1122.       } else {
  1123.         return false;
  1124.       }
  1125.     }
  1126.     catch (Exception $e) {
  1127.       return null;
  1128.     }
  1129.   }
  1130.   /**
  1131.   * @Route("/newsletter/{locale}", name="framework_front_page_newsletter", requirements={"locale" = "([a-z\-0-9]+)"})
  1132.   */
  1133.   public function newsletterAction(Request $request$locale NULL)
  1134.   {
  1135.     $request->setLocale($locale);
  1136.     $em $this->getDoctrine()->getManager();
  1137.     $tr $this->loadTranslation($locale);
  1138.     $error '';
  1139.     $success true;
  1140.     if (!filter_var($request->get('email'), FILTER_VALIDATE_EMAIL)) {
  1141.       $error $tr['newsletter_error1'];
  1142.       $success false;
  1143.     }
  1144.     if($em->getRepository('FrameworkAppBundle:Newsletter')->findOneBy(['email' => $request->get('email')])){
  1145.       $error $tr['newsletter_error2'];
  1146.       $success false;
  1147.     }
  1148.     if($success){
  1149.       $newsletter = new Newsletter();
  1150.       $newsletter->setEmail($request->get('email'));
  1151.       $em->persist($newsletter);
  1152.       $em->flush();
  1153.     }
  1154.     $data = [
  1155.       'error'   => $error,
  1156.       'success' => $success
  1157.     ];
  1158.     $response = new Response(json_encode($data));
  1159.     $response->headers->set('Content-Type''application/json');
  1160.     return $response;
  1161.   }
  1162.   public function loadTranslation($locale){
  1163.       $arr = [];
  1164.       $em $this->getDoctrine()->getManager();
  1165.       $translations $em->getRepository('FrameworkAppBundle:Translation')->findAll();
  1166.       foreach ($translations as $key => $translation) {
  1167.           $content $translation->getContent();
  1168.           if(isset($content[$locale])){
  1169.               $arr[$translation->getSlug()] = $content[$locale];
  1170.           } else {
  1171.               $arr[$translation->getSlug()] = $translation->getSlug();
  1172.           }
  1173.       }
  1174.       return $arr;
  1175.   }
  1176. }