getDoctrine()->getManager(); } public function defaultAction(Request $request) { throw $this->createNotFoundException(); } /** * @Route("/") */ public function homeAction() { return $this->render('default/pages/home.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'canonical_url' => Util::getBaseUrl() .'/', 'show_search_sidebar_widget' => false, 'show_offers_sidebar_widget' => false, 'search_form' => $this->createForm(SearchRequestType::class)->createView(), 'tt_search_form' => $this->createForm(TtSearchRequestType::class)->createView(), 'country_pages' => $this->getEntityManager()->getRepository('AppBundle:Page')->findCountryPages(), ]); } /** * @Route("/suche") */ public function searchAction(Request $request) { $form = $this->createForm(SearchRequestType::class); $form->handleRequest($request); if ($form->isValid()) { $data = $form->getData(); $destinationIds = []; if (!empty($data['c'])) { $destinationIds = [$data['c']->getId()]; } if (!empty($destinationIds) && !empty($data['c2'])) { $destinationIds[] = $data['c2']->getId(); } $r = $this->getDoctrine()->getRepository('AppBundle:TravelPeriod')->getTravelProgramsWithTravelDatesForTimePeriod( $data['b'], $data['e'], $destinationIds, count($destinationIds) > 1); } else { $r = []; } return $this->render('default/pages/search.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'breadcrumb_entries' => [new BreadcrumbEntry('Suchen')], 'search_form' => $form->createView(), 'travel_programs' => $r, ]); } /** * @Route("/tt-suche") */ public function ttSearchAction(Request $request) { $form = $this->createForm(TtSearchRequestType::class); $form->handleRequest($request); if ($form->isValid()) { $data = $form->getData(); $ttUrl = 'http://www.vidado.com/booking/ibe_bp2/index.php?CID=8ce65750ce5af9d9a6b22c9b04772ea7&formular=4&engine=pauschal&showresult=1'; $ttUrl .= '&termin=' . $data['termin']->format('d.m.Y'); $ttUrl .= '&ruecktermin=' . $data['ruecktermin']->format('d.m.Y'); if (!empty($data['dauer'])) $ttUrl .= '&dauer='. $data['dauer']; if (!empty($data['t'])) { $ttUrl .= '&personen=25'. str_repeat(';25', $data['t']); for ($i = 0; $i < 3; ++$i) { if (!empty($data['child'.$i])) { $ttUrl .= ';'. $data['child'. $i]; } } } $ttUrl .= '&detail='; if (!empty($data['topRegion']) && isset(TtSearchRequestType::$DESTINATION_CHOICES[$data['topRegion']])) { $ttUrl .= 'hotel&topRegion='. TtSearchRequestType::$DESTINATION_CHOICES[$data['topRegion']]; } else { $ttUrl .= 'zielgebiet'; } if (!empty($data['abflughafen'])) $ttUrl .= '&abflughafen='. $data['abflughafen']; if (!empty($data['shotel'])) $ttUrl .= '&shotel='. urlencode($data['shotel']); if (!empty($data['kategorie'])) $ttUrl .= '&kategorie='. $data['kategorie']; if (!empty($data['zimmer'])) $ttUrl .= '&zimmer='. $data['zimmer']; if (!empty($data['verpflegung'])) $ttUrl .= '&verpflegung='. $data['verpflegung']; if (!empty($data['hbfges'])) $ttUrl .= '&hbfges='. $data['hbfges']; if (!empty($data['hbfanz'])) $ttUrl .= '&hbfanz='. $data['hbfanz']; if (!empty($data['hbfempf'])) $ttUrl .= '&hbfempf='. $data['hbfempf']; if ($data['familie_kinder'] ?? false) $ttUrl .= '&familie_kinder=0'; if ($data['strand'] ?? false) $ttUrl .= '&strand=0'; if ($data['wellness'] ?? false) $ttUrl .= '&wellness=0'; if ($data['typ'] ?? false) $ttUrl .= '&typ=0'; if (!empty($data['sportangebot'])) $ttUrl .= '&sportangebot='. $data['sportangebot']; } return $this->render('default/pages/ttSearch.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'breadcrumb_entries' => [new BreadcrumbEntry('Suchen')], 'tt_search_form' => $form->createView(), 'tt_url' => $ttUrl ?? null, ]); } /** * @Route("/kontakt") */ public function contactAction(Request $request) { $form = $this->createForm(ContactRequestType::class); $breadcrumbEntries = [new BreadcrumbEntry('Kontaktformular')]; if ($request->getMethod() == 'POST') { $form->handleRequest($request); if ($form->isValid()) { /** @var ContactRequest $contactRequest */ $contactRequest = $form->getData(); $crmLeadUrl = $this->get('app.contact_exporter')->process($contactRequest); if ($crmLeadUrl) { $crmLeadUrl = preg_replace('/\\/api\\/lead/', '/leads', $crmLeadUrl) .'/edit'; } else { $crmLeadUrl = '[Übertragung zum CRM fehlgeschlagung]'; } $this->get('mailer')->send(\Swift_Message::newInstance() ->setSubject('Kontaktformular (stern-tours.de)') ->setFrom('stern@stern-tours.de', 'STERN TOURS') ->setTo('stern@stern-tours.de') ->setBody( $this->renderView('default/email/contactServiceEmail.txt.twig', [ 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'crm_url' => $crmLeadUrl, 'contact_request' => $contactRequest, ]), 'text/plain', 'utf-8' ) ); // #TODO This will lead to multiple submissions. Redirect instead! return $this->render('default/pages/contactConfirmation.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'breadcrumb_entries' => $breadcrumbEntries, ]); } } return $this->render('default/pages/contact.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, 'breadcrumb_entries' => $breadcrumbEntries, 'contact_form' => $form->createView(), ]); } /** * @Route("/sitemap") */ public function sitemapAction() { $repo = $this->getDoctrine()->getRepository('AppBundle:Page'); $rootNodes = $repo->getRootNodesQueryBuilder() ->andWhere('node.status = 1') ->andWhere('node.lvl = 0') ->getQuery() ->execute() ; /** @var Page[] $pageNodes Actually no entity objects but associative arrays representing page entities */ $pageNodes = []; foreach ($rootNodes as $rootNode) { $pageNodes[] = $repo->buildTree($repo->getNodesHierarchyQueryBuilder($rootNode, false, [], true) ->leftJoin('node.travelProgram', 'tp') ->andWhere('(tp.id IS NULL OR tp.status = 1)') ->andWhere('node.status = 1') ->getQuery() ->getArrayResult() )[0]; } return $this->render('default/pages/sitemap.html.twig', [ 'breadcrumb_entries' => [new BreadcrumbEntry('Sitemap')], 'page_nodes' => $pageNodes ]); } /* Suche Kindknoten Für jeden Kindknoten ++LFT Setze LFT f() ++LFT RGT = LFT Setze RGT */ /** * @Route("/create-tree") */ public function createTreeAction() { set_time_limit(0); ini_set('memory_limit', '2048M'); $em = $this->getEntityManager(); $em->getConnection()->executeUpdate( 'UPDATE page SET lvl = NULL, lft = NULL, rgt = NULL, parent_id = NULL, tree_root = NULL'); foreach ($em->getEventManager()->getListeners() as $event => $listeners) { foreach ($listeners as $hash => $listener) { if ($listener instanceof TreeListener) { $em->getEventManager()->removeEventListener($event, $listener); } } } $em->beginTransaction(); // Add missing owner relation for catalog root pages (e.g. children of 'aegypten-reisen') $em->getConnection()->executeUpdate('UPDATE page SET owner = 47 WHERE catalog_id = 3 AND owner = 0'); $em->getConnection()->executeUpdate('UPDATE page SET owner = 66 WHERE catalog_id = 6 AND owner = 0'); $em->getConnection()->executeUpdate('UPDATE page SET owner = 2803 WHERE catalog_id = 14 AND owner = 0'); // Add missing owner relation $em->getConnection()->executeUpdate('UPDATE page SET owner = 13 WHERE id in (1314,1426,1472,1548)'); $lft = 0; $this->createTree(0, $lft, 0); $em->flush(); // Reset the owner field to avoid problems in the old website $em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE parent_id = 47 AND catalog_id = 3'); $em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE parent_id = 66 AND catalog_id = 6'); $em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE parent_id = 2803 AND catalog_id = 14'); $em->getConnection()->executeUpdate('UPDATE page SET owner = 0 WHERE id in (1314,1426,1472,1548)'); $em->commit(); die("DONE."); } private function createTree($owner, &$lft, $lvl, $root = null) { $em = $this->getEntityManager(); $qb = $em->createQueryBuilder()->from('AppBundle:Page', 'p')->select('p'); $qb->where($qb->expr()->eq('p.owner', $owner)); if ($owner == 0) { $qb->orWhere('p.owner IS NULL'); } $qb->orderBy('p.order'); $qb->addOrderBy('p.title'); $pages = $qb->getQuery()->execute(); foreach ($pages as $page) { /** @var Page $page */ if ($owner == 0) { $root = $page->getId(); } ++$lft; $page->setLft($lft); $page->setLvl($lvl); $page->setRoot($em->getReference('AppBundle:Page', $root)); if ($owner != 0) { $page->setParent($em->getReference('AppBundle:Page', $owner)); } $this->createTree($page->getId(), $lft, $lvl + 1, $root); ++$lft; $page->setRgt($lft); $em->persist($page); } } }