<?php
namespace App\Framework\FrontBundle\Controller;
use App\Framework\AppBundle\Entity\Venue;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\String\Slugger\AsciiSlugger;
use App\Framework\AppBundle\Entity\Page;
use App\Framework\AppBundle\Entity\Newsletter;
use Symfony\Component\HttpKernel\Profiler\Profiler;
use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
class PageController extends AbstractController
{
public function __construct(ContainerBagInterface $params)
{
$this->params = $params;
if( in_array($_SERVER['REMOTE_ADDR'], ['176.113.115.113']) ){
exit;
}
}
/**
* @Route("/", name="framework_front_page_index")
* @Route("/de", name="framework_front_page_index_de")
* @Route("/en", name="framework_front_page_index_en")
*/
public function indexAction(Request $request, EntityManagerInterface $em)
{
$concert = $em->getRepository(Venue::class)->findOneBy(['title'=>'Mégaconcert']);
$em = $this->getDoctrine()->getManager();
$locale = 'fr';
if($request->attributes->get('_route') == 'framework_front_page_index_de'){
$request->setLocale('de');
} elseif($request->attributes->get('_route') == 'framework_front_page_index_en'){
$request->setLocale('en');
}
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['isHome' => 1, 'locale' => $locale]);
return $this->render('FrontBundle/Page/index.html.twig', [
'page' => $page,
'concert'=> $concert,
'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(),
]);
// return $this->redirectToRoute('framework_front_page_url', ['locale' => $locale, 'url' => NULL]);
}
/**
* @Route("/fr", name="framework_front_page_index_de")
*/
public function frAction(Request $request)
{
return $this->redirectToRoute('framework_front_page_index');
}
/**
* @Route("/{locale}/404", name="framework_front_page_404", requirements={"locale" = "([a-z\-0-9]+)"})
*/
public function error404Action(Request $request, $locale = NULL)
{
$request->setLocale($locale);
return $this->render('FrontBundle/Page/404.html.twig', [
'locale' => $request->getLocale()
]);
}
/**
* @Route("/page/{slug}", name="framework_front_page_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
*/
public function slugAction(Request $request, $slug = NULL, $locale = NULL)
{
$em = $this->getDoctrine()->getManager();
$globals = $this->get("twig")->getGlobals();
$locales = explode('|', $globals["app_locales"]);
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => $slug, 'locale' => $locale]);
if(is_null($page)){
return $this->redirectToRoute('framework_front_page_404', ['locale' => $locale]);
}
return $this->redirectToRoute('framework_front_page_url', ['locale' => $locale, 'url' => $page->getUrl()]);
}
/**
* @Route("/{locale}/mon-compte", name="framework_front_account_infos", requirements={"locale" = "([a-z\-0-9]+)"})
*/
public function accountAction(Request $request, $locale = NULL)
{
$request->setLocale($locale);
$em = $this->getDoctrine()->getManager();
$booking = $em->getRepository('FrameworkAppBundle:Booking')->findOneBy(['user' => $this->getUser()->getId()], ['createdAt' => 'DESC']);
$order = $em->getRepository('FrameworkAppBundle:Order')->findOneBy(['user' => $this->getUser()->getId()], ['createdAt' => 'DESC']);
$infos = $this->getUser()->getInfos();
if($order){
$infos = $order->getInfos();
} elseif($booking){
$infos = $booking->getInfos();
}
if( !isset($infos->lastname) ){
$infos->lastname = '';
}
if( !isset($infos->firstname) ){
$infos->firstname = '';
}
if( !isset($infos->company) ){
$infos->company = '';
}
if( !isset($infos->phone) ){
$infos->phone = '';
}
if( !isset($infos->address) ){
$infos->address = '';
}
if( !isset($infos->city) ){
$infos->city = '';
}
if( !isset($infos->zipcode) ){
$infos->zipcode = '';
}
if( !isset($infos->country_code) ){
$infos->country_code = '';
}
$em = $this->getDoctrine()->getManager();
$globals = $this->get("twig")->getGlobals();
$locales = explode('|', $globals["app_locales"]);
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'account', 'locale' => $locale]);
return $this->render('FrontBundle/Page/account.html.twig', [
'infos' => $infos,
'page' => $page,
'body' => '',
'de_url' => 'mon-compte',
'en_url' => 'mon-compte',
'fr_url' => 'mon-compte',
]);
}
/**
* @Route("/{locale}/mon-compte/favoris", name="framework_front_account_favoris", requirements={"locale" = "([a-z\-0-9]+)"})
*/
public function accountFavorisAction(Request $request, $locale = NULL)
{
$request->setLocale($locale);
$em = $this->getDoctrine()->getManager();
$globals = $this->get("twig")->getGlobals();
$locales = explode('|', $globals["app_locales"]);
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'account-favoris', 'locale' => $locale]);
$bookmark = $em->getRepository('FrameworkShopBundle:Bookmark')->findBy(['user' => $this->getUser()], ['createdAt' => 'DESC']);
return $this->render('FrontBundle/Page/account-favoris.html.twig', [
'page' => $page,
'body' => '',
'bookmark' => $bookmark,
'de_url' => 'mon-compte/favoris',
'en_url' => 'mon-compte/favoris',
'fr_url' => 'mon-compte/favoris',
]);
}
/**
* @Route("/{locale}/mon-compte/historique", name="framework_front_account_histo", requirements={"locale" = "([a-z\-0-9]+)"})
*/
public function accountHistoAction(Request $request, $locale = NULL)
{
$request->setLocale($locale);
$em = $this->getDoctrine()->getManager();
$globals = $this->get("twig")->getGlobals();
$locales = explode('|', $globals["app_locales"]);
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'account-histo', 'locale' => $locale]);
$bookings = $em->getRepository('FrameworkAppBundle:Booking')->findBy(['user' => $this->getUser()->getId()], ['createdAt' => 'DESC']);
$orders = $em->getRepository('FrameworkAppBundle:Order')->findBy(['user' => $this->getUser()->getId()], ['createdAt' => 'DESC']);
return $this->render('FrontBundle/Page/account-histo.html.twig', [
'orders' => $orders,
'bookings' => $bookings,
'page' => $page,
'body' => '',
'de_url' => 'mon-compte/historique',
'en_url' => 'mon-compte/historique',
'fr_url' => 'mon-compte/historique',
]);
}
/**
* @Route("/{locale}/mon-compte/contact", name="framework_front_account_contact", requirements={"locale" = "([a-z\-0-9]+)"})
*/
public function accountContactAction(Request $request, $locale = NULL)
{
$request->setLocale($locale);
$em = $this->getDoctrine()->getManager();
$globals = $this->get("twig")->getGlobals();
$locales = explode('|', $globals["app_locales"]);
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'account-contact', 'locale' => $locale]);
return $this->render('FrontBundle/Page/account-contact.html.twig', [
'page' => $page,
'body' => '',
'de_url' => 'mon-compte/contact',
'en_url' => 'mon-compte/contact',
'fr_url' => 'mon-compte/contact',
]);
}
/**
* @Route("/{locale}/{url}", name="framework_front_page_url", requirements={"locale" = "([a-z][a-z])", "url" = "([a-z\-0-9]+)"})
*/
public function urlAction(Request $request, $locale = NULL, $url = NULL)
{
$em = $this->getDoctrine()->getManager();
$request->setLocale($locale);
if(is_null($url)){
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['isHome' => 1, 'locale' => $locale]);
} else {
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['url' => $url, 'locale' => $locale]);
}
if(is_null($page)){
return $this->redirectToRoute('framework_front_page_404', ['locale' => $locale]);
}
$content = $page->getContent();
$body = explode('<body>', $content);
if(isset($body[1])){
$body = explode('</body>', $body[1])[0];
} else {
$body = '';
}
$head = '<head>
<title>'.$page->getMetaTitle().'</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="'.$page->getMetaDescription().'">
<link href="/editor/css/editor.css" rel="stylesheet">
</head>';
if($page->getIsHome()){
$concert = $em->getRepository('FrameworkAppBundle:Venue')->findOneBy(['title' => 'Mégaconcert']);
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['isHome' => 1, 'locale' => $locale]);
return $this->render('FrontBundle/Page/index.html.twig', [
'page' => $page,
'concert' =>$concert,
'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(),
]);
} elseif($page->getIsCms()){
return $this->render('FrontBundle/Page/page.html.twig', [
'page' => $page,
'body' => $body,
]);
// CUSTOM PAGES
} else {
switch ($page->getSlug()) {
// CONTACT
case 'contact':
return $this->render('FrontBundle/Page/contact.html.twig', [
'page' => $page,
]);
break;
case 'le-majestic':
return $this->render('FrontBundle/Page/le-majestic.html.twig', [
'page' => $page,
]);
break;
case 'nos-espaces':
return $this->render('FrontBundle/Page/nos-espaces.html.twig', [
'page' => $page,
]);
break;
case 'le-majestic':
return $this->render('FrontBundle/Page/le-majestic.html.twig', [
'page' => $page,
]);
break;
case 'le-versailles':
return $this->render('FrontBundle/Page/le-versailles.html.twig', [
'page' => $page,
]);
break;
case 'la-salle':
return $this->render('FrontBundle/Page/la-salle.html.twig', [
'page' => $page,
]);
break;
case 'lounge-club':
return $this->render('FrontBundle/Page/lounge-club.html.twig', [
'page' => $page,
]);
break;
case 'espace-entreprises':
return $this->render('FrontBundle/Page/espace-entreprises.html.twig', [
'page' => $page,
]);
break;
case 'notre-histoire':
return $this->render('FrontBundle/Page/notre-histoire.html.twig', [
'page' => $page,
]);
break;
case 'informations-pratiques':
return $this->render('FrontBundle/Page/informations-pratiques.html.twig', [
'page' => $page,
]);
break;
case 'nos-partenaires':
return $this->render('FrontBundle/Page/nos-partenaires.html.twig', [
'page' => $page,
]);
break;
// case 'Politique de confidentialité':
// return $this->render('FrontBundle/Page/politique-de-confidentialite.html.twig', [
// 'page' => $page,
// ]);
// break;
case 'faq':
$categories = $em->getRepository('FrameworkAppBundle:FaqCategory')->findBy([], ['position' => 'ASC']);
$items = $em->getRepository('FrameworkAppBundle:Faq')->findBy([], ['id' => 'ASC']);
return $this->render('FrontBundle/Page/faq.html.twig', [
'page' => $page,
'categories' => $categories,
'items' => $items,
]);
break;
case 'mini-suites':
return $this->render('FrontBundle/Page/mini-suites.html.twig', [
'page' => $page,
]);
break;
case 'offres-emploi':
$jobs = $em->getRepository('FrameworkAppBundle:Job')->findBy(['locale' => $locale, 'published' => 1], ['id' => 'ASC']);
return $this->render('FrontBundle/Page/offres-emploi.html.twig', [
'page' => $page,
'jobs' => $jobs,
]);
break;
case 'spectacles-speciaux':
return $this->render('FrontBundle/Page/spectacles-speciaux2.html.twig', [
'concerts' => $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => [3, 8, 23, 24, 33, 34]], ['start' => 'ASC']),
'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(['no', 'sv', 'ss', 'pa', 'main']),
'page' => $page,
]);
break;
case 'boutique':
if($locale == 'fr'){
return $this->redirectToRoute('framework_front_shop_all', ['locale' => $locale]);
} else {
return $this->redirectToRoute('framework_front_shop_all_de', ['locale' => $locale]);
}
$categories = $em->getRepository('FrameworkShopBundle:Category')->findBy([], ['position' => 'ASC']);
$featured = $em->getRepository('FrameworkShopBundle:Product')->featured();
return $this->render('FrontBundle/Page/shop-landing.html.twig', [
'page' => $page,
'featured' => $featured,
'categories' => $categories,
]);
break;
case 'reservation':
$events = null;
if( $request->get('event') != null ){
$events = explode(',', $request->get('event'));
}
return $this->render('FrontBundle/Page/reservation.html.twig', [
'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues($events),
'page' => $page,
]);
break;
case 'spectacles-precedents':
$posts = $em->getRepository('FrameworkAppBundle:Spectacle')->findBy(['locale' => $locale, 'published' => 1], ['id' => 'DESC']);
$posts_arr = [];
foreach ($posts as $key => $post) {
$post_fr = $em->getRepository('FrameworkAppBundle:Spectacle')->findOneBy(['slug' => $post->getSlug(), 'locale' => 'fr']);
$post->setDataform( $post_fr->getDataform() );
$post->setId( $post_fr->getId() );
$posts_arr[] = $post;
}
return $this->render('FrontBundle/Page/spectacles-precedents.html.twig', [
'spectacles' => $posts_arr,
'page' => $page,
]);
break;
case 'menus-tarifs':
return $this->render('FrontBundle/Page/menus-tarifs.html.twig', [
'page' => $page,
]);
break;
case 'actualites':
$posts = $em->getRepository('FrameworkAppBundle:Post')->findBy(['locale' => $locale, 'published' => 1], ['createdAt' => 'DESC']);
$posts_arr = [];
foreach ($posts as $key => $post) {
$post_fr = $em->getRepository('FrameworkAppBundle:Post')->findOneBy(['slug' => $post->getSlug(), 'locale' => 'fr']);
$post->setDataform( $post_fr->getDataform() );
$post->setId( $post_fr->getId() );
$posts_arr[] = $post;
}
return $this->render('FrontBundle/Page/actualites.html.twig', [
'posts' => $posts_arr,
'page' => $page,
]);
break;
case 'miss-alsace':
/* header("Location: https://miss-alsace.fr/");
die();*/
$price = 85;
$title = 'Miss Alsace';
$desc = 'Ouverture des portes à 17h15<br>Repas de 18h à 19h45<br>Élection à 20h<br>After au Lounge Club hors boissons de 23h jusqu\'à 2h30';
$subtitle = '26 juin 2025';
if($locale == 'en'){
$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';
$subtitle = 'June 26, 2025';
}
if($locale == 'de'){
$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';
$subtitle = '26. Juni 2025';
}
return $this->render('FrontBundle/Page/miss-alsace.html.twig', [
'page' => $page,
'title' => $title,
'subtitle' => $subtitle,
'desc' => $desc,
'price' => $price,
]);
break;
case 'afterwork':
return $this->redirectToRoute('framework_front_page_index');
// if( !in_array($_SERVER['REMOTE_ADDR'], ['92.188.126.134', '91.171.9.214', '92.188.134.117', '45.80.34.7']) ){
// exit;
// }
$venues = $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => 16]);
$price = 25;
$title = 'Afterwork';
$desc = 'Ouverture des portes à 18h00. Début à 18h30.';
$subtitle = 'Coup de coeur de Pierre Meyer';
if($locale == 'en'){
$subtitle = 'Coup de coeur de Pierre Meyer';
$desc = 'Doors open at 6:00 pm. Starts at 6:30pm.';
}
if($locale == 'de'){
$subtitle = 'Coup de coeur de Pierre Meyer';
$desc = 'Die Türen werden um 18.00 Uhr geöffnet. Beginn um 18:30 Uhr.';
}
return $this->render('FrontBundle/Page/afterwork.html.twig', [
'page' => $page,
'title' => $title,
'subtitle' => $subtitle,
'desc' => $desc,
'price' => $price,
'venues' => $venues,
'v_id' => intval($request->get('v')),
]);
break;
case 'oktoberfest':
return $this->redirectToRoute('framework_front_page_index');
// if( !in_array($_SERVER['REMOTE_ADDR'], ['92.188.126.134', '91.171.9.214', '92.188.134.117', '45.80.34.7']) ){
// exit;
// }
$price = 16;
$title = 'Oktoberfest 2023';
$desc = 'Dîner à 19h00 | Soirée dansante à 20h00';
$subtitle = 'Mardi 31 octobre 2023';
if($locale == 'en'){
$subtitle = 'Tuesday, October 31, 2023';
$desc = 'Dinner at 7pm | Dance evening at 8pm';
}
if($locale == 'de'){
$subtitle = 'Dienstag, 31. Oktober 2023';
$desc = 'Abendessen um 19.00 Uhr | Tanzabend um 20.00 Uhr';
}
return $this->render('FrontBundle/Page/oktoberfest.html.twig', [
'page' => $page,
'title' => $title,
'subtitle' => $subtitle,
'desc' => $desc,
'price' => $price,
'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(),
]);
break;
case 'flash':
return $this->redirectToRoute('framework_front_page_index');
$price = 20;
$title = 'FLASH2211';
$desc = 'Vente flash / Grand Amour (Billet de spectacle à -53%)';
$desc = 'Il n\'y a plus de tickets disponibles pour cette date.';
$subtitle = '22 novembre 2023';
$dispo = 'Disponible du <strong>09.11.2023</strong> au <strong>13.11.2023</strong>';
if($locale == 'en'){
$subtitle = 'November 22, 2023';
$desc = 'Flash sale / Grand Amour (Show ticket at -53%)';
$desc = 'There are no more tickets available for this date.';
$dispo = 'Available from <strong>09.11.2023</strong> to <strong>13.11.2023</strong>';
}
if($locale == 'de'){
$subtitle = '22. November 2023';
$desc = 'Blitzverkauf / Grand Amour (Show-Ticket -53%)';
$desc = 'Für dieses Datum sind keine Tickets mehr verfügbar.';
$dispo = 'Verfügbar vom <strong>09.11.2023</strong> bis <strong>13.11.2023</strong>';
}
return $this->render('FrontBundle/Page/flash.html.twig', [
'page' => $page,
'title' => $title,
'subtitle' => $subtitle,
'desc' => $desc,
'price' => $price,
'dispo' => $dispo,
]);
break;
case 'housh-ma-housh':
$venues = $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => 17, 'isfull' => NULL]);
$isfull = true;
foreach ($venues as $key => $venue) {
if($venue->getIsfull() == NULL){
$isfull = false;
}
}
$price = 16;
$title = 'Housch Ma Housch «WOW»';
$desc = 'Spectacle pour enfants';
$subtitle = 'Du rire pendant les vacances scolaires d’hiver';
if($locale == 'en'){
$subtitle = 'Laughter during the winter school vacations';
$desc = 'Children\'s show';
}
if($locale == 'de'){
$subtitle = 'Lachen während der Winterschulferien';
$desc = 'Aufführung für Kinder';
}
return $this->render('FrontBundle/Page/housh-ma-housh.html.twig', [
'page' => $page,
'title' => $title,
'subtitle' => $subtitle,
'desc' => $desc,
'price' => $price,
'venues' => $venues,
'v_id' => intval($request->get('v')),
'isfull' => $isfull
]);
break;
case 'elixir-magique':
$venues = $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => 28, 'isfull' => NULL]);
$isfull = true;
foreach ($venues as $key => $venue) {
if($venue->getIsfull() == NULL){
$isfull = false;
}
}
$price = 27;
$title = 'L\'élixir magique des 4 mondes';
$desc = 'Le plus grand spectacle pour les enfants';
$subtitle = '43 artistes, 4 comédiennes chanteuses';
if($locale == 'en'){
$subtitle = '43 artists, 4 actresses and singers';
$desc = 'The biggest show for kids';
}
if($locale == 'de'){
$subtitle = '43 Künstler, 4 Schauspielerinnen, Sängerinnen';
$desc = 'Die größte Show für Kinder';
}
return $this->render('FrontBundle/Page/elixir-magique.html.twig', [
'page' => $page,
'title' => $title,
'subtitle' => $subtitle,
'desc' => $desc,
'price' => $price,
'venues' => $venues,
'v_id' => intval($request->get('v')),
'isfull' => $isfull
]);
break;
case 'black-friday-2024':
return $this->redirectToRoute('framework_front_page_index');
return $this->render('FrontBundle/Page/black-friday-landing.html.twig', [
'page' => $page,
]);
break;
case 'black-friday':
return $this->redirectToRoute('framework_front_page_index');
$venues = $em->getRepository('FrameworkAppBundle:Venue')->findBy(['id' => [
'1546',
'1555',
'1577',
'1583',
'1594',
'1601',
], 'isfull' => NULL]);
$isfull = false;
$price = 84;
$title = 'Black Friday';
$desc = 'Du jeudi 28 novembre au lundi 2 décembre (16h00)';
$subtitle = 'REMISE EXCEPTIONNELLE de 25 %';
if($locale == 'en'){
$subtitle = '25% EXCEPTIONAL DISCOUNT';
$desc = 'Thursday, November 28 to Monday, December 2 (4:00 pm)';
}
if($locale == 'de'){
$subtitle = 'AUSSERGEWÖHNLICHER RABATT von 25 %';
$desc = 'Donnerstag, 28. November bis Montag, 2. Dezember (16.00 Uhr)';
}
return $this->render('FrontBundle/Page/black-friday.html.twig', [
'page' => $page,
'title' => $title,
'subtitle' => $subtitle,
'desc' => $desc,
'price' => $price,
'venues' => $venues,
'v_id' => intval($request->get('v')),
'isfull' => $isfull
]);
break;
case 'noel':
return $this->render('FrontBundle/Page/noel.html.twig', [
'page' => $page,
'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(),
]);
break;
case 'promos':
return $this->redirectToRoute('framework_front_page_index');
return $this->render('FrontBundle/Page/promos.html.twig', [
'page' => $page,
'venues' => $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues(),
]);
break;
case 'robin-leon-show':
return $this->redirectToRoute('framework_front_page_index');
$venues = $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => 18, 'isfull' => NULL]);
$isfull = true;
foreach ($venues as $key => $venue) {
if($venue->getIsfull() == NULL){
$isfull = false;
}
}
$price = 20;
$title = 'Robin Leon Show';
$desc = 'Ouverture des portes à 19 H 00 - début de l\'enregistrement : 20 H 00';
$subtitle = 'Avec la participation d\'artistes internationaux.';
if($locale == 'en'){
$subtitle = 'With the participation of international artists.';
$desc = 'Doors open at 7.00 p.m. - Start of registration: 8.00 p.m.';
}
if($locale == 'de'){
$subtitle = 'Mit der Teilnahme von internationalen Künstlern.';
$desc = 'Türöffnung: 19.00 Uhr - Beginn der Aufnahme: 20.00 Uhr';
}
return $this->render('FrontBundle/Page/leon-show.html.twig', [
'page' => $page,
'title' => $title,
'subtitle' => $subtitle,
'desc' => $desc,
'price' => $price,
'venues' => $venues,
'v_id' => intval($request->get('v')),
'isfull' => $isfull
]);
break;
case 'carnaval-de-venise':
return $this->redirectToRoute('framework_front_page_index');
$venues = $em->getRepository('FrameworkAppBundle:Venue')->findBy(['venueType' => 19, 'isfull' => NULL]);
$isfull = true;
foreach ($venues as $key => $venue) {
if($venue->getIsfull() == NULL){
$isfull = false;
}
}
$price = 16;
$optionPrice = 3;
$title = 'Carnaval de Venise';
$desc = 'Vendredi 1er Mars 2024 / Lounge Club';
$subtitle = 'Animé par le Challenger Orchestre';
if($locale == 'en'){
$subtitle = 'Hosted by the Challenger Orchestre';
$desc = 'Friday, March 1, 2024 / Lounge Club';
}
if($locale == 'de'){
$subtitle = 'Animiert durch das Challenger Orchester';
$desc = 'Freitag, 1. März 2024 / Lounge Club';
}
return $this->render('FrontBundle/Page/carnaval-de-venise.html.twig', [
'page' => $page,
'title' => $title,
'subtitle' => $subtitle,
'desc' => $desc,
'price' => $price,
'optionPrice' => $optionPrice,
'venues' => $venues,
'v_id' => intval($request->get('v')),
'isfull' => $isfull
]);
break;
case 'droits-de-la-femme':
//return $this->redirectToRoute('framework_front_page_index');
$price = 20;
$price2 = 48;
$title = 'Vente flash à l\'honneur des femmes';
$desc = 'Réservée à 200 femmes | -57% sur le billet du spectacle';
//$desc = 'Il n\'y a plus de tickets disponibles pour cette date.';
$subtitle = '8 Mars 2024 | 22h15';
$dispo = 'Disponible du <strong>09.11.2023</strong> au <strong>13.11.2023</strong>';
if($locale == 'en'){
$title = 'Flash Sale zu Ehren der Frauen';
$subtitle = 'March 8, 2024 | 22h15';
$desc = 'Reserviert für 200 Frauen | -57% auf die Eintrittskarte für die Show';
//$desc = 'There are no more tickets available for this date.';
$dispo = 'Available from <strong>09.11.2023</strong> to <strong>13.11.2023</strong>';
}
if($locale == 'de'){
$title = 'Flash sale in honor of women';
$subtitle = '8. März 2024 | 22.15 Uhr';
$desc = 'Reserved for 200 women | -57% off ticket price';
//$desc = 'Für dieses Datum sind keine Tickets mehr verfügbar.';
$dispo = 'Verfügbar vom <strong>09.11.2023</strong> bis <strong>13.11.2023</strong>';
}
return $this->render('FrontBundle/Page/droits-de-la-femme.html.twig', [
'page' => $page,
'title' => $title,
'subtitle' => $subtitle,
'desc' => $desc,
'price' => $price,
'price2' => $price2,
'dispo' => $dispo,
]);
break;
default:
return $this->redirectToRoute('framework_front_page_404');
// return $this->render('FrontBundle/Page/page.html.twig', [
// 'page' => $page,
// 'body' => $body,
// ]);
break;
}
// END CUSTOM PAGES
}
// return new Response(
// '<!DOCTYPE html><html lang="'.$page->getLocale().'">'.$head.$body.'</html>'
// );
}
/**
* @Route("/{locale}/actualite/{slug}", name="framework_front_actualite_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
*/
public function actualiteAction(Request $request, $slug = NULL, $locale = NULL)
{
$request->setLocale($locale);
$em = $this->getDoctrine()->getManager();
$globals = $this->get("twig")->getGlobals();
$locales = explode('|', $globals["app_locales"]);
$post = $em->getRepository('FrameworkAppBundle:Post')->findOneBy(['slug' => $slug, 'locale' => $locale]);
$post_fr = $em->getRepository('FrameworkAppBundle:Post')->findOneBy(['slug' => $slug, 'locale' => 'fr']);
$post->setDataform( $post_fr->getDataform() );
$post->setId( $post_fr->getId() );
$post->setTags( $post_fr->getTags() );
$posts = $em->getRepository('FrameworkAppBundle:Post')->sameTags($post_fr->getTags());
if(is_null($post)){
return $this->redirectToRoute('framework_front_page_index');
}
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'news', 'locale' => $locale]);
return $this->render('FrontBundle/Page/actualite.html.twig', [
'posts' => $posts,
'slug' => $slug,
'post' => $post,
'page' => $page,
'body' => '',
'de_url' => 'news',
'en_url' => 'news',
'fr_url' => 'actualites',
]);
}
/**
* @Route("/{locale}/spectacles-precedents/{slug}", name="framework_front_spectacle_prev_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
* @Route("/{locale}/vergangene-auffuhrungen/{slug}", name="framework_front_spectacle_prev_slug_de", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
* @Route("/{locale}/past-shows/{slug}", name="framework_front_spectacle_prev_slug_en", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
*/
public function spectaclePrevAction(Request $request, $slug = NULL, $locale = NULL)
{
$request->setLocale($locale);
$em = $this->getDoctrine()->getManager();
$globals = $this->get("twig")->getGlobals();
$locales = explode('|', $globals["app_locales"]);
$post = $em->getRepository('FrameworkAppBundle:Spectacle')->findOneBy(['slug' => $slug, 'locale' => $locale]);
$post_fr = $em->getRepository('FrameworkAppBundle:Spectacle')->findOneBy(['slug' => $slug, 'locale' => 'fr']);
$post->setDataform( $post_fr->getDataform() );
$post->setId( $post_fr->getId() );
// $post->setTags( $post_fr->getTags() );
$posts = $em->getRepository('FrameworkAppBundle:Spectacle')->sameTags($post_fr->getTags());
if(is_null($post)){
return $this->redirectToRoute('framework_front_page_index');
}
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'spectacle-precedent-page', 'locale' => $locale]);
return $this->render('FrontBundle/Page/spectacle-prev.html.twig', [
'posts' => $posts,
'post' => $post,
'page' => $page,
'post_id' => $post_fr->getId(),
'de_url' => 'vergangene-auffuhrungen/'.$slug,
'en_url' => 'past-shows/'.$slug,
'fr_url' => 'menus-tarifs/'.$slug,
'body' => '',
]);
}
/**
* @Route("/{locale}/menus-tarifs/{slug}", name="framework_front_menus_tarifs_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
* @Route("/{locale}/menu-preise/{slug}", name="framework_front_menus_tarifs_slug_de", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
* @Route("/{locale}/menus-prices/{slug}", name="framework_front_menus_tarifs_slug_en", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
*/
public function menusTarifsAction(Request $request, $slug = NULL, $locale = NULL)
{
$request->setLocale($locale);
$em = $this->getDoctrine()->getManager();
$globals = $this->get("twig")->getGlobals();
$locales = explode('|', $globals["app_locales"]);
if( !in_array($slug, ['le-majestic', 'le-versailles', 'spectacle']) ) {
return $this->redirectToRoute('framework_front_page_index');
}
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'menus-tarifs-page', 'locale' => $locale]);
$venues = [];
$tr = $this->loadTranslation($locale);
if($slug == 'le-majestic'){
$metaDesc = $tr['menus_tarifs_metadesc_mj'];
$h1 = $tr['menus_tarifs_h1_mj'];
}
if($slug == 'le-versailles'){
$metaDesc = $tr['menus_tarifs_metadesc_ve'];
$h1 = $tr['menus_tarifs_h1_ve'];
}
if($slug == 'spectacle'){
$metaDesc = $tr['menus_tarifs_metadesc_sl'];
$h1 = $tr['menus_tarifs_h1_sl'];
}
// $nbr = 365;
// for ($i=0; $i < $nbr; $i++) {
// $time = strtotime('+'.$i.' day', time());
// $day = intval(date('w', $time));
// if( $day == 3 || $day == 4 || $day == 6 || $day == 0 ){
// if($day == 3 || $day == 4){
// $className = 'd1';
// }
// if($day == 6){
// $className = 'd3';
// }
// if($day == 0){
// // $className = 'd5';
// $className = 'd3'; // NEW SHOW 2023
// }
// $venues[] = [
// 'title' => 'Midi',
// 'className' => 'midi '.$className,
// 'start' => date('Y-m-d', $time).'T12:00:00',
// ];
// }
// if( $day == 5 || $day == 6 ){
// if($day == 5){
// // $className = 'd2';
// $className = 'd4'; // NEW SHOW 2023
// }
// if($day == 6){
// $className = 'd4';
// }
// $venues[] = [
// 'title' => 'Soirée',
// 'className' => 'soir '.$className,
// 'start' => date('Y-m-d', $time).'T19:00:00',
// ];
// }
// }
// FIX NEW MODE WITH REAL VENUES
$venues = [];
// $venuesList = $em->getRepository('FrameworkAppBundle:Venue')->findBy(['deleted' => NULL]);
$venuesList = $em->getRepository('FrameworkAppBundle:Venue')->getNextVenues();
foreach ($venuesList as $key => $venue) {
// if($venue->getVenueType()->getId() != 4 && $venue->getVenueType()->getId() != 5 && $venue->getVenueType()->getId() != 15){ //EXIT noel enfants + miss
if($venue->getVenueType()->getId() == 7 || $venue->getVenueType()->getId() == 11){
$day = intval($venue->getStart()->format('w'));
if($day == 3 || $day == 4){
$className = 'd1';
}
if($day == 6){
$className = 'd3';
}
if($day == 0){
// $className = 'd5';
$className = 'd3'; // NEW SHOW 2023
}
if($day == 5){
// $className = 'd2';
$className = 'd4'; // NEW SHOW 2023
}
if($day == 6){
$className = 'd4';
}
if($day == 2){ // MARDI DECEMBRE
$className = 'd1';
}
if($venue->getForceDay() != ''){
$className = $venue->getForceDay();
}
$isFull = $venue->getIsfull();
// PLACES DISPO EN FONCTION DES RESTAURANTS
$places = $venue->getPlaces()->toArray();
if( isset($places[0]) ){
if($slug == 'le-majestic'){
if($places[0]->isIsMajesicFull()){
$isFull = true;
}
} else {
if($places[0]->isIsVersaillesFull()){
$isFull = true;
}
}
}
if( intval($venue->getStart()->format('H')) < 16){
$venues[] = [
'isfull' => $isFull,
'title' => 'Midi',
'className' => 'midi '.$className,
'start' => $venue->getStart()->format('Y-m-d').'T12:00:00',
];
} else {
$venues[] = [
'isfull' => $isFull,
'title' => 'Soirée',
'className' => 'soir '.$className,
'start' => $venue->getStart()->format('Y-m-d').'T19:00:00',
];
}
}
}
// END FIX NEW MODE WITH REAL VENUES
return $this->render('FrontBundle/Page/menus-tarifs-page.html.twig', [
'venues' => $venues,
'slug' => $slug,
'de_url' => 'menu-preise/'.$slug,
'en_url' => 'menus-prices/'.$slug,
'fr_url' => 'menus-tarifs/'.$slug,
'page' => $page,
'body' => '',
'metaDesc' => $metaDesc,
'h1' => $h1,
]);
}
/**
* @Route("/{locale}/spectacle/{slug}", name="framework_front_spectacle_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
*/
public function spectacleAction(Request $request, $slug = NULL, $locale = NULL)
{
$request->setLocale($locale);
$em = $this->getDoctrine()->getManager();
$globals = $this->get("twig")->getGlobals();
$locales = explode('|', $globals["app_locales"]);
$page = $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => $slug, 'locale' => $locale]);
if ($page && $page->getSlug() == "grand-amour") {
return $this->redirectToRoute('framework_front_spectacle_prev_slug', ['locale' => $locale]);
}
return $this->render('FrontBundle/Page/spectacle-'.$slug.'.html.twig', [
'slug' => $slug,
'page' => $page,
'body' => '',
'de_url' => 'spectacle/'.$slug,
'en_url' => 'spectacle/'.$slug,
'fr_url' => 'spectacle/'.$slug,
]);
}
/**
* @Route("/contact/send/{locale}", name="framework_front_page_contact_send", requirements={"locale" = "([a-z\-0-9]+)"})
*/
public function contactSendAction(Request $request, MailerInterface $mailer, $locale = NULL)
{
$request->setLocale($locale);
$error = '';
$success = true;
$isValid = $this->reCaptcha($request->get('token'));
$tr = $this->loadTranslation($locale);
$globals = $this->get("twig")->getGlobals();
if(!$isValid){
$error = $tr['contact_error1'];
$success = false;
}
if($request->get('subject') == ''
|| $request->get('firstname') == ''
|| $request->get('lastname') == ''
|| $request->get('phone') == ''
|| $request->get('email') == ''
|| $request->get('address') == ''
|| $request->get('zipcode') == ''
|| $request->get('city') == ''
|| $request->get('country') == ''
|| $request->get('subject') == ''
|| $request->get('message') == ''){
$error = $tr['contact_error2'];
$success = false;
}
if (!filter_var($request->get('email'), FILTER_VALIDATE_EMAIL)) {
$error = $tr['contact_error3'];
$success = false;
}
if($success){
//ENVOI EMAIL
$from = $globals['app_email_noreply'];
$to = $globals['app_email_address'];
$email = (new Email())
->from($from)
->to($to)
->replyTo($request->get('email'))
//->priority(Email::PRIORITY_HIGH)
->subject('Nouveau message : Formulaire de contact')
->text(nl2br('Nouveau message : Formulaire de contact'))
->html($this->renderView(
'FrontBundle/Emails/general.html.twig', array(
'title' => 'Nouveau message : Formulaire de contact',
'content' => '<p>
Nom : <strong>'.ucfirst(strtolower($request->get('firstname'))).' '.strtoupper($request->get('lastname')).'</strong><br>
Société : <strong>'.$request->get('company').'</strong><br>
Téléphone : <strong><a href="tel:'.$request->get('phone').'">'.$request->get('phone').'</a></strong><br>
E-mail : <strong><a href="mailto:'.$request->get('email').'">'.$request->get('email').'</a></strong><br>
Adresse : <strong>'.$request->get('address').' '.$request->get('zipcode').' '.$request->get('city').' '.$request->get('country').'</strong><br><br>
Sujet : <strong>'.$request->get('subject').'</strong><br>
Message : <strong>'.$request->get('message').'</strong>
</p>
'
)
));
$mailer->send($email);
//FIN ENVOI EMAIL
}
$data = [
'error' => $error,
'success' => $success
];
$response = new Response(json_encode($data));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* @Route("/contact/send-bo/{locale}", name="framework_front_page_contact_send_bo", requirements={"locale" = "([a-z\-0-9]+)"})
*/
public function contactSendBoAction(Request $request, MailerInterface $mailer, $locale = NULL)
{
$request->setLocale($locale);
$error = '';
$success = true;
$isValid = $this->reCaptcha($request->get('token'));
$tr = $this->loadTranslation($locale);
$globals = $this->get("twig")->getGlobals();
if(!$isValid){
$error = $tr['contact_error1'];
$success = false;
}
if($request->get('subject') == ''
|| $request->get('firstname') == ''
|| $request->get('lastname') == ''
|| $request->get('subject') == ''
|| $request->get('message') == ''){
$error = $tr['contact_error2'];
$success = false;
}
if (!filter_var($request->get('email'), FILTER_VALIDATE_EMAIL)) {
$error = $tr['contact_error3'];
$success = false;
}
if($success){
//ENVOI EMAIL
$from = $globals['app_email_noreply'];
$to = $globals['app_email_address'];
$email = (new Email())
->from($from)
->to($to)
->replyTo($request->get('email'))
//->priority(Email::PRIORITY_HIGH)
->subject('Nouveau message : Formulaire de contact')
->text(nl2br('Nouveau message : Formulaire de contact'))
->html($this->renderView(
'FrontBundle/Emails/general.html.twig', array(
'title' => 'Nouveau message : Formulaire de contact',
'content' => '<p>
Nom : <strong>'.ucfirst(strtolower($request->get('firstname'))).' '.strtoupper($request->get('lastname')).'</strong><br>
Société : <strong>'.$this->getUser()->getInfo('company').'</strong><br>
Téléphone : <strong><a href="tel:'.$this->getUser()->getInfo('phone').'">'.$this->getUser()->getInfo('phone').'</a></strong><br>
E-mail : <strong><a href="mailto:'.$this->getUser()->getEmail().'">'.$this->getUser()->getEmail().'</a></strong><br>
Adresse : <strong>'.$this->getUser()->getInfo('address').' '.$this->getUser()->getInfo('zipcode').' '.$this->getUser()->getInfo('city').' '.$this->getUser()->getInfo('country').'</strong><br><br>
Sujet : <strong>'.$request->get('subject').'</strong><br>
Message : <strong>'.$request->get('message').'</strong>
</p>
'
)
));
$mailer->send($email);
//FIN ENVOI EMAIL
}
$data = [
'error' => $error,
'success' => $success
];
$response = new Response(json_encode($data));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
function reCaptcha($token = NULL){
$globals = $this->get("twig")->getGlobals();
try {
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = ['secret' => $globals['recaptcha_secret_key'],
'response' => $token,
'remoteip' => $_SERVER['REMOTE_ADDR']];
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$result = json_decode($result);
if($result->success && $result->score >= 0.5){
return true;
} else {
return false;
}
}
catch (Exception $e) {
return null;
}
}
/**
* @Route("/newsletter/{locale}", name="framework_front_page_newsletter", requirements={"locale" = "([a-z\-0-9]+)"})
*/
public function newsletterAction(Request $request, $locale = NULL)
{
$request->setLocale($locale);
$em = $this->getDoctrine()->getManager();
$tr = $this->loadTranslation($locale);
$error = '';
$success = true;
if (!filter_var($request->get('email'), FILTER_VALIDATE_EMAIL)) {
$error = $tr['newsletter_error1'];
$success = false;
}
if($em->getRepository('FrameworkAppBundle:Newsletter')->findOneBy(['email' => $request->get('email')])){
$error = $tr['newsletter_error2'];
$success = false;
}
if($success){
$newsletter = new Newsletter();
$newsletter->setEmail($request->get('email'));
$em->persist($newsletter);
$em->flush();
}
$data = [
'error' => $error,
'success' => $success
];
$response = new Response(json_encode($data));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function loadTranslation($locale){
$arr = [];
$em = $this->getDoctrine()->getManager();
$translations = $em->getRepository('FrameworkAppBundle:Translation')->findAll();
foreach ($translations as $key => $translation) {
$content = $translation->getContent();
if(isset($content[$locale])){
$arr[$translation->getSlug()] = $content[$locale];
} else {
$arr[$translation->getSlug()] = $translation->getSlug();
}
}
return $arr;
}
}