src/Controller/HomeController.php line 344

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Cities;
  4. use App\Entity\Contact;
  5. use App\Entity\Events;
  6. use App\Entity\EventType;
  7. use App\Entity\Globals;
  8. use App\Entity\MenuItem;
  9. use App\Entity\Pages;
  10. use App\Entity\Picture;
  11. use App\Form\ContactFormType;
  12. use App\Form\EventsType;
  13. use App\Form\HomePageFilesType;
  14. use App\Form\HomePageType;
  15. use App\Form\LelkipasztorType;
  16. use Doctrine\Common\Collections\ArrayCollection;
  17. use Doctrine\ORM\EntityManagerInterface;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. use Symfony\Component\Asset\UrlPackage;
  20. use Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy;
  21. use Symfony\Component\Form\FormError;
  22. use Symfony\Component\HttpFoundation\RedirectResponse;
  23. use Symfony\Component\HttpFoundation\Request;
  24. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  25. use Symfony\Component\Mailer\MailerInterface;
  26. use Symfony\Component\Routing\Annotation\Route;
  27. use Symfony\Contracts\Translation\TranslatorInterface;
  28. class HomeController extends AbstractController
  29. {
  30.     private $globals;
  31.     private $lang;
  32.     private $page;
  33.     public function __construct(EntityManagerInterface $entityManagerSessionInterface $sessionTranslatorInterface $translator)
  34.     {
  35.         $this->globals = new Globals();
  36.         $this->lang $this->globals->getCurrentLanguage($session);
  37.         $this->page $this->globals->getDefaultPage($entityManager$translator$this->lang);
  38.         $this->globals->setGlobals($entityManager);
  39.     }
  40.     /**
  41.      * @Route("/", name="home")
  42.      */
  43.     public function homepage(Request $requestTranslatorInterface $translator)
  44.     {
  45.         $this->globals->setUserStuff([
  46.             'loggedIn' => $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_USER') || $this->isGranted('ROLE_MODERATOR'),
  47.             'isAdmin' => $this->isGranted('ROLE_ADMIN'),
  48.             'isModerator' => $this->isGranted('ROLE_MODERATOR'),
  49.             'isUser' => $this->isGranted('ROLE_USER'),
  50.         ]);
  51.         //get available languages
  52.         $langs $this->getDoctrine()->getRepository(MenuItem::class)->findAll();
  53.         $this->globals->setLangs($langs);
  54.         //set page title
  55.         $page $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  56.             'name' => 'home',
  57.             'language' => $this->lang,
  58.         ]);
  59.         if (!is_null($page)) {
  60.             $this->page->title $page->getTitle();
  61.             $this->page->content $page->getContent();
  62.         }
  63.         $this->page->istentiszteletekTitle $translator->trans('widgets.istentiszteletek.title', [], 'messages'$this->lang);
  64.         $this->page->hirekTitle $translator->trans('widgets.hirek.pagetitle', [], 'messages'$this->lang);
  65.         $this->page->varosokTitle $translator->trans('widgets.varosok.title', [], 'messages'$this->lang);
  66.         $this->page->bemutatkozasTitle $translator->trans('pages.bemutatkozas.title', [], 'messages'$this->lang);
  67.         $this->page->keptarTitle $translator->trans('pages.galleries.title', [], 'messages'$this->lang);
  68.         $this->page->url $request->getUri();
  69.         $cities $this->getDoctrine()->getRepository(Cities::class)->findBy([], ['name' => 'ASC']);
  70.         $menus $this->globals->getMenus($this->getDoctrine(), $request$this->lang$translator);
  71.         $hirek_result $this->getDoctrine()->getRepository(Events::class)->getLastEvents(15$this->lang);
  72.         $istentiszteletek $this->getDoctrine()->getRepository(Events::class)->getLastEvents(25);
  73.         $gomb $this->getDoctrine()->getRepository(Events::class)->getLastEvents(3);
  74.         $widgets = [];
  75.         $widgets['istentisztelet'] = new \stdClass();
  76.         $widgets['istentisztelet']->title $translator->trans('widgets.istentiszteletek.title', [], 'messages'$this->lang);
  77.         $widgets['istentisztelet']->items = [];
  78.         $widgets['istentisztelet']->url '';
  79.         $widgets['istentisztelet']->caption '';
  80.         foreach ($istentiszteletek as $index => $istentisztelet) {
  81.             if ($istentisztelet->getEventType()->getId() == 2) {
  82.                 $item $istentisztelet;
  83.                 $item->weekday $this->globals->getDayOfWeek($istentisztelet->getDatum()->format('Y-m-d'), $this->lang);
  84.                 $item->day $istentisztelet->getDatum()->format('d');
  85.                 $item->month $this->globals->getMonthOfDate($istentisztelet->getDatum()->format('Y-m-d'), $this->lang);
  86.                 $item->year $istentisztelet->getDatum()->format('Y');
  87.                 $item->eventTime $istentisztelet->getTime()->format('H:i');
  88.                 if (count($widgets['istentisztelet']->items) < 3) {
  89.                     $widgets['istentisztelet']->items[] = $item;
  90.                 }
  91.             }
  92.         }
  93.         $hirek = [];
  94.         foreach ($hirek_result as $index => $hir) {
  95.             $item $hir;
  96.             $item->weekday $this->globals->getDayOfWeek($hir->getDatum()->format('Y-m-d'), $this->lang);
  97.             $item->day $hir->getDatum()->format('d');
  98.             $item->month $this->globals->getMonthOfDate($hir->getDatum()->format('Y-m-d'), $this->lang);
  99.             $item->year $hir->getDatum()->format('Y');
  100.             $item->eventTime is_null($hir->getTime()) ? '' $hir->getTime()->format('H:i');
  101.             $item->isMulti 0;
  102.             if (!is_null($hir->getEndDatum())) {
  103.                 $item->isMulti 1;
  104.                 $item->end_weekday $this->globals->getDayOfWeek($hir->getEndDatum()->format('Y-m-d'), $this->lang);
  105.                 $item->end_day $hir->getEndDatum()->format('d');
  106.                 $item->end_month $this->globals->getMonthOfDate($hir->getEndDatum()->format('Y-m-d'), $this->lang);
  107.                 $item->end_year $hir->getEndDatum()->format('Y');
  108.             }
  109.             $hirek[] = $item;
  110.         }
  111.         if ($gomb) {
  112.             $widgets['protestanshirado'] = new \stdClass();
  113.             $widgets['protestanshirado']->title '';
  114.             $widgets['protestanshirado']->items = [];
  115.             $widgets['protestanshirado']->url $gomb->getUrl();
  116.             $widgets['protestanshirado']->caption $gomb->getCaption();
  117.         }
  118.         $form = new \stdClass();
  119.         $form->title $translator->trans('hirlevel.title', [], 'messages'$this->lang);
  120.         $form->email = new \stdClass();
  121.         $form->email->title $translator->trans('hirlevel.email.field', [], 'messages'$this->lang);
  122.         $form->email->placeholder $translator->trans('hirlevel.email.placeholder', [], 'messages'$this->lang);
  123.         $form->email->helptext $translator->trans('hirlevel.email.helptext', [], 'messages'$this->lang);
  124.         $form->name = new \stdClass();
  125.         $form->name->title $translator->trans('hirlevel.name.field', [], 'messages'$this->lang);
  126.         $form->name->placeholder $translator->trans('hirlevel.name.placeholder', [], 'messages'$this->lang);
  127.         $form->checkbox sprintf(
  128.             $translator->trans('hirlevel.checkbox', [], 'messages'$this->lang),
  129.             '<a href="/datenschutzerklarung" target="_blank" class="form-check-label-link">',
  130.             '</a>'
  131.         );
  132.         $form->submit $translator->trans('hirlevel.submit', [], 'messages'$this->lang);
  133.         $widgets['signupform'] = $form;
  134.         $widgets['hirek'] = new \stdClass();
  135.         $widgets['hirek']->title $translator->trans('widgets.hirek.title', [], 'messages'$this->lang);
  136.         $widgets['hirek']->youtubeID $this->globals->getYoutubeID();
  137.         $bemutatkozas_result $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  138.             'name' => 'bemutatkozas',
  139.             'language' => $this->lang,
  140.         ]);
  141.         $bemutatkozas $bemutatkozas_result $bemutatkozas_result->getContent() : 'Panik, no content!';
  142.         $galleries_raw $this->getDoctrine()->getRepository(Events::class)->getAllGalleries();
  143.         $galleries = [];
  144.         foreach ($galleries_raw as $item) {
  145.             $item->imagesCount count($item->getPictures());
  146.             if (!is_null($item->getImage())) {
  147.                 $img $this->getDoctrine()->getRepository(Picture::class)->findOneBy([
  148.                     'id' => $item->getImage(),
  149.                 ]);
  150.                 if ($img) {
  151.                     $item->topImage '/galleries/'.$item->getId().'/'.$img->getPhoto();
  152.                 }
  153.             }
  154.             $galleries[] = $item;
  155.         }
  156.         $hP_item $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  157.             'name' => 'home',
  158.             'language' => $this->lang,
  159.         ]);
  160.         $homePage = new \stdClass();
  161.         $homePage->name 'home';
  162.         $homePage->language $this->lang;
  163.         $homePage->content '';
  164.         $homePage->cim '';
  165.         $homePage->kep '';
  166.         $homePage->url '';
  167.         $homePage->url_caption '';
  168.         if ($hP_item) {
  169.             $event_type $this->getDoctrine()->getRepository(EventType::class)->findOneBy(['name' => 'kezdolap_vers']);
  170.             $event_item $this->getDoctrine()->getRepository(Events::class)->findOneBy([
  171.                 'eventType' => $event_type,
  172.                 'language' => $this->lang,
  173.             ]);
  174.             if ($event_item) {
  175.                 $homePage->content $event_item->getDescription();
  176.                 $homePage->cim $event_item->getCaption();
  177.                 if (!is_null($event_item->getImage())) {
  178.                     $img $this->getDoctrine()->getRepository(Events::class)->findBy(['id' => $event_item->getImage()])[0];
  179.                     if ($img) {
  180.                         if (stristr($img->getMachineName(), '://') !== false) {
  181.                             $homePage->kep $img->getMachineName();
  182.                         } else {
  183.                             $homePage->kep '/uploads/kezdolap/' $img->getMachineName();
  184.                         }
  185.                         $homePage->url $img->getUrl();
  186.                         $homePage->url_caption $img->getCity();
  187.                     }
  188.                 }
  189.                 $tmp '<strong>'.$homePage->cim.'</strong><p style="margin-bottom: -10px;"><img class="alignnone wp-image-2243 size-full" src="'.$homePage->kep.'" alt="" /></p><p style="text-align: left; "><small style="color: #999;"><i>Foto: <a style="color:#999; text-decoration:none !important;" href="'.$homePage->url.'" target="_blank">'.$homePage->url_caption.'</a></i></small></p>';
  190.                 $this->page->content $tmp.$this->page->content;
  191.             }
  192.         }
  193.         if ($this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_MODERATOR') || $this->isGranted('ROLE_HOMEPAGE')) {
  194.             $homeFiles $this->getHomeFiles();
  195.             $homePageForm $this->createForm(HomePageType::class, $homePage, [
  196.                 'action' => $this->generateUrl('home_update'),
  197.                 'kepek' => $homeFiles->files,
  198.                 'kepdata' => $homeFiles->data,
  199.                 'url' => $homePage->url,
  200.                 'url_caption' => $homePage->url_caption,
  201.                 'kep' => $homePage->kep,
  202.                 'cim' => $homePage->cim,
  203.             ]);
  204.             $homeFilesForm = new \stdClass();
  205.             $homeFilesForm->file '';
  206.             $homeFiles->form $this->createForm(HomePageFilesType::class, $homeFilesForm, [
  207.                 'action' => $this->generateUrl('home_uploadFile'),
  208.             ]);
  209.         } else {
  210.             $homePageForm false;
  211.             $homeFiles false;
  212.         }
  213.         return $this->render('pages/home.html.twig', [
  214.             'page' => $this->page,
  215.             'cities' => $cities,
  216.             'menus' => $menus,
  217.             'currentLang' => $this->globals->getLang($this->lang),
  218.             'widgets' => $widgets,
  219.             'hirek' => $hirek,
  220.             'istentiszteletek' => $istentiszteletek,
  221.             'bemutatkozas' => $bemutatkozas,
  222.             'galleries' => $galleries,
  223.             'globals' => $this->globals->getGlobals(),
  224.             'homePageForm' => $homePageForm == false null $homePageForm->createView(),
  225.             'nemtalalt' => $translator->trans('pages.notfoundtext', [], 'messages'$this->lang),
  226.             'homeFiles' => $homeFiles == false null $homeFiles,
  227.             'homeFilesForm' => $homePageForm == false null $homeFiles->form->createView(),
  228.         ]);
  229.     }
  230.     public function getHomeFiles() {
  231.         $res = new \stdClass();
  232.         $res->path 'uploads/kezdolap/';
  233.         $res->files = [];
  234.         $res->data null;
  235. //        $path = __DIR__.'/../../public/'.$res->path;
  236. //        if (!is_dir($path)) {
  237. //            mkdir($path,0755);
  238. //        }
  239. //
  240. //        $objects = scandir($path);
  241. //        foreach ($objects as $object) {
  242. //            if ($object != "." && $object != "..") {
  243. //                if (!is_dir($object)) {
  244. //                    $res->files[$object] = $object;
  245. //                }
  246. //            }
  247. //        }
  248.         $page $this->getDoctrine()->getRepository(Events::class)->findOneBy(['title' => 'home'.$this->lang]);
  249.         $activeImage 0;
  250.         if ($page) {
  251.             if (!is_null($page->getImage())) {
  252.                 $activeImage $page->getImage();
  253.             }
  254.         }
  255.         $eventType $this->getDoctrine()->getRepository(EventType::class)->findOneBy(['name' => 'kezdolap_kep']);
  256.         $files $this->getDoctrine()->getRepository(Events::class)->findBy(['eventType'=>$eventType]);
  257.         foreach ($files as $file) {
  258.             if ($file->getId() == $activeImage) {
  259.                 $file->active true;
  260.                 $file->name $file->getMachineName();
  261.             } else { $file->active false;}
  262.             $file->path stristr($file->getMachineName(),'://') !== false $file->getMachineName() : ('/public/uploads/kezdolap/'.$file->getMachineName());
  263.             if ($file->active) { $res->data $file; }
  264.             $res->files[] = $file;
  265.         }
  266.         return $res;
  267.     }
  268.     /**
  269.      * @Route("/update_homefile", name="home_uploadFile", methods={"POST"})
  270.      */
  271.     public function homeFileUpdate(Request $request): RedirectResponse
  272.     {
  273.         $frm $this->createForm(HomePageFilesType::class);
  274.         $frm->handleRequest($request);
  275.         if ($frm->isValid() && $frm->isSubmitted()) {
  276.             $data $_POST['home_page_files'];// url, url_caption
  277.             $file $_FILES['home_page_files'];//name, type, tmp_name [file]
  278.             $path __DIR__ '/../../public/uploads/kezdolap/';
  279.             if (!is_dir($path)) {
  280.                 mkdir($path0755);
  281.             }
  282.             move_uploaded_file($file['tmp_name']['file'], $path $file['name']['file']);
  283.             $event_type $this->getDoctrine()->getRepository(EventType::class)->findOneBy(['name' => 'kezdolap_kep']);
  284.             $ev = new Events();
  285.             $ev->setEventType($event_type);
  286.             $ev->setMachineName($file['name']['file']);
  287.             $ev->setHideDatum(1);
  288.             $ev->setHideTitle(1);
  289.             $ev->setUrl($data['url']);
  290.             $ev->setCity($data['url_caption']);
  291.             $entityManager $this->getDoctrine()->getManager();
  292.             $entityManager->persist($ev);
  293.             $entityManager->flush();
  294.         }
  295.         return $this->redirectToRoute('home');
  296.     }
  297.     /**
  298.      * @Route("/changelanguage/{lang}", name="changelanguage")
  299.      */
  300.     public function changeLanguage(string $lang 'hu'Request $requestSessionInterface $session)
  301.     {
  302.         $this->globals->setCurrentLanguage($session$lang);
  303.         $referer $request->headers->get('referer');
  304.         return $this->redirect($referer);
  305.     }
  306.     /**
  307.      * @Route("/hirek", name="hirek")
  308.      */
  309.     public function hirek(Request $requestTranslatorInterface $translator)
  310.     {
  311.         $this->globals->setUserStuff([
  312.             'loggedIn' => $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_USER') || $this->isGranted('ROLE_MODERATOR'),
  313.             'isAdmin' => $this->isGranted('ROLE_ADMIN'),
  314.             'isModerator' => $this->isGranted('ROLE_MODERATOR'),
  315.             'isUser' => $this->isGranted('ROLE_USER'),
  316.         ]);
  317.         //get available languages
  318.         $langs $this->getDoctrine()->getRepository(MenuItem::class)->findAll();
  319.         $this->globals->setLangs($langs);
  320.         //set page title
  321.         $page $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  322.             'name' => 'hirek',
  323.             'language' => $this->lang,
  324.         ]);
  325.         if (!is_null($page)) {
  326.             $this->page->title $page->getTitle();
  327.             $this->page->content $page->getContent();
  328.         } else {
  329.             $this->page->title $translator->trans('pages.hirek.title', [], 'messages'$this->lang);
  330.         }
  331.         $this->page->url $request->getUri();
  332.         $this->page->metas->description 'hirek, Rajna-Vesztfáliai Magyar Protestáns Gyülekezet, Ungarische Evangelische Gemeinde in NRW';
  333.         $menus $this->globals->getMenus($this->getDoctrine(), $request$this->lang$translator);
  334.         $hirek_result $this->getDoctrine()->getRepository(Events::class)->getLastEvents(150$this->lang);
  335.         $hirek = [];
  336.         foreach ($hirek_result as $index => $hir) {
  337.             $item $hir;
  338.             $item->weekday $this->globals->getDayOfWeek($hir->getDatum()->format('Y-m-d'), $this->lang);
  339.             $item->day $hir->getDatum()->format('d');
  340.             $item->month $this->globals->getMonthOfDate($hir->getDatum()->format('Y-m-d'), $this->lang);
  341.             $item->year $hir->getDatum()->format('Y');
  342.             $item->eventTime is_null($hir->getTime()) ? '' $hir->getTime()->format('H:i');
  343.             $item->isMulti 0;
  344.             if (!is_null($hir->getEndDatum())) {
  345.                 $item->isMulti 1;
  346.                 $item->end_weekday $this->globals->getDayOfWeek($hir->getEndDatum()->format('Y-m-d'), $this->lang);
  347.                 $item->end_day $hir->getEndDatum()->format('d');
  348.                 $item->end_month $this->globals->getMonthOfDate($hir->getEndDatum()->format('Y-m-d'), $this->lang);
  349.                 $item->end_year $hir->getEndDatum()->format('Y');
  350.             }
  351.             $hirek[] = $item;
  352.         }
  353.         return $this->render('pages/hirek.html.twig', [
  354.             'page' => $this->page,
  355.             'menus' => $menus,
  356.             'currentLang' => $this->globals->getLang($this->lang),
  357.             'hirek' => $hirek,
  358.             'results_count' => count($hirek),
  359.             'notfoundtext' => $translator->trans('pages.notfoundtext', [], 'messages'$this->lang),
  360.             'globals' => $this->globals->getGlobals(),
  361.         ]);
  362.     }
  363.     /**
  364.      * @Route("/istentisztelet/{varos}", name="istentisztelet")
  365.      */
  366.     public function istentisztelet(string $varos nullRequest $requestTranslatorInterface $translator)
  367.     {
  368.         $this->globals->setUserStuff([
  369.             'loggedIn' => $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_USER') || $this->isGranted('ROLE_MODERATOR'),
  370.             'isAdmin' => $this->isGranted('ROLE_ADMIN'),
  371.             'isModerator' => $this->isGranted('ROLE_MODERATOR'),
  372.             'isUser' => $this->isGranted('ROLE_USER'),
  373.         ]);
  374.         //get available languages
  375.         $langs $this->getDoctrine()->getRepository(MenuItem::class)->findAll();
  376.         $this->globals->setLangs($langs);
  377.         //set page title
  378.         $page $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  379.             'name' => 'istentisztelet',
  380.             'language' => $this->lang,
  381.         ]);
  382.         if (!is_null($page)) {
  383.             $this->page->title $page->getTitle();
  384.             $this->page->content $page->getContent();
  385.         } else {
  386.             $this->page->title $translator->trans('pages.istentiszteletek.title', [], 'messages'$this->lang);
  387.         }
  388.         $this->page->varosokTitle $translator->trans('widgets.varosok.title', [], 'messages'$this->lang);
  389.         $this->page->url $request->getUri();
  390.         $this->page->metas->description 'istentisztelet, Rajna-Vesztfáliai Magyar Protestáns Gyülekezet, Ungarische Evangelische Gemeinde in NRW';
  391.         $menus $this->globals->getMenus($this->getDoctrine(), $request$this->lang$translator);
  392.         $cities $this->getDoctrine()->getRepository(Cities::class)->findBy([], ['name' => 'ASC']);
  393.         if (is_null($varos)) {
  394.             $istentiszteletek_results $this->getDoctrine()->getRepository(Events::class)->getLastEvents(250);
  395.         } else {
  396.             $city $this->getDoctrine()->getRepository(Cities::class)->findOneBy([
  397.                 'name' => $varos
  398.             ]);
  399.             //append all cities option to cities list
  400.             $item = new \stdClass();
  401.             $item->name '';
  402.             $item->caption $translator->trans('pages.istentiszteletek.mindenvaros', [], 'messages'$this->lang);
  403.             $cities[] = $item;
  404.             //get result for the city if it's found
  405.             if ($city) {
  406.                 $istentiszteletek_results $this->getDoctrine()->getRepository(Events::class)->getLastEventsForCity($city->getId(), 250);
  407.             } else {
  408.                 $istentiszteletek_results = [];
  409.             }
  410.         }
  411.         $istentiszteletek = [];
  412.         foreach ($istentiszteletek_results as $index => $istentisztelet) {
  413.             if ($istentisztelet->getEventType()->getId() == 2) {
  414.                 $item $istentisztelet;
  415.                 $item->weekday $this->globals->getDayOfWeek($istentisztelet->getDatum()->format('Y-m-d'), $this->lang);
  416.                 $item->day $istentisztelet->getDatum()->format('d');
  417.                 $item->month $this->globals->getMonthOfDate($istentisztelet->getDatum()->format('Y-m-d'), $this->lang);
  418.                 $item->year $istentisztelet->getDatum()->format('Y');
  419.                 $item->eventTime $istentisztelet->getTime()->format('H:i');
  420.                 $istentiszteletek[] = $item;
  421.             }
  422.         }
  423.         return $this->render('pages/istentisztelet.html.twig', [
  424.             'page' => $this->page,
  425.             'menus' => $menus,
  426.             'currentLang' => $this->globals->getLang($this->lang),
  427.             'istentiszteletek' => $istentiszteletek,
  428.             'cities' => $cities,
  429.             'results_count' => count($istentiszteletek),
  430.             'notfoundtext' => $translator->trans('pages.notfoundtext', [], 'messages'$this->lang),
  431.             'globals' => $this->globals->getGlobals(),
  432.         ]);
  433.     }
  434.     /**
  435.      * @Route("/bemutatkozas", name="bemutatkozas")
  436.      */
  437.     public function bemutatkozas(Request $requestTranslatorInterface $translator)
  438.     {
  439.         $this->globals->setUserStuff([
  440.             'loggedIn' => $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_USER') || $this->isGranted('ROLE_MODERATOR'),
  441.             'isAdmin' => $this->isGranted('ROLE_ADMIN'),
  442.             'isModerator' => $this->isGranted('ROLE_MODERATOR'),
  443.             'isUser' => $this->isGranted('ROLE_USER'),
  444.         ]);
  445.         //get available languages
  446.         $langs $this->getDoctrine()->getRepository(MenuItem::class)->findAll();
  447.         $this->globals->setLangs($langs);
  448.         //set page title
  449.         $page $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  450.             'name' => 'bemutatkozas',
  451.             'language' => $this->lang,
  452.         ]);
  453.         if (!is_null($page)) {
  454.             $this->page->title $page->getTitle();
  455.             $this->page->content $page->getContent();
  456.         } else {
  457.             $this->page->title $translator->trans('pages.bemutatkozas.title', [], 'messages'$this->lang);
  458.         }
  459.         $this->page->varosokTitle $translator->trans('widgets.varosok.title', [], 'messages'$this->lang);
  460.         $this->page->url $request->getUri();
  461.         $this->page->metas->description 'A magyar protestáns gyülekezet múltja és jelene Észak-Rajna-Vesztfáliában';
  462.         $menus $this->globals->getMenus($this->getDoctrine(), $request$this->lang$translator);
  463.         return $this->render('pages/bemutatkozas.html.twig', [
  464.             'page' => $this->page,
  465.             'menus' => $menus,
  466.             'currentLang' => $this->globals->getLang($this->lang),
  467.             'globals' => $this->globals->getGlobals(),
  468.         ]);
  469.     }
  470.     /**
  471.      * @Route("/kapcsolat/{varosId}", name="kapcsolat")
  472.      */
  473.     public function kapcsolat(string $varosId nullRequest $requestTranslatorInterface $translator)
  474.     {
  475.         $this->globals->setUserStuff([
  476.             'loggedIn' => $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_USER') || $this->isGranted('ROLE_MODERATOR'),
  477.             'isAdmin' => $this->isGranted('ROLE_ADMIN'),
  478.             'isModerator' => $this->isGranted('ROLE_MODERATOR'),
  479.             'isUser' => $this->isGranted('ROLE_USER'),
  480.         ]);
  481.         //get available languages
  482.         $langs $this->getDoctrine()->getRepository(MenuItem::class)->findAll();
  483.         $this->globals->setLangs($langs);
  484.         //set page title
  485.         $page $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  486.             'name' => 'kapcsolat',
  487.             'language' => $this->lang,
  488.         ]);
  489.         if (!is_null($page)) {
  490.             $this->page->title $page->getTitle();
  491.             $this->page->content $page->getContent();
  492.         } else {
  493.             $this->page->title $translator->trans('pages.kapcsolat.title', [], 'messages'$this->lang);
  494.         }
  495.         $this->page->varosokTitle $translator->trans('widgets.varosok.title', [], 'messages'$this->lang);
  496.         $this->page->url $request->getUri();
  497.         $this->page->metas->description 'kapcsolat, Ungarischer Evangelischer Verein in NRW';
  498.         $menus $this->globals->getMenus($this->getDoctrine(), $request$this->lang$translator);
  499.         $cities $this->getDoctrine()->getRepository(Cities::class)->findBy([], ['name' => 'ASC']);
  500.         if (!is_null($varosId)) {
  501.             $tmp_city = new Cities();
  502.             $tmp_city->setName('');
  503.             $tmp_city->setCaption($translator->trans('pages.istentiszteletek.mindenvaros', [], 'messages'$this->lang));
  504.             $tmp_city->setUrl($this->generateUrl('kapcsolat'));
  505.             $cities[] = $tmp_city;
  506.         }
  507.         if (is_null($varosId)) {
  508.             $eventType $this->getDoctrine()->getRepository(EventType::class)->findOneBy(['name' => 'lelkipasztor']);
  509.             $lelkipasztor $this->getDoctrine()->getRepository(Events::class)->findOneBy([
  510.                 'eventType' => $eventType
  511.             ]);
  512.             if (!$lelkipasztor) {
  513.                 $lelkipasztor = new Events();
  514.                 $lelkipasztor->setHideDatum(true);
  515.                 $lelkipasztor->setHideTitle(true);
  516.                 $lelkipasztor->setEventType($eventType);
  517.             }
  518.             $lelkipasztor->lelkipasztor $translator->trans('pages.kapcsolat.lelkipasztor', [], 'messages'$this->lang);
  519.             if ($this->isGranted('ROLE_ADMIN')) {
  520.                 $form $this->createForm(LelkipasztorType::class, $lelkipasztor, ['action' => $this->generateUrl('lelkipasztor_edit')]);
  521.                 $form->handleRequest($request);
  522.             }
  523.         } else {
  524.             $eventType $this->getDoctrine()->getRepository(EventType::class)->findOneBy(['name' => 'kapcsolat']);
  525.             $city $this->getDoctrine()->getRepository(Cities::class)->findOneBy(['name' => $varosId]);
  526.             $lelkipasztor $this->getDoctrine()->getRepository(Events::class)->findBy([
  527.                 'eventType' => $eventType,
  528.                 'cityId' => $city,
  529.             ]);
  530.             if ($this->lang == 'hu') {
  531.                 $city->description $city->getDescriptionHu();
  532.             } else {
  533.                 $city->description $city->getDescriptionDe();
  534.             }
  535.             $this->page->metas->description .= ', ' $city->getCaption();
  536.         }
  537.         $contact_form = new \stdClass();
  538.         $contact_form->title $translator->trans('pages.kapcsolat.contactTitle', [], 'messages'$this->lang);
  539.         $contact_form->send $translator->trans('pages.kapcsolat.contactSend', [], 'messages'$this->lang);
  540.         $contact_form->form $this->createForm(ContactFormType::class, null, [
  541.             'checkLabel' =>  $translator->trans('pages.kapcsolat.adatvedelem', [], 'messages'$this->lang),
  542.             'checkLabel2' => sprintf(
  543.                 $translator->trans('pages.kapcsolat.adatvedelem2', [], 'messages'$this->lang),
  544.                 '<a href="'.$this->generateUrl('adatvedelem').'" target="_blank">',
  545.                 '</a>'
  546.             ),
  547.             'nev' => $translator->trans('pages.kapcsolat.nev', [], 'messages'$this->lang),
  548.             'email' => $translator->trans('pages.kapcsolat.email', [], 'messages'$this->lang),
  549.             'email2' => $translator->trans('pages.kapcsolat.email2', [], 'messages'$this->lang),
  550.             'message' => $translator->trans('pages.kapcsolat.message', [], 'messages'$this->lang),
  551.             'action' => $this->generateUrl('kapcsolat_kuld'),
  552.         ])->createView();
  553.         $contact_form->adatvedelem2 sprintf($translator->trans('pages.kapcsolat.adatvedelem2',[],'message',$this->lang),'<a href="'.$this->generateUrl('adatvedelem').'" target="_blank">','</a>');
  554.         $contact_form->lang $this->lang;
  555.         return $this->render('pages/kapcsolat.html.twig', [
  556.             'page' => $this->page,
  557.             'menus' => $menus,
  558.             'currentLang' => $this->globals->getLang($this->lang),
  559.             'cities' => $cities,
  560.             'lelkipasztor' => $lelkipasztor,
  561.             'edit_lelkipasztor' => $this->isGranted('ROLE_ADMIN') && is_null($varosId) ? $form->createView() : '',
  562.             'contact_form' => $contact_form,
  563.             'city' => is_null($varosId) ? null $city,
  564.             'globals' => $this->globals->getGlobals(),
  565.         ]);
  566.     }
  567.     /**
  568.      * @Route("/kapcsolat/dummy/lelkipasztor", name="lelkipasztor_edit", methods={"POST"})
  569.      */
  570.     public function edit(Request $request): RedirectResponse
  571.     {
  572.         $eventType $this->getDoctrine()->getRepository(EventType::class)->findOneBy(['name' => 'lelkipasztor']);
  573.         $lelkipasztor $this->getDoctrine()->getRepository(Events::class)->findOneBy([
  574.             'eventType' => $eventType
  575.         ]);
  576.         if (!$lelkipasztor) {
  577.             $lelkipasztor = new Events();
  578.             $lelkipasztor->setHideDatum(true);
  579.             $lelkipasztor->setHideTitle(true);
  580.             $lelkipasztor->setEventType($eventType);
  581.         }
  582.         $form $this->createForm(LelkipasztorType::class, $lelkipasztor);
  583.         $form->handleRequest($request);
  584.         $eventType $this->getDoctrine()->getRepository(EventType::class)->findOneBy(['name' => 'lelkipasztor']);
  585.         if ($form->isValid() && $form->isSubmitted()) {
  586.             $lelkipasztor->setEventType($eventType);
  587.             $lelkipasztor->setHideTitle(false);
  588.             $lelkipasztor->setHideDatum(false);
  589.             $lelkipasztor->setMachineName('lelkipasztor');
  590.             $entityManager $this->getDoctrine()->getManager();
  591.             $entityManager->persist($lelkipasztor);
  592.             $entityManager->flush();
  593.         }
  594.         return $this->redirectToRoute('kapcsolat');
  595.     }
  596.     /**
  597.      * @Route("/update_home", name="home_update", methods={"POST"})
  598.      */
  599.     public function homeUpdate(Request $request): RedirectResponse
  600.     {
  601.         $homePage = new \stdClass();
  602.         $posted $_POST['home_page'];
  603.         $homePage->name $posted['name'];
  604.         $homePage->language $posted['language'];
  605.         $homePage->content $posted['content'];
  606.         $homePage->cim $posted['cim'];
  607.         $homePage->kep $posted['kep'];
  608.         $homePage->url $posted['url'];
  609.         $homePage->url_caption $posted['url_caption'];
  610.         $frm $this->createForm(HomePageType::class, $homePage, [
  611.             'url' => $homePage->url,
  612.             'url_caption' => $homePage->url_caption,
  613.             'kep' => $homePage->kep,
  614.             'cim' => $homePage->cim,
  615.         ]);
  616.         $frm->handleRequest($request);
  617.         if ($frm->isSubmitted()) {
  618.             $page $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  619.                 'name' => 'home''language' => $frm->getData()->language,
  620.             ]);
  621.             if ($page) {
  622.                 $page->setContent($frm->getData()->content);
  623.                 $entityManager $this->getDoctrine()->getManager();
  624.                 $entityManager->persist($page);
  625.                 $entityManager->flush();
  626.             }
  627.             $event $this->getDoctrine()->getRepository(Events::class)->findOneBy([
  628.                 'title' => 'home'.$frm->getData()->language,
  629.             ]);
  630.             if ($event) {
  631.                 $event->setDescription($frm->getData()->content);
  632.                 $event->setCaption($frm->getData()->cim);
  633.                 $event->setImage($frm->getData()->kep);
  634.                 $entityManager $this->getDoctrine()->getManager();
  635.                 $entityManager->persist($event);
  636.                 $entityManager->flush();
  637.                 $img $this->getDoctrine()->getRepository(Events::class)->findOneBy(['id'=>$event->getImage()]);
  638.                 if ($img) {
  639.                     $img->setCity($frm->getData()->url_caption);
  640.                     $img->setUrl($frm->getData()->url);
  641.                     $entityManager $this->getDoctrine()->getManager();
  642.                     $entityManager->persist($img);
  643.                     $entityManager->flush();
  644.                 }
  645.             }
  646.         }
  647.         return $this->redirectToRoute('home');
  648.     }
  649.     /**
  650.      * @Route("/kapcsolat/email/kuld", name="kapcsolat_kuld", methods={"POST"})
  651.      */
  652.     public function kapcsolatfelvetel(Request $requestMailerInterface $mailerInterface): RedirectResponse
  653.     {
  654.         $contact = new Contact();
  655.         $contact->email2 '';
  656.         $contactEmail $this->globals->getGlobals()->contactEmail;
  657.         $form $this->createForm(ContactFormType::class, $contact);
  658.         $form->handleRequest($request);
  659.         if ($form->isValid() && $form->isSubmitted()) {
  660.             try {
  661.                 $entityManager $this->getDoctrine()->getManager();
  662.                 $entityManager->persist($contact);
  663.                 $entityManager->flush();
  664.             } catch (\Exception $e) {
  665.                 return $this->redirectToRoute('kapcsolat',['error'=>$e->getMessage()]);
  666.             }
  667.             $mailer = new MailerController(
  668.                 'contact@ungarische-gemeinde.de',
  669.                 'New contact',
  670.                 '',
  671.                 [
  672.                     'contact' => $contact,
  673.                     'date' => \IntlDateFormatter::formatObject(
  674.                         new \DateTime('now'),
  675.                         'yyyy MMMM dd',
  676.                         $this->lang.'_'.strtoupper($this->lang)),
  677.                     'to' => [$contactEmail],
  678.                     'template' => 'emails/contact.html.twig'
  679.                 ]
  680.             );
  681.             $mailer->sendEmail($mailerInterface);
  682.         }
  683.         return $this->redirectToRoute('kapcsolat');
  684.     }
  685.     /**
  686.      * @Route("/adatvedelem", name="adatvedelem")
  687.      */
  688.     public function adatvedelem(Request $requestTranslatorInterface $translator)
  689.     {
  690.         $this->globals->setUserStuff([
  691.             'loggedIn' => $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_USER') || $this->isGranted('ROLE_MODERATOR'),
  692.             'isAdmin' => $this->isGranted('ROLE_ADMIN'),
  693.             'isModerator' => $this->isGranted('ROLE_MODERATOR'),
  694.             'isUser' => $this->isGranted('ROLE_USER'),
  695.         ]);
  696.         //get available languages
  697.         $langs $this->getDoctrine()->getRepository(MenuItem::class)->findAll();
  698.         $this->globals->setLangs($langs);
  699.         //set page title
  700.         $page $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  701.             'name' => 'adatvedelem',
  702.         ]);
  703.         $this->page->content $page->getContent();
  704.         $this->page->title $translator->trans('pages.adatvedelem.title', [], 'messages'$this->lang);
  705.         $this->page->url $request->getUri();
  706.         $this->page->metas->description 'adatvedelem, Rajna-Vesztfáliai Magyar Protestáns Gyülekezet, Ungarische Evangelische Gemeinde in NRW';
  707.         $menus $this->globals->getMenus($this->getDoctrine(), $request$this->lang$translator);
  708.         return $this->render('pages/adatvedelem.html.twig',[
  709.             'page' => $this->page,
  710.             'menus' => $menus,
  711.             'currentLang' => $this->globals->getLang($this->lang),
  712.             'globals' => $this->globals->getGlobals(),
  713.         ]);
  714.     }
  715.     /**
  716.      * @Route("/impressum", name="impressum")
  717.      */
  718.     public function impressum(Request $requestTranslatorInterface $translator)
  719.     {
  720.         $this->globals->setUserStuff([
  721.             'loggedIn' => $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_USER') || $this->isGranted('ROLE_MODERATOR'),
  722.             'isAdmin' => $this->isGranted('ROLE_ADMIN'),
  723.             'isModerator' => $this->isGranted('ROLE_MODERATOR'),
  724.             'isUser' => $this->isGranted('ROLE_USER'),
  725.         ]);
  726.         //get available languages
  727.         $langs $this->getDoctrine()->getRepository(MenuItem::class)->findAll();
  728.         $this->globals->setLangs($langs);
  729.         //set page title
  730.         $page $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  731.             'name' => 'impressum',
  732.         ]);
  733.         $this->page->content $page->getContent();
  734.         $this->page->title $translator->trans('pages.impressum.title', [], 'messages'$this->lang);
  735.         $this->page->url $request->getUri();
  736.         $this->page->metas->description 'impressum, Rajna-Vesztfáliai Magyar Protestáns Gyülekezet, Ungarische Evangelische Gemeinde in NRW';
  737.         $menus $this->globals->getMenus($this->getDoctrine(), $request$this->lang$translator);
  738.         return $this->render('pages/adatvedelem.html.twig',[
  739.             'page' => $this->page,
  740.             'menus' => $menus,
  741.             'currentLang' => $this->globals->getLang($this->lang),
  742.             'globals' => $this->globals->getGlobals(),
  743.         ]);
  744.     }
  745.     /**
  746.      * @Route("/napiahitatok", name="napiahitatok")
  747.      */
  748.     public function ahitatok(Request $requestTranslatorInterface $translator)
  749.     {
  750.         $this->globals->setUserStuff([
  751.             'loggedIn' => $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_USER') || $this->isGranted('ROLE_MODERATOR'),
  752.             'isAdmin' => $this->isGranted('ROLE_ADMIN'),
  753.             'isModerator' => $this->isGranted('ROLE_MODERATOR'),
  754.             'isUser' => $this->isGranted('ROLE_USER'),
  755.         ]);
  756.         //get available languages
  757.         $langs $this->getDoctrine()->getRepository(MenuItem::class)->findAll();
  758.         $this->globals->setLangs($langs);
  759.         //set page title
  760.         $page $this->getDoctrine()->getRepository(Pages::class)->findOneBy([
  761.             'name' => 'napiahitatok',
  762.             'language' => $this->lang,
  763.         ]);
  764.         if (!is_null($page)) {
  765.             $this->page->title $page->getTitle();
  766.             $this->page->content $page->getContent();
  767.         } else {
  768.             $this->page->title $translator->trans('pages.ahitatok.title', [], 'messages'$this->lang);
  769.         }
  770.         $this->page->url $request->getUri();
  771.         $this->page->metas->description 'ahitatok, Rajna-Vesztfáliai Magyar Protestáns Gyülekezet, Ungarische Evangelische Gemeinde in NRW';
  772.         $menus $this->globals->getMenus($this->getDoctrine(), $request$this->lang$translator);
  773.         return $this->render('pages/ahitatok.html.twig',[
  774.             'page' => $this->page,
  775.             'menus' => $menus,
  776.             'currentLang' => $this->globals->getLang($this->lang),
  777.             'globals' => $this->globals->getGlobals(),
  778.         ]);
  779.     }
  780. }