<?php
namespace App\Controller;
use App\ClassTheatre\asides;
use App\ClassTheatre\TheatreController;
use App\Service\TheatreMail\SendmailTheatre;
use App\Validator\Recaptcha;
use Doctrine\ORM\EntityManagerInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use TheatreCore\Entity\Contacts;
use TheatreCore\Entity\Extranetusers;
use TheatreCore\Form\Type\RecaptchaType;
class SiteController extends TheatreController
{
public function __construct(EntityManagerInterface $em, TranslatorInterface $translator, TokenStorageInterface $tokenStorage)
{
// surbrillance du menu principal (thnet)
$GLOBALS['rub_courante'] = 'spectacles';
parent::__construct($translator, $tokenStorage);
$this->em = $em;
$this->asides = new asides();
}
/**
* @Route("/site/donnees-personnelles", name="site_donnees_personnelles")
*/
public function donnees_personnelles()
{
// situation
$this->view->locate = array(0 => 'Données personnelles');
// title page
$this->view->title_page = 'Données personnelles sur theatre-contemporain.net';
return $this->view('site/donnees-personnelles.html.twig');
}
/**
* @Route("/site/cgv", name="site_cgv")
*/
public function cgv()
{
// situation
$this->view->locate = array(0 => 'Conditions Générales de Ventes');
// title page
$this->view->title_page = 'CGV de theatre-contemporain.net';
return $this->view('site/cgv.html.twig');
}
/**
* @Route("/site/cgu", name="site_cgu")
*/
public function cgu()
{
// situation
$this->view->locate = array(0 => 'Conditions Générales d\'Utilisation');
// title page
$this->view->title_page = 'CGU de theatre-contemporain.net';
return $this->view('site/cgu.html.twig');
}
/**
* @Route("/site/mentions-legales", name="site_mentions_legales")
*/
public function mentions_legales()
{
// situation
$this->view->locate = array(0 => 'Mentions légales');
// title page
$this->view->title_page = 'Mentions légales de theatre-contemporain.net';
return $this->view('site/mentions-legales.html.twig');
}
/**
* @Route("/site/ressources", name="site_ressources")
*/
public function ressources()
{
// situation
$this->view->locate = array(0 => 'Statistiques du site');
// title page
$this->view->title_page = 'Ressources du site';
return $this->view('site/ressources.html.twig');
}
/**
* @Route("/site/opendata", name="site_opendata")
*/
public function opendata()
{
return $this->redirectToRoute('index', [], Response::HTTP_MOVED_PERMANENTLY);
}
/**
* @Route("/site/publicite", name="site_publicite")
*/
public function publicite()
{
return $this->redirectToRoute('index', [], Response::HTTP_MOVED_PERMANENTLY);
}
/**
* @Route("/site/devenir-partenaire-ecole", name="site_devenir_partenaire_ecole")
*/
public function devenir_partenaire_ecole()
{
return $this->redirectToRoute('index', [], Response::HTTP_MOVED_PERMANENTLY);
}
/**
* @Route("/site/devenir-partenaire", name="site_devenir_partenaire")
*/
public function devenir_partenaire()
{
return $this->redirectToRoute('index', [], Response::HTTP_MOVED_PERMANENTLY);
}
/**
* @Route("/site/recherche", name="site_recherche")
*/
public function recherche()
{
$websites = array(
'www.theatre-contemporain.net' => array('label' => 'theatre-contemporain.net', 'module' => 'thnet'),
'www.theatre-video.net' => array('label' => 'theatre-video.net', 'module' => 'thtv'),
'www.ressources-theatre.net' => array('label' => 'ressources-theatre.net', 'module' => 'cris', 'only_for_modules' => array('cris')),
'' => array('label' => 'Web', 'module' => ''),
);
$code_google = '<form method="get" action="/site/recherche" id="masterform">
<div><input type="text" name="q" size="31" maxlength="255" value="" />
<input type="submit" name="sa" value="Rechercher" class="boutform" /></div>
<ul>';
foreach($websites as $k => $v) {
if (!empty($v['only_for_modules']) && !in_array($this->context['module'], $v['only_for_modules'])) continue;
$code_google .= '<li><input type="radio" name="sitesearch" value="'.$k.'"';
if($this->context['module']==$v['module']) {
$code_google .= 'checked="checked" ';
}
$code_google .= '/>'.$v['label'].'</li>';
}
$code_google .= '
</ul>
<div class="spacer" style="padding-top: 20px;"><input type="hidden" name="domains" value="www.theatre-contemporain.net;www.theatre-video.net"></input>
<input type="hidden" name="client" value="pub-1414152220322472"></input>
<input type="hidden" name="forid" value="1"></input>
<input type="hidden" name="ie" value="utf8"></input>
<input type="hidden" name="oe" value="utf8"></input>
<input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:11"></input>
<input type="hidden" name="hl" value="fr"></input>
<a href="http://www.google.com/"><img src="http://www.google.com/logos/Logo_25wht.gif" alt="Google" /></a></div>
</form>';
$this->context['view']->code_google = $code_google;
// situation
$this->view->locate = array(0 => 'Rechercher sur le site');
// title page
$this->view->title_page = 'Recherche sur theatre-contemporain.net';
return $this->view('site/recherche.html.twig');
}
/**
* @Route("/site/contacts", name="site_contacts")
*/
public function action_contacts(
Request $request,
SendmailTheatre $sendmailTheatre,
LoggerInterface $logger,
FormFactoryInterface $formFactory,
ParameterBagInterface $parameterBag
)
{
$form = $formFactory->createNamedBuilder('', FormType::class, null, [
'validation_groups' => false,
'attr' => [
'id' => 'masterform'
]
]);
$form->add('email', TextType::class, [
'label' => 'Votre adresse de courriel',
'attr' => [
'size'=>'45'
]
]);
$form->add( 'nom', TextType::class, [
'label' => 'Votre nom',
'attr' => [
'size'=>'30'
]
]);
$form->add('sujet', TextType::class, [
'label' => 'Sujet de votre message',
'attr' => [
'size'=>'40'
]
]);
$form->add('message', TextareaType::class, [
'label' => 'Votre message',
'attr' => [
'cols'=>'90',
'rows'=>'10'
]
]);
// captcha si pas loggué
if($_ENV['CAPTCHA_ACTIVE'] && !$this->getUser() instanceof Extranetusers) {
$form->add('recaptcha', RecaptchaType::class, [
'mapped' => false,
'empty_data' => '1',
'constraints' => [
new Recaptcha([
'request' => $request
])
]
]);
} else if($this->getUser() instanceof Extranetusers) {
// remplir l'adresse de courriel
$form->get('email')->setData($this->getUser()->getEmail());
$form->get('nom')->setData($this->getUser()->getLastname());
}
$form->add('envoyer', SubmitType::class, [
'label' => 'Envoyer votre message',
'attr' => [
'class'=>'boutform'
]
]);
// $form->addRule('email', 'Votre adresse de courriel : veuillez préciser votre adresse de courriel', 'required');
// $form->addRule('email', 'Votre adresse de courriel : veuillez verifier votre adresse de courriel', 'email');
//
// $form->addRule('contact', 'Votre contact : veuillez préciser la personne à contacter', 'numeric');
// $form->addRule('message', 'Votre message : veuillez préciser votre message', 'required');
// $form->addRule('sujet', 'Sujet : veuillez préciser le sujet de votre message', 'required');
// $form->addRule('sujet', 'Sujet : le sujet ne doit pas faire plus de 100 caractères', 'rangelength', array(2,100));
// $form->addRule('nom', 'Votre nom : veuillez préciser votre adresse nom', 'required');
// $form->addRule('nom', 'Votre nom : le nom ne doit pas faire plus de 100 caractères', 'rangelength',array(2,100));
// cacher le texte du haut
if(isset($_POST['envoyer'])) {
$this->view->ispost = true;
}
$this->context['form'] = $form->getForm();
$this->context['form']->handleRequest($request);
if ($this->context['form']->isSubmitted() && $this->context['form']->isValid())
{
// destinataire
$sendmailTheatre->setDestinataire($parameterBag->get('mail.contact'));
// expediteur et return-path
$sendmailTheatre->setExpediteur($parameterBag->get('mail.contact'));
// répondre à
$replyTo =$this->context['form']->get('email')->getData();
$sendmailTheatre->setReplyTo($replyTo);
// sujet de l'e-mail
$subject = $this->context['form']->get('sujet')->getData();
$sendmailTheatre->setSubject(utf8_decode($subject));
$nom = $this->context['form']->get('nom')->getData();
if($this->getUser() instanceof Extranetusers) {
$utilisateur = ' [<a href="'.getenv('URL_BACKEND').'/extranetusers/edit/id/'.$this->getUser()->getIdextranetuser().'">'.$this->getUser()->getLogin().' / '.$this->getUser()->getIdextranetuser().'</a>]';
} else {
$utilisateur = null;
}
$params_tr = [
'site' => 'theatre-contemporain.net',
'nom' => $nom.$utilisateur,
'email' => $this->context['form']->get('email')->getData(),
'page_envoi' => $GLOBALS['url_module'].'/site/contacts',
'message' => $this->context['form']->get('message')->getData(),
'user_agent' => $_SERVER['REMOTE_ADDR'].' / '.$_SERVER['HTTP_USER_AGENT']
];
// génération
$sendmailTheatre->prepare(
'emails/message_site_contact.html.twig',
$params_tr
);
try {
$sendmailTheatre->send();
$this->view->reponse['ok'] = $this->context['tr']->trans('reponse_generique_sendmessage');
$this->view->hideform = true;
} catch (\Exception $e) {
$logger->error($e->getMessage());
$logger->debug($e->getTraceAsString());
$this->view->error['no'] = $this->context['tr']->trans('error_generique_sendmessage');
}
}
// situation
$this->context['view']->locate = array(0 => 'Contacts');
// title page
$this->context['view']->title_page = 'Contactez l\'équipe';
return $this->view('site/contacts.html.twig', [
'form' => $this->context['form']->createView()
]);
}
}