<?php
namespace App\Controller;
use App\Service\Mailer;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Address;
use Symfony\Component\Routing\Annotation\Route;
use App\Form\Type\ContactType;
use Symfony\Component\Mime\Email;
class MainController extends BaseController
{
/**
* @Route("/", name="main")
* @Route("/main/{sub}", name="main_sub")
*/
public function index($sub = null): Response
{
return $this->render('main/index.html.twig', [
'controller_name' => 'MainController',
'subPage' => $sub
]);
}
/**
* @Route("/timelines/edit/{id}", name="edit_timelines")
*/
public function editTimelineAction(Request $request, $id = null)
{
if ($id !== null) {
$id = preg_replace('/[^a-z0-9_-]/i', '', $id);
}
return $this->render('main/editor.html.twig', [
'id' => $id,
'title' => $id,
'editorUser' => $this->getUser(),
]);
}
/**
* @Route("/timelines/{id}", name="timelines")
*/
public function timelinesAction(Request $request, $id=null)
{
if($id == 'info')
{
return $this->render('main/timelines.html.twig',
array('id' => 'info', 'title'=> "Timelines")
);
}
else
{
if($id !== null)
{
$id = preg_replace('/[^a-z0-9_-]/i', '', $id);
}
return $this->render('main/timelines.html.twig',
array('id' => $id, 'title' => $id)
);
}
}
/**
* @Route("/tour/{id}", name="tour")
*/
public function tourAction(Request $request, $id)
{
if($id !== null)
{
$id = preg_replace ( '/[^a-z0-9 ]/i', '', $id );
}
$title = ucwords($id);
return $this->render('main/album.html.twig',
array('album' => $id, 'title' => $title, 'backmenutitle'=>'Touren', 'backnav' => 'navmenuTouren')
);
}
/**
* @Route("/album/{id}", name="album")
*/
public function albumAction(Request $request, $id)
{
if($id !== null)
{
$id = preg_replace ( '/[^a-z0-9 ]/i', '', $id );
}
$title = ucwords($id);
return $this->render('main/album.html.twig',
array('album' => $id, 'title' => $title, 'backmenutitle'=>'Projekte', 'backnav' => 'navmenuProjekte')
);
}
/**
* @Route("/kontakt/{subject}", name="contact")
*/
public function contactAction(MailerInterface $mailer, Request $request, $subject = null)
{
$form = $this->createForm(ContactType::class, ['subject'=>$subject]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
if( $form->get('content')->getData() != null) {
$messageData = "Name: " . $form->get('name')->getData() ."\n";
$messageData = "E-Mail: " . $form->get('email')->getData() ."\n";
$messageData.= "Subject: " . $form->get('subject')->getData() ."\n";
$messageData.= "IP: " . $request->getClientIp() ."\n";
$messageData.= "Message: " . $form->get('content')->getData()."\n";
$robotHoneypot = $form->get('spam_content')->getData();
$from = $form->get('email')->getData();
$to = $_ENV['ADMIN_MAILER_TO'];
try {
$spam = false;
$spamEmailArray = [];
$spamEmailArray[] = 'course-fitness.com';
foreach($spamEmailArray as $spamEmailTerm) {
if(str_contains($from, $spamEmailTerm)){
$spam = true;
break;
}
}
if ($robotHoneypot == null && !$spam ) {
if (preg_match('(\\ssex|\\sporn|essay|girls|casino|money|iphone|\\scrypto|.ru|bitcoin)', strtolower($messageData)) === 0) {
if (preg_match('(.ru)', strtolower($from)) === 0) {
$email = (new TemplatedEmail())
->from($_ENV['MAILER_FROM'])
->to(new Address($_ENV['ADMIN_MAILER_TO'], 'Admin'))
->subject('Message from martinbrake.de')
->htmlTemplate('email/message.html.twig')
->context(['name' => $form->get('name')->getData(),
'ip' => $request->getClientIp(),
'mail' => $form->get('email')->getData(),
'message' =>$messageData]);
mail($to,$from, $messageData, $form->get('name')->getData());
//mail($to, $messageData, $form->get('email')->getData());
//$mailer->send($email);
}
}
} else {
$this->addFlash('error', 'Das hat nicht geklappt');
}
} catch (\Exception $e) {
$this->addFlash('error', 'Irgendetwas ist gründlich schief gelaufen. Ich kümmere mich darum!');
}
}
else {
$this->addFlash('error', 'Das hat nicht geklappt');
}
/*$message = \Swift_Message::newInstance()
->setSubject('Kontakt - ' . $form->get('subject')->getData() )
->setFrom('bke.messaging@gmail.com' )
->setTo('admin@bk-entwicklungen.de')
->setBody($this->renderView('AppBundle:Mail:contact.txt.twig', array(
'ip' => $request->getClientIp(),
'email' => $form->get('email')->getData(),
'name' => $form->get('name')->getData(),
// // 'message' => $form->get('spam_content')->getData()
'message' => $messageData
)
));
}
try
{
$this->get('mailer')->send($message);
$request->getSession()->getFlashBag()->add('success', 'Ihre Nachricht wurde versandt. Ich werde mich in Kürze bei Dir melden.');
}
catch (\Exception $e)
{
$request->getSession()->getFlashBag()->add('error', 'Irgendetwas ist gründlich schief gelaufen. Ich kümmere mich darum!');
}*/
return $this->redirect($this->generateUrl('main') );
}
return $this->render('main/contact.html.twig', array('form' => $form->createView() ) );
}
/**
* @Route("/impressum", name="impressum")
*/
public function impressumAction()
{
return $this->render('main/impressum.html.twig');
}
/**
* @Route("/datenschutz", name="datenschutz")
*/
public function datenschutzAction()
{
return $this->render('main/datenschutz.html.twig');
}
}