<?php
namespace App\Controller;
use App\Entity\Activity;
use App\Entity\Buttons;
use App\Entity\Category;
use App\Entity\Lang;
use App\Entity\LocationPhone;
use App\Entity\Locations;
use App\Entity\LogUser;
use App\Entity\LogWhatsapp;
use App\Entity\Qr;
use App\Entity\TemplateWhatsapp;
use App\Entity\User;
use App\Entity\Link;
use App\Entity\LogTracking;
use App\Service\Emoji;
use App\Service\ExternalCalls;
use App\Service\Meta;
use App\Service\GupShup;
use App\Service\Utilities;
use App\Service\Dialog;
use Doctrine\Persistence\ManagerRegistry;
use Google\Service\AIPlatformNotebooks\Location;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
use Symfony\Contracts\HttpClient\HttpClientInterface;
class MainController extends AbstractController{
private $client;
public function __construct(HttpClientInterface $client)
{
$this->client = $client;
}
/**
* @Route("/", name="main_page", methods={"GET"})
*
*/
public function main(Request $request, ManagerRegistry $doctrine){
$lang = mb_strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
if ( $request->get('lang') && !empty($request->get('lang')) ) {
$lang = $request->get('lang');
}
if ( $lang == "gl" || $lang == "eu" ) $lang = "es";
$lang = in_array($lang, ['es', 'ca', 'fr', 'it', 'pt']) ? $lang : 'en';
return $this->redirect('/'.$lang . '/');
/*
// $this->redirectToRoute('get_hash', ['C4mprod0n']);
$user = $this->getUser();
if (!$user) {
return $this->forward('App\Controller\LandingController::landing');
//return $this->redirectToRoute('landing'); // app_login
}
$em = $doctrine->getManager();
$locationsRepo = $em->getRepository(Locations::class);
$isAdmin = in_array("ROLE_ADMIN", $user->getRoles());
if(!$isAdmin) {
return $this->forward('App\Controller\LandingController::landing');
//return $this->redirectToRoute('landing');
}
$locations = $locationsRepo->findBy(array("status" => 1));
return $this->render('main/mainTemplate.html.twig', array(
"baseUrl" => $this->getParameter("app.base_url"),
"locations" => $locations,
"isAdmin" => $isAdmin,
));
*/
}
/**
* @Route("/meteo", name="meteo", methods={"GET"})
*
*/
public function meteo(ExternalCalls $externallCalls){
$user = $this->getUser();
if (!$user) {
return $this->redirectToRoute('app_login');
}
$url = "https://www.el-tiempo.net/api/json/v2/provincias/17/municipios/17039";
return new Response($externallCalls->getMeteo($url));
}
/**
* @Route("/r/{hash}", name="get_redirect", methods={"GET"})
*
*/
public function getRedirect(Request $request, Utilities $utilities, ManagerRegistry $doctrine, $hash): Response
{
$em = $doctrine->getManager();
$locationRepo = $em->getRepository(Locations::class);
$userRepo = $em->getRepository(User::class);
$logTrackingRepo = $em->getRepository(LogTracking::class);
$now = new \DateTime('now');
$now->setTimezone(new \DateTimeZone('Europe/Madrid'));
$parsedString = [];
parse_str(base64_decode($hash), $parsedString);
// dd(base64_decode($hash));
$url = base64_decode($parsedString["url"]);
$user = $userRepo->find($parsedString["user"]);
$log = $logTrackingRepo->findOneBy(array("user" => $user), array("dateCreated" => "DESC"));
if(!$log || ($log && $log->getUrl() != $url)){
$location = $locationRepo->find($parsedString["location"]);
$logTracking = new LogTracking();
$logTracking->setUrl($url);
$logTracking->setType($parsedString["type"]);
$logTracking->setLocation($location);
$logTracking->setUser($user);
$logTracking->setEvent($parsedString["event"] == "null" ? null : $parsedString["event"]);
$logTracking->setExtraInfo($parsedString["extra"] == "null" ? null : $parsedString["extra"]);
$logTracking->setDateCreated($now);
$em->persist($logTracking);
$em->flush();
}
return $this->redirect($url);
}
/**
* @Route("/l/{hash}", name="get_hash", methods={"GET"})
*
*/
public function getHash(Request $request,Utilities $utilities, ManagerRegistry $doctrine, SessionInterface $session, Dialog $dialog): Response
{
return $this->controlHash($request, $utilities, $doctrine, $session, $dialog);
}
public function controlHash(Request $request, Utilities $utilities, ManagerRegistry $doctrine, SessionInterface $session, Dialog $dialog): Response
{
$hash = $request->get('hash');
$text = $request->get('text');
$url = "";
$em = $doctrine->getManager();
$qrRepo = $em->getRepository(Qr::class);
$now = new \DateTime('now');
$now->setTimezone(new \DateTimeZone('Europe/Madrid'));
$qrHash = $qrRepo->findOneBy(array("hash" => $hash));
//Guardar info a log_user i depenent l'idioma envia el missatge en l'idioma corresponent
if($qrHash){
$link = $em->getRepository(Link::class)->find($qrHash->getLink());
if($link){
$hash = $utilities->generateHash();
$session_qr = $session->get('qr');
$session_qr_exists = ( ($session_qr) && ( $session_qr['expires'] <= time() + (86400) ) ) ? true : false;
if ( $session_qr_exists ) {
$logUser = $em->getRepository(LogUser::class)->findOneBy(array("hash" => $session_qr['hash'] ));
if ($logUser) {
$session->set('logUser', $logUser->getId());
$separator = (strpos($link->getLink(), '?') !== false) ? "&" : "?";
return new RedirectResponse( $link->getLink().$separator.'hash='.$session_qr['hash'] );
}
}
$session->set('qr', [
'hash' => $hash,
'expires' => time() + (86400)
]);
$logUser = new LogUser();
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$platform = $utilities->getPlatform($user_agent);
$browser = $utilities->getBrowser($user_agent);
$ip = $_SERVER['REMOTE_ADDR'];
$lang = mb_strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
$logUser = new LogUser();
$logUser->setQr($qrHash);
$logUser->setHash($hash);
$logUser->setPlatform($platform['name']);
$logUser->setPlatformVersion($platform['version']);
$logUser->setBrowser($browser);
$logUser->setRemoteAddr($ip);
$logUser->setDateCreated($now);
$logUser->setBrowserLang($lang);
$logUser->setUser(null);
$em->persist($logUser);
$em->flush();
$session->set('logUser', $logUser->getId());
// REDIRECT
$locationPhoneFlux = $qrHash->getLocationPhone()->getFlux();
$locationName = mb_strtolower($qrHash->getLocationPhone()->getLocation()->getName());
if($locationPhoneFlux == "direct"){
//Send message depending on the lang
$text = $dialog->getStartText($locationName, $lang);
$phone = $utilities->dcrypt($qrHash->getLocationPhone()->getPhone());
$url = 'https://api.whatsapp.com/send?phone='.$phone.'&text=' . $text;
} else {
$u = (strpos($link->getLink(), "?") == false) ? "?" : "&";
$url = $link->getLink() . $u . 'hash=' . $logUser->getHash();
}
return $this->redirect( $url );
}
}
// TODO: Page error
die('Link not found');
}
/**
* @Route("/checkPhone", name="get_check_phone", methods={"POST"})
*
*/
public function functionCheckPhone(Request $request, Utilities $utilities, ManagerRegistry $doctrine, SessionInterface $session){
$id = null;
$now = new \DateTime('now');
$now->setTimezone(new \DateTimeZone('Europe/Madrid'));
try{
$locationName = $session->get('location');
$post = $request->request->all();
$em = $doctrine->getManager();
$userRepo = $em->getRepository(User::class);
$logUserRepo = $em->getRepository(LogUser::class);
$locationRepo = $em->getRepository(Locations::class);
if($post && (key_exists("prefix", $post) && $post['prefix'])
&& (key_exists("phone", $post) && $post['phone'] && strlen($post['phone']) > 7)
&& (key_exists("lang", $post) && $post['lang'])){
$user = $userRepo->findOneBy(array("phone" => $utilities->ecrypt($post['prefix'].$post['phone'])));
$exists = $user && $user->getTermsPolicy() ? true: false;
$langDetected = key_exists("langDetected", $post) && $post["langDetected"]? $post["langDetected"]:null;
//Create user if it doesn't exists
if(!$user){
$user = new User();
$user->setPhone($utilities->ecrypt($post['prefix'].$post['phone']));
$user->setPrefix($utilities->ecrypt($post['prefix']));
$user->setHash(bin2hex(random_bytes(16)));
$user->setTermsPolicy(0);
$user->setDateCreated($now);
$user->setLang(mb_strtolower($post["lang"]));
$user->setLangDetected(mb_strtolower($langDetected));
if($locationName){
$location = $locationRepo->findOneBy(array("name" => $locationName));
$user->setRegisteredLocation($location);
}
$em->persist($user);
$em->flush();
}else if($user->getLang() != mb_strtolower($post["lang"])){
$user->setLang(mb_strtolower($post["lang"]));
$em->persist($user);
$em->flush();
}
$session->set('user', $user->getId());
//Update logUser
$logUser = $session->get('logUser');
if ( $logUser ) {
$logUserFound = $logUserRepo->find($logUser);
$logUserFound->setUser($user);
if(!$locationName && !$user->getRegisteredLocation()){
$loc = $logUserFound->getQr()->getLocationPhone()->getLocation();
$user->setRegisteredLocation($loc);
$em->persist($user);
}
$em->persist($logUserFound);
$em->flush();
}
}else{
throw new \Exception("empty_fields");
}
}catch(\Exception $e){
return new JsonResponse([
"status" => "error",
"data" => $e->getMessage()
]);
}
return new JsonResponse([
"status" => "success",
"exists" => $exists
]);
}
/**
* @Route("/checkTerms", name="get_check_terms", methods={"POST"})
*
*/
public function functionCheckTerms(Request $request, Utilities $utilities, ManagerRegistry $doctrine, SessionInterface $session){
$phone = null;
$now = new \DateTime('now');
$now->setTimezone(new \DateTimeZone('Europe/Madrid'));
try{
$post = $request->request->all();
$em = $doctrine->getManager();
$userRepo = $em->getRepository(User::class);
$user = $session->get('user');
if($post
&& ($user)
&& (key_exists("lang", $post) && $post['lang'])){
$userFound = $userRepo->find($user);
//Update Terms And Policy
if($userFound){
$userFound->setTermsPolicy(1);
$em->persist($userFound);
$em->flush();
}else{
throw new \Exception("not_valid_user");
}
$phone = $utilities->dcrypt($userFound->getPhone());
}else{
throw new \Exception("empty_fields");
}
}catch(\Exception $e){
return new JsonResponse([
"status" => "error",
"data" => $e->getMessage()
]);
}
return new JsonResponse([
"status" => "success",
"data" => $phone
]);
}
/**
* @Route("/start", name="get_send_first_template", methods={"POST"})
*
*/
public function sendStartTemplate(Request $request, Utilities $utilities, ManagerRegistry $doctrine, Meta $meta, GupShup $gupshup, Emoji $emoji, SessionInterface $session){
$em = $doctrine->getManager();
//$post = $request->request->all();
$now = new \DateTime('now');
$now->setTimezone(new \DateTimeZone('Europe/Madrid'));
$userRepo = $em->getRepository(User::class);
$locationRepo = $em->getRepository(Locations::class);
$buttonsRepo = $em->getRepository(Buttons::class);
$templateRepo = $em->getRepository(TemplateWhatsapp::class);
$langRepo = $em->getRepository(Lang::class);
$locPhoneRepo = $em->getRepository(LocationPhone::class);
$user = $session->get('user') ? $userRepo->find($session->get('user')): null;
if ( $user ) {
$phone = $user->getPhone();
$prefix = $user->getPrefix();
$lang = $user->getLang();
// $lang = "es";
$location = $locationRepo->findOneBy(array("name" => $session->get('location')));
$buttons = $buttonsRepo->getTextButton($location, 0, $user->getLang());
$locPhone = $locPhoneRepo->findOneBy(array("location" => $location));
$btns0 = array();
foreach($buttons as $btn0){
array_push($btns0, [
"postback_id" => $btn0['postbackText'],
"text" => $btn0['text']
]);
}
$type = $_ENV['gs_PAYLOAD__IMAGE'];
$langEntity = $langRepo->findOneBy(array("lang" => $lang));
$template = $templateRepo->findOneBy(array("slug" => "start_flow", "lang" => $langEntity, "location" => $location));
$logWhatsapp = new LogWhatsapp();
if($locPhone->getApiKey()){ //GUPSHUP
$payload = array(
"template_name" => $template->getName(),
"lang" => $lang,
// "url" => $_SERVER['HTTP_HOST']."/images/locations/".$location->getName()."/logo_padding.png",
"url" =>"https://guest-assistant.com/images/locations/".$location->getName()."/logo_padding.png",
"buttons" => $btns0,
"params" => []
);
// "url" => "https://guest-assistant.com/public/images/locations/".$location->getName()."/logo.png");
// dd($dataGS);
$gupshup->setLog("[GUPSHUP] Response sendBeforeStartTemplate", $utilities->ecrypt(json_encode($payload)), $location, $phone);
$res = (object)$gupshup->sendTemplate(
$type,
$utilities->dcrypt($phone),
$location,
$payload
);
$gupshup->setLog("[GUPSHUP] Response sendStartTemplate", $utilities->ecrypt(json_encode($res)), $location, $phone);
$messageId = ( $res && property_exists($res, "response") && $res->response->messageId) ? $res->response->messageId : "";
$logWhatsapp->setText( $emoji->encode( $template->getText() ));
}else{ //META
$payload = array(
"template_name" => $template->getName(),
"lang" => $lang,
// "url" => $_SERVER['HTTP_HOST']."/images/locations/".$location->getName()."/logo_padding.png",
"url" =>"https://guest-assistant.com/images/locations/".$location->getName()."/logo_padding.png",
"buttons" => $btns0
);
// "url" => "https://guest-assistant.com/public/images/locations/".$location->getName()."/logo.png");
// dd($dataGS);
$res = (object)$meta->sendTemplate(
$type,
$utilities->dcrypt($phone),
$location,
$payload
);
$messageId = ( $res && property_exists($res, "messages") && $res->messages[0]->id) ? $res->messages[0]->id : "";
$logWhatsapp->setText( $emoji->encode( $payload["template_name"] ));
}
$session->set('templateSended', true);
$logWhatsapp->setMessageId($messageId);
$logWhatsapp->setPhone( $phone );
$logWhatsapp->setPrefix( $prefix );
$logWhatsapp->setStatus( "outbound" );
$logWhatsapp->setDateCreated( $now );
$logWhatsapp->setTimestampProvider( $now->getTimestamp() );
$logWhatsapp->setUser( $user );
$logWhatsapp->setLocation( $location );
$logWhatsapp->setLang(mb_strtolower( $langEntity->getLang()) );
$logWhatsapp->setConversationId(null);
$logWhatsapp->setTemplate(null);
$em->persist($logWhatsapp);
$em->flush();
return new JsonResponse([
"status" => "success"
]);
}
return new JsonResponse([
"status" => "error",
"data" => "User not found"
]);
}
/**
* @Route("/startMessage", name="get_send_first_message", methods={"POST"})
*
*/
public function sendStartMesage(Request $request, Utilities $utilities, ManagerRegistry $doctrine, Meta $meta, Emoji $emoji, SessionInterface $session, Dialog $dialog){
$em = $doctrine->getManager();
//$post = $request->request->all();
$now = new \DateTime('now');
$now->setTimezone(new \DateTimeZone('Europe/Madrid'));
$userRepo = $em->getRepository(User::class);
$locationRepo = $em->getRepository(Locations::class);
$locationPhoneRepo = $em->getRepository(LocationPhone::class);
$buttonsRepo = $em->getRepository(Buttons::class);
$templateRepo = $em->getRepository(TemplateWhatsapp::class);
$langRepo = $em->getRepository(Lang::class);
$logWhatsRepo = $em->getRepository(LogWhatsapp::class);
$user = $userRepo->find($session->get('user'));
if ( $user ) {
$phone = $user->getPhone();
$prefix = $user->getPrefix();
$lang = $user->getLang();
// $lang = "es";
$location = $locationRepo->findOneBy(array("name" => $session->get('location')));
//Revisar si te algun missatge, si el te no se li envia
$sendedMsg = $logWhatsRepo->findOneBy(array("phone" => $phone, "status" => "delivered"));
$locationPhone = $locationPhoneRepo->findOneBy(array("location" => $location));
$phone = $utilities->dcrypt($locationPhone->getPhone());
// dd($sendedMsg);
if($sendedMsg){
return new JsonResponse([
"status" => "error",
"data" => "User has template"
]);
}
$session->set('messageSended', true);
$locationName = mb_strtolower($location->getName());
$text = $dialog->getStartText($locationName, $lang);
$phone = $utilities->dcrypt($user->getPhone());
$url = 'https://api.whatsapp.com/send?phone='.$phone.'&text='.$text;
return $this->redirect( $url );
}
return new JsonResponse([
"status" => "error",
"data" => "User not found"
]);
}
/**
* @Route("/reset", name="reset", methods={"POST"})
*
*/
public function functionReset(Request $request, SessionInterface $session){
// NO ELIMINAR $session->remove('logUser');
$session->remove('templateSended');
$session->remove('user');
return new JsonResponse([
"status" => "success"
]);
}
/**
* @Route("/{lang}/send", name="form_send", methods={"POST"})
*
*/
public function form_send(Request $request, ManagerRegistry $doctrine){
$lang = mb_strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
if ( $request->get('lang') && !empty($request->get('lang')) ) {
$lang = $request->get('lang');
}
if ( $lang == "gl" || $lang == "eu" ) $lang = "es";
$lang = in_array($lang, ['es', 'ca', 'fr', 'it', 'pt']) ? $lang : 'en';
// ---
if (!empty($request->getContent())) {
$post = (array) json_decode($request->getContent());
if (count($post) == 0) {
$post = (array) $request->request->all();
}
} else {
$post = (array) $request->request->all();
}
// ---
$recaptchaResponse = $post['recaptcha'];
$response = $this->client->request('POST', 'https://www.google.com/recaptcha/api/siteverify', [
'body' => [
'secret' => $_ENV['RECAPTCHA_SECRET'],
'response' => $recaptchaResponse,
],
]);
$recaptchaData = $response->toArray();
if (!$recaptchaData['success']) {
return new JsonResponse([
'status' => 'error',
'reason' => 'Invalid reCAPTCHA response.'
]);
}
// ---
$mail = new PHPMailer(true);
try {
//Server settings
//$mail->SMTPDebug = 1; //Enable verbose debug output
$mail->isSMTP(); //Send using SMTP
$mail->Host = $_ENV["MAILER_HOST"]; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = $_ENV["MAILER_USER"]; //SMTP username
$mail->Password = $_ENV["MAILER_PASSWORD"]; //SMTP password
//TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
//Recipients
$mail->setFrom($_ENV["MAILER_USER"], 'Guest Assistant Contacte');
$mail->addAddress('info@tridenia.com', 'Guest Assistant Contacte'); //Add a recipient
//Content
$mail->CharSet = "UTF-8";
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = 'Guest Assistant Contacte: ' . $post["name"] . ' (' . $post["company"] . ')';
$mail->Body = $this->renderView(
'mail/ca.html.twig', [
'post' => $post,
'lang' => $lang
]
);
// $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if(!$mail->send()) {
return new JsonResponse([
'status' => 'error',
'reason' => "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"
]);
} else {
return new JsonResponse([
'status' => 'success'
]);
}
} catch (\Exception $e) {
return new JsonResponse([
'status' => 'error',
'reason' => "Message could not be sent. Mailer Error: {$e}"
]);
}
}
/**
* @Route("/{lang}/press", name="press", methods={"GET"})
*
*/
public function press(Request $request, ManagerRegistry $doctrine){
$lang = mb_strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
if ( $request->get('lang') && !empty($request->get('lang')) ) {
$lang = $request->get('lang');
}
if ( $lang == "gl" || $lang == "eu" ) $lang = "es";
$lang = in_array($lang, ['es', 'ca', 'fr', 'it', 'pt']) ? $lang : 'en';
$news_national = array(
'camprodon-noticia-cat' => 'https://www.camprodon.cat/la-intelligencia-artificial-arriba-a-camprodon-de-la-ma-dun-guia-turistic/',
'camprodon-noticia-lavanguardia' => 'https://www.lavanguardia.com/local/girona/20240328/9584016/camprodon-estrena-guia-turistica-ia-contesta-visitante-whatsapp.html',
'camprodon-noticia-puntavui' => 'https://www.elpuntavui.cat/societat/article/5-societat/2401599-s-estrena-una-guia-turistica-que-utilitza-la-intel-ligencia-artificial.html',
'camprodon-noticia-larepublica' => 'https://www.larepublica.cat/minut-a-minut/camprodon-estrena-una-guia-turistica-amb-intelligencia-artificial-per-millorar-lexperiencia-del-visitant/',
'camprodon-noticia-el9nou' => 'https://el9nou.cat/osona-ripolles/actualitat/societat/camprodon-estrena-una-guia-turistica-amb-intelligencia-artificial/',
'camprodon-noticia-naciodigital' => 'https://naciodigital.cat/ripolles/camprodon-estrena-una-guia-turistica-amb-intelligencia-artificial-per-fomentar-el-turisme_1842460_102.html',
'camprodon-noticia-ripollesdigital' => 'https://www.ripollesdigital.cat/documents/ripollesdigital.cat/revistes/elripolles1036bx.pdf',
'camprodon-noticia-acn' => 'https://www.acn.cat/new/d3104aec-2194-43f9-a6e9-f331945b3162/texts',
'camprodon-noticia-gerio' => 'https://www.gerio.cat/noticia/1661874/camprodon-estrena-una-guia-turistica-amb-intelligencia-artificial',
'camprodon-noticia-lesvegueries' => 'https://www.lesvegueries.cat/comarques-gironines/ripolles/camprodon-estrena-una-guia-turistica-amb-intel-ligencia-artificial-per-millorar-lexperiencia-del-visitant',
'camprodon-noticia-metadata' => 'https://www.metadata.cat/noticia/4360/camprodon-estrena-guia-turistica-usa-IA',
'camprodon-noticia-viaempresa' => 'https://www.viaempresa.cat/es/territorio/camprodon-estrena-guia-turistica-con-inteligencia-artificial-mejorar-experiencia_2195791_102.html'
);
$news_international = array(
'camprodon-noticia-catalannews' => 'https://www.catalannews.com/tech-science/item/camprodon-launches-tourist-guide-with-artificial-intelligence',
'camprodon-noticia-capcatalogne' => 'https://capcatalogne.com/guest-assistant/',
'camprodon-noticia-wn' => 'https://article.wn.com/view/2024/03/28/Camprodon_launches_tourist_guide_with_artificial_intelligenc/',
'camprodon-noticia-noveltybilisim' => 'https://noveltybilisim.com.tr/blog/yapay-zekali-turist-rehberi-guest-assistant/'
);
return $this->render('landing/press.html.twig', array(
"baseUrl" => $this->getParameter("app.base_url"),
"lang" => $lang,
"news_national" => $news_national,
"news_international" => $news_international,
'site_key' => $_ENV['RECAPTCHA_KEY']
));
}
/**
* @Route("/{lang}/cookies", name="cookies", methods={"GET"})
*
*/
public function cookies(Request $request, ManagerRegistry $doctrine){
$lang = mb_strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
if ( $request->get('lang') && !empty($request->get('lang')) ) {
$lang = $request->get('lang');
}
if ( $lang == "gl" || $lang == "eu" ) $lang = "es";
$lang = in_array($lang, ['es', 'ca', 'fr', 'it', 'pt']) ? $lang : 'en';
return $this->render('landing/cookies.html.twig', array(
"baseUrl" => $this->getParameter("app.base_url"),
"lang" => $lang
));
}
/**
* @Route("/{lang}/", name="main_lang", methods={"GET"}, requirements={"lang" = "(es|ca|en|fr|it|pt)"})
*
*/
public function landing_main(Request $request, ManagerRegistry $doctrine){
//Ha d'estar l'Ășltim per evitar problemes amb el path
$em = $doctrine->getManager();
$locationsRepo = $em->getRepository(Locations::class);
$lang = mb_strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
if ( $request->get('lang') && !empty($request->get('lang')) ) {
$lang = $request->get('lang');
}
if ( $lang == "gl" || $lang == "eu" ) $lang = "es";
$lang = in_array($lang, ['es', 'ca', 'fr', 'it', 'pt']) ? $lang : 'en';
$locations = $locationsRepo->findBy(array("status" => 1));
// dd($locations);
return $this->render('landing/location_selector.html.twig', array(
"baseUrl" => $this->getParameter("app.base_url"),
"locations" => $locations,
"lang" => $lang,
'site_key' => $_ENV['RECAPTCHA_KEY'],
));
}
}