src/OEW/RegistrationBundle/Controller/WillkommenController.php line 44

  1. <?php
  2. namespace OEW\RegistrationBundle\Controller;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use OEW\RegistrationBundle\Entity\Logging;
  5. use OEW\RegistrationBundle\Entity\Person;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Twig\Environment;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\DependencyInjection\Attribute\Autowire;
  10. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  11. use Symfony\Component\Filesystem\Exception\IOException;
  12. use Symfony\Component\Filesystem\Filesystem;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  16. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  17. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  18. use Symfony\Contracts\Translation\TranslatorInterface;
  19. use Symfony\Component\Security\Core\User\UserInterface;
  20. use App\Security\User;
  21. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  22. class WillkommenController extends AbstractController {
  23.  
  24.     public function indexAction(
  25.         Request $request,
  26.         TranslatorInterface $translator,
  27.         EntityManagerInterface $em,
  28.         TokenStorageInterface $tokenStorage,
  29.         EventDispatcherInterface $eventDispatcher,
  30.         ManagerRegistry $doctrine,
  31.         Environment $twig
  32.     ):Response {
  33.         $formerrors = array();
  34.         $session $request->getSession();
  35.         //$registration = @$session->get('registration', array());
  36.         $sysuser $session->get('sysuser');
  37.         $veranstaltungid $session->get('veranstaltungid');
  38.         $myuser = new User();
  39.         $username trim((string) $request->get('_username'));
  40.         $password trim((string) $request->get('_password'));
  41.         $myuser->setUsername$username );
  42.         $myuser->setPassword$password );
  43.         $meineTeilnahmen "";
  44.         $andereVeranstaltungen "";
  45.         $session->set('registration'"");
  46.        
  47.         // username and password submitted 
  48.         // login action
  49.         if ( $request->isMethod('POST') && $username && $password  ) {
  50.             $em $doctrine->getManager();
  51.             $query $em->createQuery("SELECT t FROM OEW\RegistrationBundle\Entity\Teilnehmer t WHERE t.benutzername = :username");
  52.             $query->setParameter('username'$username);
  53.             $user $query->getOneOrNullResult();
  54.             $error_text "";
  55.             $error false;
  56.             // if there is a user with given credentials
  57.             // find the teilnahme data
  58.             if ( $user ) {            
  59.                
  60.                 if ( md5($password) === $user->getPasswort() ) {
  61.                     if ( !$user->getAktiviert() ) {
  62.                         $error true;
  63.                         $error_text $translator->trans("Login.Fehler");   
  64.                         $this->wlogg($user->getId(), $veranstaltungid"LOGIN_FEHLER"$doctrine"Nicht aktiviert.");
  65.                     }
  66.                     elseif ( $user->getDeaktiviert() || $user->getGeloescht() ) {
  67.                         $error true;
  68.                         $error_text $translator->trans("Login.Fehler.deaktiviert");               
  69.                         $this->wlogg($user->getId(), $veranstaltungid,"LOGIN_FEHLER"$doctrine"Deaktiviert oder gelöscht.");
  70.                     }
  71.                     else {
  72.                         // check if already assigned for some event
  73.                         //$teilnahme = $doctrine->getRepository('OEW\RegistrationBundle\Entity\Teilnahme')->findByTeilnehmerId($user->getId());                             
  74.                         $em $doctrine->getManager();
  75.                         // check if user blacklisted 
  76.                         $em $doctrine->getManager();
  77.                         $sql '
  78.                             SELECT tn 
  79.                             FROM  OEW\RegistrationBundle\Entity\Teilnahme tn
  80.                             WHERE 
  81.                             tn.teilnehmerId = '.$user->getId().' AND 
  82.                             tn.keineTeilnahme=1 AND
  83.                             tn.veranstaltungId = '.$_ENV["veranstaltungid"];
  84.                         $query $em->createQuery($sql);
  85.                         $blacklisted $query->getResult();
  86.                         if ($blacklisted) {
  87.                             $error true;
  88.                             $error_text $translator->trans("Login.Fehler.deaktiviert");               
  89.                             $this->wlogg($user->getId(), $veranstaltungid,"LOGIN_FEHLER"$doctrine"Deaktiviert oder gelöscht."); 
  90.                         } else {
  91.                             $query $em->createQuery($sql);
  92.                             $teilnahme $query->getResult(); 
  93.                             $sql '
  94.                                 SELECT tn 
  95.                                 FROM  OEW\RegistrationBundle\Entity\Teilnahme tn
  96.                                 WHERE 
  97.                                 tn.teilnehmerId = '.$user->getId().' AND 
  98.                                 tn.deaktiviert IS NULL AND
  99.                                 tn.geloescht IS NULL AND
  100.                                 tn.veranstaltungId = '.$_ENV["veranstaltungid"];
  101.                             // rolle Id = 7 - is over for guests and oews for 2015
  102.                             $query $em->createQuery($sql);
  103.                             $teilnahme $query->getResult(); 
  104.                             $sysuser = array();
  105.                             // if user is aussteller or unteraussteller
  106.                             // check if user part of bezahlt koje or not
  107.                             // main menu depends on this
  108.                             $sysuser['kojebezahlt'] = 0;
  109.                             $sysuser['paketbezahlt'] = 0;
  110.                             if ($teilnahme) {
  111.                                 if ($teilnahme[0]->getRolleId() == 17) {
  112.                                     $paketTeilnehmer $em->getRepository('OEW\RegistrationBundle\Entity\PaketTeilnehmer')->findOneByTeilnahmeId($teilnahme[0]->getId());
  113.                     
  114.                                     if ($paketTeilnehmer) {
  115.                                         $paket $em->getRepository('OEW\RegistrationBundle\Entity\Paket')->findOneBy( array( 'id' => $paketTeilnehmer->getPaketId(), 'veranstaltungId' => $_ENV["veranstaltungid"] ) );
  116.                                         if ( $paket && $paket->getBezahlt() ) {
  117.                                             $sysuser['kojebezahlt'] = 1;
  118.                                             $sysuser['paketbezahlt'] = 1;
  119.                                         }
  120.                                     }
  121.                                 } elseif ($teilnahme[0]->getRolleId() == 13) {
  122.                                     $paket $em->getRepository('OEW\RegistrationBundle\Entity\Paket')->findOneBy( array( 'teilnehmerId' => $user->getId(), 'veranstaltungId' => $_ENV["veranstaltungid"] ) );
  123.                                     if ( $paket && $paket->getBezahlt() ) {
  124.                                         $sysuser['kojebezahlt'] = 1;
  125.                                         $sysuser['paketbezahlt'] = 1;
  126.                                     }
  127.                                 }
  128.                             }
  129.                             
  130.                             if ( == $user->getSystemadmin() ) {
  131.                                 $sysuser['systemadmin'] = true;
  132.                                 $roles = array( 'ROLE_ADMIN' );
  133.                                 $sysuser['rolle'] = 4;
  134.                             } else {
  135.                                 $sysuser['systemadmin'] = false;
  136.                                 $roles = array( 'ROLE_USER' );
  137.                                 if ( isset($teilnahme[0])) {
  138.                                     $sysuser['rolle'] = $teilnahme[0]->getRolleId();   
  139.                                     $sysuser['anwesenheit'] = $teilnahme[0]->getAnwesenheit();   
  140.                                 }
  141.                             }
  142.                             // check if testaccount
  143.                             if ( == $user->getUnsichtbar() ) {
  144.                                 $sysuser['testuser'] = 1;
  145.                             }
  146.                             // if MA rolle          
  147.                             if ( isset($teilnahme[0]) && $teilnahme[0]->getRolleId() == 15 ) {                           
  148.                                 $query $em->createQuery("SELECT r FROM OEW\RegistrationBundle\Entity\Zustaendigkeit r WHERE r.veranstaltungId=".$_ENV["veranstaltungid"]." AND r.teilnehmerId=".$user->getId());
  149.                                 $regionen $query->getResult();
  150.                                 $sysuser['laender'] = array();
  151.                                 foreach ( $regionen as $region )  {
  152.                                     $sysuser['laender'][] = $region->getLandId();
  153.                                 }                                       
  154.                             }
  155.                             $myuser->setRoles$roles );
  156.                             $token = new UsernamePasswordToken($myuser'admin'$roles);                 
  157.                             $tokenStorage->setToken($token);                        
  158.                             $event = new InteractiveLoginEvent($request$token);
  159.                             $eventDispatcher->dispatch($event"security.interactive_login");
  160.                             $session->set('_security_login_firewall',  serialize($token));                       
  161.                             
  162.                             //$sysuser['rolle'] = $teilnahme->getRolleId();
  163.                             $sysuser['teilnehmerId'] = $user->getId();
  164.                             $registration['teilnehmerId'] = $user->getId();
  165.                             $sysuser['personId'] = $user->getPersonId();
  166.                             $sysuser['benutzername'] = $user->getBenutzername();
  167.                             $sysuser['loginlang'] = $request->getLocale();
  168.                             if ( $user->getLetztesLogin() ) $sysuser['letztesLogin'] = $user->getLetztesLogin()->format('Y-m-d H:m');
  169.                             $person $doctrine->getRepository('OEW\RegistrationBundle\Entity\Person')->findOneById($user->getPersonId());
  170.                             if ( $person ) {
  171.                                 // set person data
  172.                                 // later needed on person controller
  173.                                 $registration['person']['anrede'] = $person->getAnrede();
  174.                                 $registration['person']['akademgrad'] = $person->getAkademGrad();
  175.                                 $registration['person']['vorname'] = $person->getVorname();
  176.                                 $registration['person']['nachname'] = $person->getNachname();
  177.                                 $registration['person']['funktion'] = $person->getFunktion();
  178.                                 $registration['person']['medien'] = $person->getMedien();
  179.                                 $registration['person']['email'] = $person->getEmail();
  180.                                 $registration['person']['email2'] = $person->getEmail();
  181.                                 $myPhone explode(" "$person->getTelefonBuero());
  182.                                 $registration['person']['telefonlc'] = $myPhone[0];
  183.                                 $registration['person']['telefonvorwahl'] = $myPhone[1];
  184.                                 $registration['person']['telefonnr'] = $myPhone[2];
  185.                                 if (isset($myPhone[3]) )
  186.                                     $registration['person']['telefondurchwahl'] = $myPhone[3];
  187.                                 $myFax explode(" "$person->getFax());
  188.                                 $registration['person']['faxlc'] = $myFax[0];
  189.                                 $registration['person']['faxvorwahl'] = $myFax[1];
  190.                                 $registration['person']['faxnr'] = $myFax[2];
  191.                                 if (isset($myFax[3]))
  192.                                 $registration['person']['faxdurchwahl'] = $myFax[3];
  193.                                 $myMobile explode(" "$person->getTelefonMobil());
  194.                                 $registration['person']['mobillc'] = $myMobile[0];
  195.                                 $registration['person']['mobilvorwahl'] = $myMobile[1];
  196.                                 $registration['person']['mobilnr'] = $myMobile[2];
  197.                                 // if there is a existing profile picture save it to profile bild "e" - stands for existing
  198.                                 $registration['person']['profilbilde'] = $this->getProfilbild$person->getId() );
  199.                                 // not sure if good
  200.                                 $registration['firmaid'] = $person->getFirmaId();
  201.                                 // if login is read only
  202.                                 // user cant change the login data.
  203.                                 $registration['login']['readonly'] = 1;
  204.                                 $sysuser['vorname'] = $person->getVorname();
  205.                                 $sysuser['nachname'] = $person->getNachname();
  206.                                 $sysuser['firmaid'] = $person->getFirmaId();
  207.                                 // check if firma is either
  208.                                 // market office or head office
  209.                                 $firma $doctrine->getRepository('OEW\RegistrationBundle\Entity\Firma')->findOneById($person->getFirmaId());
  210.                                 if ($firma) {
  211.                                     if ($firma->getMarketoffice() > || $firma->getHeadoffice() > 0) {
  212.                                         // the person is mitarbeiter
  213.                                         $sysuser["istmitarbeiter"] = 1;
  214.                                         $registration['firma']['name']  = $firma->getFirmenname();
  215.                                         $registration['firma']['name2'] = $firma->getFirmenname2();
  216.                                         $registration['firma']['str']   = $firma->getStrasse();
  217.                                         $registration['firma']['plz']   = $firma->getPlz();
  218.                                         $registration['firma']['ort']   = $firma->getOrt();
  219.                                         $registration['firma']['id']    = $firma->getId();
  220.                                         $registration['firma']['ho']    = $firma->getHeadoffice();
  221.                                         $registration['firma']['mo']    = $firma->getMarketoffice();
  222.                                         $registration['firma']['land']  = $firma->getLandId();
  223.                                         $registration['firma']['kategorie']  = $firma->getKategorie();
  224.                                     }
  225.                                 }
  226.                             } 
  227.                             $session->set('sysuser',$sysuser);
  228.                             
  229.                             $this->wlogg($user->getId(), $veranstaltungid"LOGIN"$doctrine"userlogin");
  230.                             //TODO: Find better way to disable this fn in tests
  231.                             if(getenv('APP_ENV') !== 'test'){
  232.                                 setcookie("systid"$user->getId(), time()+3600"/"".tourismustage.at"true);
  233.                             }
  234.                             $user->setLetztesLogin( new \DateTime(date("Y-m-d H:i:s")) );
  235.                             $em->flush();
  236.                             $meineTeilnahmen = array();
  237.                             // ids of currently open events - currently running admission
  238.                             $aktiveIDs "0";
  239.                             // check if the user is allowed for experience
  240.                             $add_where "";
  241.                             if ($user->getExperience() != 1) {
  242.                                 $add_where " AND v.typ <> 'xp' ";
  243.                             }
  244.                             if (count($teilnahme) > 0) {
  245.                                 $i 0;                          
  246.                                 foreach ($teilnahme as $oneteilnahme) {
  247.                                     $aktiveIDs .= ",".$oneteilnahme->getVeranstaltungId();
  248.                            
  249.                                     if ($oneteilnahme->getAktiviert()) {
  250.                                     
  251.                                         //$myVeranstaltung = $doctrine->getRepository('OEW\RegistrationBundle\Entity\Veranstaltung')->findOneById($oneteilnahme->getVeranstaltungId());
  252.                                         $query_v $em->createQuery("SELECT v FROM OEW\RegistrationBundle\Entity\Veranstaltung v WHERE v.id=".$oneteilnahme->getVeranstaltungId()." ".$add_where." AND (v.bis >= CURRENT_DATE() OR (v.anmeldungVon <= CURRENT_DATE() AND v.anmeldungBis >= CURRENT_DATE()) ) and v.deaktiviert=0");
  253.                                         $myVeranstaltungen $query_v->getResult();
  254.                                         if (count($myVeranstaltungen) > 0) {
  255.                                              
  256.                                             foreach($myVeranstaltungen as $myVeranstaltung) {
  257.                                                 $meineTeilnahmen[$i]["veranstaltung_id"] = $oneteilnahme->getVeranstaltungId();
  258.                                                  // setting up logo
  259.                                                 if ($myVeranstaltung->getTyp() == "tt") {
  260.                                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_tourismustag";
  261.                                                     $meineTeilnahmen[$i]["veranstaltung_title"] = "ÖW Tourismustag";
  262.                                                 } else if ($myVeranstaltung->getTyp() == "mt") {
  263.                                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_maerktetag";
  264.                                                     $meineTeilnahmen[$i]["veranstaltung_title"] = "ÖW Märktetag";
  265.                                                 } else if ($myVeranstaltung->getTyp() == "oews") {
  266.                                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_oews";
  267.                                                     $meineTeilnahmen[$i]["veranstaltung_title"] = "ÖWork_Shop";
  268.                                                 } else if ($myVeranstaltung->getTyp() == "sales") {
  269.                                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_sales";
  270.                                                 } else if ($myVeranstaltung->getTyp() == "xp") {
  271.                                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_exp";  
  272.                                                 } else if ($myVeranstaltung->getTyp() == "atbvirtuell") {
  273.                                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_atbvirtuell";                                                  
  274.                                                 }
  275.                                                 $meineTeilnahmen[$i]["veranstaltung_title"] = $myVeranstaltung->getTitelDe();
  276.                                                 if ($request->getLocale() == "en") {
  277.                                                     $meineTeilnahmen[$i]["veranstaltung_title"] = $myVeranstaltung->getTitelEn();
  278.                                                 }       
  279.                                                 $meineTeilnahmen[$i]["rolleid"] = $oneteilnahme->getRolleId();
  280.                                                 $myRolle $doctrine->getRepository('OEW\RegistrationBundle\Entity\Rolle')->findOneById($oneteilnahme->getRolleId());
  281.                                                 if ($request->getLocale() == "en") {
  282.                                                     $meineTeilnahmen[$i]["rolle"] = $myRolle->getNameEn();
  283.                                                 } else {
  284.                                                     $meineTeilnahmen[$i]["rolle"] = $myRolle->getNameDe();
  285.                                                 }
  286.                                                 $meineTeilnahmen[$i]["url"] = $myVeranstaltung->getUrl();
  287.                                                 $i++;
  288.                                             }
  289.                                         }
  290.                                     }
  291.                                 }
  292.                             }
  293.                         } 
  294.                        
  295.                     }
  296.                 }
  297.                 else {
  298.                     $error true;
  299.                     $error_text $translator->trans("Login.Fehler");
  300.                     $this->wlogg($user->getId(), $veranstaltungid"LOGIN_FEHLER"$doctrine"Passwort falsch.");
  301.                 }
  302.             }
  303.             else {
  304.                 $error true;
  305.                 $error_text $translator->trans("Login.Fehler");
  306.             }
  307.             
  308.             if ( $error ) {
  309.                 $formerrors[] = array( 'type'=>'''text'=>$error_text );
  310.             }
  311.             
  312.         } elseif (isset($sysuser) && isset($sysuser['teilnehmerId']) && $sysuser['teilnehmerId'] > 0) {
  313.             // if the user is already set
  314.             // and logged in
  315.             //$teilnahme = $doctrine->getRepository('OEW\RegistrationBundle\Entity\Teilnahme')->findByTeilnehmerId( $sysuser['teilnehmerId'] );
  316.             $em $doctrine->getManager();
  317.             $sql '
  318.                 SELECT tn 
  319.                 FROM  OEW\RegistrationBundle\Entity\Teilnahme tn
  320.                 WHERE 
  321.                 tn.teilnehmerId = '.$sysuser['teilnehmerId'].' AND 
  322.                 tn.deaktiviert IS NULL AND
  323.                 tn.geloescht IS NULL AND
  324.                 tn.rolleId <> 7
  325.             ';
  326.             $query $em->createQuery($sql);
  327.             $teilnahme $query->getResult();
  328.             $meineTeilnahmen = array();
  329.             // ids of currently open events - currently running admission
  330.             $aktiveIDs "0";
  331.             
  332.             // check if the user is allowed for experience
  333.             /*
  334.             $myTeilnehmer = $doctrine->getRepository('OEW\RegistrationBundle\Entity\Teilnehmer')->findOneById($sysuser['teilnehmerId']);
  335.             $add_where = " AND v.typ <> 'xp' ";
  336.             if ($myTeilnehmer) {
  337.                 if ($myTeilnehmer->getExperience() == 1) {
  338.                     $add_where = " AND v.typ = 'xp' ";
  339.                 }
  340.             }
  341.             */
  342.             if (count($teilnahme) > 0) {
  343.            
  344.                 $i 0;
  345.                 foreach ($teilnahme as $oneteilnahme) {
  346.                     $aktiveIDs .= ",".$oneteilnahme->getVeranstaltungId();
  347.                     //$myVeranstaltung = $doctrine->getRepository('OEW\RegistrationBundle\Entity\Veranstaltung')->findOneById($oneteilnahme->getVeranstaltungId());
  348.                     $em $doctrine->getManager();
  349.                     $query_v $em->createQuery("SELECT v FROM OEW\RegistrationBundle\Entity\Veranstaltung v WHERE v.id=".$oneteilnahme->getVeranstaltungId()." AND (v.von <= CURRENT_DATE() AND v.bis >= CURRENT_DATE() OR v.anmeldungVon <= CURRENT_DATE() AND v.anmeldungBis >= CURRENT_DATE()) and v.deaktiviert=0");
  350.                     $myVeranstaltungen $query_v->getResult();
  351.                     if (count($myVeranstaltungen) > 0) {
  352.                         foreach($myVeranstaltungen as $myVeranstaltung) {
  353.                             if ($oneteilnahme->getAktiviert()) {
  354.                                 $meineTeilnahmen[$i]["veranstaltung_id"] = $oneteilnahme->getVeranstaltungId();
  355.                                 // setting up logo
  356.                                 if ($myVeranstaltung->getTyp() == "tt") {
  357.                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_tourismustag";
  358.                                     $meineTeilnahmen[$i]["veranstaltung_title"] = "ÖW Tourismustag";
  359.                                 } else if ($myVeranstaltung->getTyp() == "mt") {
  360.                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_maerktetag";
  361.                                     $meineTeilnahmen[$i]["veranstaltung_title"] = "ÖW Märktetag";
  362.                                 } else if ($myVeranstaltung->getTyp() == "oews") {
  363.                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_oews";
  364.                                     $meineTeilnahmen[$i]["veranstaltung_title"] = "ÖWork_Shop";
  365.                                 } else if ($myVeranstaltung->getTyp() == "sales") {
  366.                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_sales";
  367.                                 } else if ($myVeranstaltung->getTyp() == "xp") {
  368.                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_exp";  
  369.                                 } else if ($myVeranstaltung->getTyp() == "atbvirtuell") {
  370.                                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_atbvirtuell";  
  371.                                 }
  372.                                 $meineTeilnahmen[$i]["veranstaltung_title"] = $myVeranstaltung->getTitelDe();
  373.                                 if ($request->getLocale() == "en") {
  374.                                     $meineTeilnahmen[$i]["veranstaltung_title"] = $myVeranstaltung->getTitelEn();
  375.                                 }       
  376.                                 $meineTeilnahmen[$i]["rolleid"] = $oneteilnahme->getRolleId();
  377.                                 $myRolle $doctrine->getRepository('OEW\RegistrationBundle\Entity\Rolle')->findOneById($oneteilnahme->getRolleId());
  378.                                 if ($request->getLocale() == "en") {
  379.                                     $meineTeilnahmen[$i]["rolle"] = $myRolle->getNameEn();
  380.                                 } else {
  381.                                     $meineTeilnahmen[$i]["rolle"] = $myRolle->getNameDe();
  382.                                 }
  383.                                 $meineTeilnahmen[$i]["url"] = $myVeranstaltung->getUrl();
  384.                                 $i++;
  385.                             }
  386.                         }
  387.                     }
  388.                 }
  389.             }
  390.         } else {
  391.             // kill zombie session - after browser crash for example.. 
  392.             $session->set('sysuser', array());
  393.         }
  394.         
  395.         
  396.         /********************************************************************************************/
  397.         // check if the user is allowed for experience
  398.         $add_where " AND v.typ <> 'xp' ";
  399.         if (isset($sysuser['teilnehmerId'])) {
  400.             $myTeilnehmer $doctrine->getRepository('OEW\RegistrationBundle\Entity\Teilnehmer')->findOneById($sysuser['teilnehmerId']);
  401.             if ($myTeilnehmer) {
  402.                 if ($myTeilnehmer->getExperience() == || isset($sysuser["istmitarbeiter"])) {
  403.                     $add_where " ";
  404.                 }
  405.             }
  406.         }
  407.         // get other events that the user is not admitted for
  408.         if (isset($aktiveIDs) && $aktiveIDs != "") {
  409.             $em $doctrine->getManager();
  410.             $query2 $em->createQuery('SELECT v FROM OEW\RegistrationBundle\Entity\Veranstaltung v WHERE v.anmeldungVon < CURRENT_DATE() AND v.anmeldungBis > CURRENT_DATE() AND v.id NOT IN ('.$aktiveIDs.') '.$add_where.' and v.deaktiviert=0 ORDER BY v.id');
  411.             $andereVeranstaltungen $query2->getResult();
  412.         }
  413.         // if user is admin
  414.         // override andereVeranstaltungen and read everything
  415.         if (isset($sysuser) && isset($sysuser["systemadmin"]) && $sysuser["systemadmin"] == 1) {
  416.             $em $doctrine->getManager();
  417.             $query_v $em->createQuery("SELECT v FROM OEW\RegistrationBundle\Entity\Veranstaltung v WHERE v.url != '' and v.deaktiviert=0");
  418.             $myVeranstaltungen $query_v->getResult();
  419.             $meineTeilnahmen = array();
  420.             $i 0;
  421.             foreach($myVeranstaltungen as $myVeranstaltung) {
  422.                 $meineTeilnahmen[$i]["veranstaltung_id"] = $myVeranstaltung->getId();
  423.                 // setting up logo
  424.                 if ($myVeranstaltung->getTyp() == "tt") {
  425.                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_tourismustag";
  426.                     $meineTeilnahmen[$i]["veranstaltung_title"] = "ÖW Tourismustag";
  427.                 } else if ($myVeranstaltung->getTyp() == "mt") {
  428.                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_maerktetag";
  429.                     $meineTeilnahmen[$i]["veranstaltung_title"] = "ÖW Märktetag";
  430.                 } else if ($myVeranstaltung->getTyp() == "oews") {
  431.                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_oews";
  432.                     $meineTeilnahmen[$i]["veranstaltung_title"] = "ÖWork_Shop";
  433.                 } else if ($myVeranstaltung->getTyp() == "sales") {
  434.                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_sales";
  435.                     $meineTeilnahmen[$i]["veranstaltung_title"] = $myVeranstaltung->getTitelDe();
  436.                 } else if ($myVeranstaltung->getTyp() == "xp") {
  437.                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_exp";
  438.                     $meineTeilnahmen[$i]["veranstaltung_title"] = $myVeranstaltung->getTitelDe();  
  439.                 } else if ($myVeranstaltung->getTyp() == "atbvirtuell") {
  440.                     $meineTeilnahmen[$i]["veranstaltung_logo"] = "_atbvirtuell";
  441.                     $meineTeilnahmen[$i]["veranstaltung_title"] = $myVeranstaltung->getTitelDe();  
  442.                 }
  443.                 $meineTeilnahmen[$i]["url"] = $myVeranstaltung->getUrl();
  444.                 $i++;
  445.             }    
  446.         }
  447.         // default values for veranstaltung
  448.         $logo ""// logo is empty, so default logo will be atb_logo.gif
  449.         $veranstaltung_title "ATB Ã–sterreich";
  450.         $veranstaltung_typ $request->get('v');
  451.         $veranstaltung $request->get('v');
  452.         // checking if get parameter is given for particular veranstaltung
  453.         if ($veranstaltung == "tt") {
  454.             $veranstaltung_title "ÖW Tourismustag";
  455.             $logo "_tourismustag";
  456.             $veranstaltung_id 7;
  457.             $veranstaltung_typ "tt";
  458.         } else if ($veranstaltung == "mt") {
  459.             $veranstaltung_title "ÖW Märktetag";
  460.             $logo "_maerktetag";
  461.             $veranstaltung_id 5;
  462.             $veranstaltung_typ "mt";
  463.         } else if ($veranstaltung == "oews") {
  464.             $veranstaltung_title "ÖWorkShop";
  465.             $logo "_oews";
  466.             $veranstaltung_id 3;
  467.             $veranstaltung_typ "oews";
  468.         } else if ($veranstaltung == "sales") {
  469.             $veranstaltung_title "ATB";
  470.             $logo "_sales";
  471.             $veranstaltung_id 16;
  472.             $veranstaltung_typ "sales";
  473.         } else if ($veranstaltung == "exp") {
  474.             $veranstaltung_title "atb_xperience";
  475.             $logo "_exp";  
  476.             $veranstaltung_id 8;
  477.             $veranstaltung_typ "xp";
  478.         } else if ($veranstaltung == "atbvirtuell") {
  479.             $veranstaltung_title "ATB Virtuell";
  480.             $logo "_virtuell";
  481.             $veranstaltung_id 13;
  482.             $veranstaltung_typ "atbvirtuell";
  483.         }
  484.         if (isset($veranstaltung_id)){
  485.             // veranstaltung is set
  486.             $registration['veranstaltung'] = $veranstaltung_id;
  487.             $myVeranstaltung $this->getVeranstaltung($chosenVeranstaltung);
  488.             $veranstaltung_typ $myVeranstaltung[0]->getTyp();
  489.             $mitarbeiterlink $this->generateUrl('oew_reg_oewma_'.$request->getLocale());
  490.             if ( $myVeranstaltung[0]->getTyp() == "sales" || $myVeranstaltung[0]->getTyp() == "xp" || $myVeranstaltung[0]->getTyp() == "atbvirtuell" ) {
  491.                 $registration['veranstaltung_id'] = $veranstaltung_id;
  492.                 $userlink $this->generateUrl('oew_reg_home_'.$request->getLocale());
  493.             } elseif ( $myVeranstaltung[0]->getTyp() == "oews" || $myVeranstaltung[0]->getTyp() == "tt" || $myVeranstaltung[0]->getTyp() == "mt" ) {
  494.                 // if oews or tourismustag proceed with company search
  495.                 if ( $myVeranstaltung[0]->getTyp() == "oews" ) {
  496.                     $registration['rolleid'] = 7;
  497.                     $registration['rolle'] = "Gast";
  498.                 } elseif ($myVeranstaltung[0]->getTyp() == "tt") {
  499.                     $registration['rolleid'] = 18;
  500.                     $registration['rolle'] = "Gast";
  501.                 } elseif ($myVeranstaltung[0]->getTyp() == "mt") {
  502.                     $registration['rolleid'] = 10;
  503.                     $registration['rolle'] = "Gast";
  504.                 }
  505.                 $registration['module'] = array("firmensuche","firma","person","programm","zimmer","transfer","login");
  506.                 $userlink $this->generateUrl('oew_reg_firmensuche_'.$request->getLocale()) ;
  507.             }
  508.         } else {
  509.             // check if the user is allowed for experience
  510.             $add_where " AND v.typ <> 'xp' ";
  511.             if (isset($sysuser['teilnehmerId'])) {
  512.                 $myTeilnehmer $doctrine->getRepository('OEW\RegistrationBundle\Entity\Teilnehmer')->findOneById($sysuser['teilnehmerId']);
  513.                 
  514.                 if ($myTeilnehmer) {
  515.                     if ($myTeilnehmer->getExperience() == || isset($sysuser["istmitarbeiter"])) {
  516.                         $add_where " ";
  517.                     }
  518.                 }
  519.             }
  520.             // veranstaltung not set
  521.             // check if there is only one, if so, skip the choose and redirect to registration
  522. //            $em = $doctrine->getManager();
  523.             $query_v $em->createQuery("SELECT v FROM OEW\RegistrationBundle\Entity\Veranstaltung v WHERE  (v.anmeldungVon <= CURRENT_DATE() AND v.anmeldungBis >= CURRENT_DATE()) and v.deaktiviert=0 ".$add_where);
  524.             $allVeranstaltungen $query_v->getResult();
  525.             $mitarbeiterlink ""
  526.             $userlink "";  
  527.             
  528.             if (count($allVeranstaltungen) > ) {
  529.                 $userlink $this->generateUrl('oew_reg_choose_'.$request->getLocale()); 
  530.                 $mitarbeiterlink $this->generateUrl('oew_reg_choose_'.$request->getLocale()); 
  531.             } else if (count($allVeranstaltungen) == 1) {
  532.                 
  533.                 $registration['veranstaltung'] = $allVeranstaltungen[0]->getId();
  534.                 if ($allVeranstaltungen[0]->getTyp() == "tt") {
  535.                     $veranstaltung_title "ÖW Tourismustag";
  536.                     $logo "_tourismustag";
  537.                     $userlink $this->generateUrl('oew_reg_firmensuche_'.$request->getLocale()) ;
  538.                 } else if ($allVeranstaltungen[0]->getTyp() == "mt") {
  539.                     $veranstaltung_title "ÖW Märktetag";
  540.                     $logo "_maerktetag";
  541.                 } else if ($allVeranstaltungen[0]->getTyp() == "oews") {
  542.                     $veranstaltung_title "ÖWork_Shop";
  543.                     $logo "_oews";
  544.                     $userlink $this->generateUrl('oew_reg_firmensuche_'.$request->getLocale()) ;
  545.                 } else if ($allVeranstaltungen[0]->getTyp() == "sales") {
  546.                     $veranstaltung_title $allVeranstaltungen[0]->getTitelDe();
  547.                     $logo "_sales";
  548.                     $userlink $this->generateUrl('oew_reg_rolle_'.$request->getLocale()) ;
  549.                 } else if ($allVeranstaltungen[0]->getTyp() == "exp") {
  550.                     $veranstaltung_title "atb_experience";
  551.                     $logo "_exp";  
  552.                     $userlink $this->generateUrl('oew_reg_firmensuche_'.$request->getLocale()) ;
  553.                 } else if ($allVeranstaltungen[0]->getTyp() == "atbvirtuell") {                   
  554.                     $veranstaltung_title "ATB Virtuell";
  555.                     $logo "_virtuell";  
  556.                     $userlink $this->generateUrl('oew_reg_home_'.$request->getLocale()) ;
  557.                 }
  558.                 $veranstaltung_typ $allVeranstaltungen[0]->getTyp();
  559.                 $mitarbeiterlink $this->generateUrl('oew_reg_oewma_'.$request->getLocale()); 
  560.                   
  561.             } else {
  562.                 // check experience for MAs
  563.                 // veranstaltung not set
  564.                 // check if there is MA registration open for exclusive event
  565.                 $em $doctrine->getManager();
  566.                 $query_v $em->createQuery("SELECT v FROM OEW\RegistrationBundle\Entity\Veranstaltung v WHERE (v.anmeldungVon <= CURRENT_DATE() AND v.anmeldungBis >= CURRENT_DATE()) and v.deaktiviert=0 ");
  567.                 $MAVeranstaltungen $query_v->getResult();
  568.                 if ($MAVeranstaltungen)
  569.                     if (count($MAVeranstaltungen == 1)) {
  570.                         $registration['veranstaltung'] = $MAVeranstaltungen[0]->getId();
  571.                         if ($MAVeranstaltungen[0]->getTyp() == "exp") {
  572.                             $veranstaltung_title "atb_experience";
  573.                             $logo "_exp";  
  574.                         }
  575.                         $veranstaltung_typ $MAVeranstaltungen[0]->getTyp();
  576.                         $mitarbeiterlink $this->generateUrl('oew_reg_oewma_'.$request->getLocale());   
  577.                     }
  578.                  
  579.             } 
  580.         }
  581.        
  582.         // setting the header logo and title into session
  583.         $registration['logo'] = $logo;
  584.         // if first step, the logo will not be shown on portal until next step
  585.         $registration['firststep'] = 1;
  586.         $registration['veranstaltung_title'] = $veranstaltung_title;
  587.         $registration['veranstaltung_typ'] = $veranstaltung_typ;
  588.         
  589.         
  590.         $myMitarbeiter 0;
  591.         if (isset($sysuser["istmitarbeiter"]))
  592.             $myMitarbeiter $sysuser["istmitarbeiter"];
  593.         // user has used invitation link for unterkojenmieter
  594.         if ( ( $request->get('rl') == "ua") && ($request->get('k') != "") && ($request->get('s') != "") ) {
  595.             $registration['koje_einladung']['rl'] = "ua";
  596.             $registration['koje_einladung']['k'] = $request->get('k');
  597.             $registration['koje_einladung']['s'] = $request->get('s');
  598.             $registration['koje_einladung']['ref'] = $request->get('ref');
  599.             $kt $em->getRepository('OEW\RegistrationBundle\Entity\PaketTeilnehmer')->findOneById($request->get('k'));
  600.             if ( $kt ) {
  601.                 if ($kt->getEinladungGleichefirma() == 1) {
  602.                     $registration['koje_einladung']['gleichefirma'] = 1;
  603.                 }
  604.             } 
  605.         }
  606.         $session->set('registration',$registration); 
  607.         // if deep link activ
  608.         if ( ((isset($sysuser["teilnehmerId"]) && $sysuser["teilnehmerId"] > 0) || isset($sysuser["istmitarbeiter"]) ) && (isset($_COOKIE["url"]) && $_COOKIE["url"] != "")) {
  609.             $url $_COOKIE["url"];
  610.             setcookie("url"""time()+3600"/"".tourismustage.at"true); 
  611.             return $this->redirect($url);   
  612.         }
  613.         $html $twig->render('@OEWRegistrationBundle/willkommen.html.twig',
  614.             [
  615.                 'registration' => $registration,
  616.                 'formerrors' => $formerrors,
  617.                 'userlink' => $userlink,
  618.                 'mitarbeiterlink' => $mitarbeiterlink,
  619.                 'teilnahme' => $meineTeilnahmen,
  620.                 'andere' => $andereVeranstaltungen,
  621.                 'mitarbeiter' => $myMitarbeiter 
  622.             ]
  623.         );
  624.         
  625.         return new Response$html );
  626.     }
  627.     
  628.     public function wlogg$teilnehmerId$veranstaltungid$aktionManagerRegistry $doctrine$beschreibung="" ) {
  629.         $em $doctrine->getManager();
  630.         if(!$veranstaltungid) return;
  631.         
  632.         $logg = new Logging();
  633.         $logg->setTeilnehmerId($teilnehmerId);
  634.         $logg->setAnTeilnehmerId($teilnehmerId);
  635.         $logg->setVeranstaltungId($veranstaltungid);
  636.         $logg->setZeitpunkt( new \DateTime(date("Y-m-d H:i:s")) );
  637.         $logg->setAktion($aktion);
  638.         $logg->setBeschreibung($beschreibung);
  639.         
  640.         try { $em->persist($logg);$em->flush(); }
  641.         catch (IOException $e) {}
  642.     }
  643.     public function getProfilbild$personId ) {
  644.         $fs = new Filesystem();
  645.         $dir getenv('files_dir');
  646.         $path =  getenv('files_path');
  647.         if ( $fs->exists($dir "pbild_".$personId.".jpg") ) return $path "pbild_" $personId ".jpg?nocache=".time();
  648.         elseif ( $fs->exists($dir "pbild_".$personId.".jpeg") ) return $path "pbild_" $personId ".jpeg?nocache=".time();
  649.         elseif ( $fs->exists($dir "pbild_".$personId.".png") ) return $path "pbild_" $personId ".png?nocache=".time();
  650.         return false;
  651.     }
  652.     
  653.     public function setaktiveuserAction(Request $requestManagerRegistry $doctrine) {
  654.         $formerrors = array();
  655.         $session $request->getSession();
  656.         $registration $session->get('registration', array());
  657.         if ($request->get('tid') != "") {
  658.             $tid = (int)base64_decode($request->get('tid'));
  659.             if ($tid 0) {
  660.                 $veranstaltungid 3;
  661.                 $em $doctrine->getManager();
  662.                 $query $em->createQuery("SELECT tn FROM OEW\RegistrationBundle\Entity\Teilnahme tn WHERE  tn.deaktiviert IS NULL AND tn.geloescht IS NULL AND  tn.teilnehmerId = :tid AND tn.veranstaltungId= :vid");
  663.                 $query->setParameter('tid'$tid);
  664.                 $query->setParameter('vid'$veranstaltungid);
  665.                 $teilnahme $query->getOneOrNullResult();
  666.                 $teilnahme->setAktiviert(new \DateTime(date("Y-m-d H:i:s")));
  667.                 $query $em->createQuery("SELECT tn FROM OEW\RegistrationBundle\Entity\Teilnehmer tn WHERE  tn.deaktiviert IS NULL AND tn.geloescht IS NULL AND  tn.id = :tid");
  668.                 $query->setParameter('tid'$tid);
  669.                 $teilnehmer $query->getOneOrNullResult();
  670.                 $teilnehmer->setAktiviert(new \DateTime(date("Y-m-d H:i:s")));
  671.                 $homelink $this->get('router')->generate('oew_reg_welcome_de', array(), true);
  672.                 $em->flush();
  673.                 $html $twig->render('@OEWRegistrationBundle/aktivierung.html.twig',
  674.                     [
  675.                         'registration' => $registration,
  676.                         'formerrors' => $formerrors,
  677.                         'homelink' => $homelink
  678.                     ]
  679.                 );
  680.                 return new Response$html ); 
  681.             }
  682.         } else {
  683.             $html $twig->render('@OEWRegistrationBundle/willkommen.html.twig',
  684.                 [
  685.                 'registration' => $registration,
  686.                 'formerrors' => $formerrors,
  687. //                'userlink' => $userlink,
  688. //                'mitarbeiterlink' => $mitarbeiterlink,
  689. //                'teilnahme' => $meineTeilnahmen,
  690. //                'andere' => $andereVeranstaltungen,
  691. //                'mitarbeiter' => $sysuser["istmitarbeiter"]
  692.                 ]
  693.             );
  694.             return new Response$html ); 
  695.            
  696.         }
  697.     }
  698. }