/** * @param Request $request * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function addBranchSitesAction(Request $request) { $em = $this->getDoctrine()->getEntityManager(); $site = $this->get('sudoux.cms.site')->getSite(); $branches = $em->getRepository('SudouxMortgageBundle:Branch')->findBy(array('site' => $site, 'active' => true, 'deleted' => false)); $siteCount = 0; foreach ($branches as $branch) { if (!$branch->hasSite()) { $newSite = new Site(); $newSite->setParentSite($site); $newSite->setActive(true); $settings = new Settings(); $newSite->setSettings($settings); $newSite->setName($branch->getName()); $settings->setBranch($branch); $branch->setBranchSite($newSite); $em->persist($branch); $siteEmail = $branch->getEmail(); if (isset($siteEmail)) { $settings->setWebsiteEmail($siteEmail); } $siteType = $em->getRepository('SudouxCmsSiteBundle:SiteType')->findOneBy(array('key_name' => 'branch')); $newSite->setSiteType($siteType); $parentDomain = $site->getPrimaryDomain(); $subdomain = str_replace(' ', '', strtolower($branch->getName())); $subdomain = preg_replace("/[^a-z ]/", '', $subdomain); $subdomain .= '.' . $parentDomain->getDomain(); $em->persist($settings); $em->persist($newSite); $subdomain = $this->getAvailableDomain($subdomain); $domain = new Domain(); $domain->setDomain($subdomain); $domain->setDescription(sprintf('Primary domain for %s', $newSite->getName())); $domain->setSite($newSite); $newSite->setPrimaryDomain($domain); $em->persist($domain); $siteCount++; } } $em->flush(); $session = $request->getSession(); $session->getFlashBag()->add('success', $siteCount . ' branch sites have been created.'); return $this->redirect($this->generateUrl('sudoux_cms_admin_internal_tools')); }
/** * @param LifecycleEventArgs $args */ public function postPersist(LifecycleEventArgs $args) { $this->em = $args->getEntityManager(); $entity = $args->getEntity(); if ($entity instanceof LoanOfficer || $entity instanceof Branch) { $site = $entity->getSite(); $autoCreateSites = $site->getSettings()->getInheritedAutoCreateSites(); if ($autoCreateSites) { if ($entity instanceof LoanOfficer) { if (!$entity->hasSite()) { $newSite = new Site(); $newSite->setParentSite($site); $newSite->setActive(true); $settings = new Settings(); $newSite->setSettings($settings); $newSite->setName($entity->getFullName()); $settings->setLoanOfficer($entity); $entity->setOfficerSite($newSite); $this->em->persist($entity); $siteEmail = $entity->getEmail(); if (isset($siteEmail)) { $settings->setWebsiteEmail($siteEmail); } $siteType = $this->em->getRepository('SudouxCmsSiteBundle:SiteType')->findOneBy(array('key_name' => 'loan_officer')); $newSite->setSiteType($siteType); $parentDomain = $site->getPrimaryDomain(); $subdomain = str_replace(' ', '', strtolower($entity->getFullName())); $subdomain = preg_replace("/[^a-z ]/", '', $subdomain); $subdomain .= '.' . $parentDomain->getDomain(); $this->em->persist($settings); $this->em->persist($newSite); $subdomain = $this->getAvailableDomain($subdomain); $domain = new Domain(); $domain->setDomain($subdomain); $domain->setDescription(sprintf('Primary domain for %s', $newSite->getName())); $domain->setSite($newSite); $this->em->persist($domain); $newSite->setPrimaryDomain($domain); $this->em->flush(); } } if ($entity instanceof Branch) { if (!$entity->hasSite()) { $newSite = new Site(); $newSite->setParentSite($site); $newSite->setActive(true); $settings = new Settings(); $newSite->setSettings($settings); $newSite->setName($entity->getName()); $settings->setBranch($entity); $entity->setBranchSite($newSite); $this->em->persist($entity); $siteEmail = $entity->getEmail(); if (isset($siteEmail)) { $settings->setWebsiteEmail($siteEmail); } $siteType = $this->em->getRepository('SudouxCmsSiteBundle:SiteType')->findOneBy(array('key_name' => 'branch')); $newSite->setSiteType($siteType); $parentDomain = $site->getPrimaryDomain(); $subdomain = str_replace(' ', '', strtolower($entity->getName())); $subdomain = preg_replace("/[^a-z ]/", '', $subdomain); $subdomain .= '.' . $parentDomain->getDomain(); $this->em->persist($settings); $this->em->persist($newSite); $subdomain = $this->getAvailableDomain($subdomain); $domain = new Domain(); $domain->setDomain($subdomain); $domain->setDescription(sprintf('Primary domain for %s', $newSite->getName())); $domain->setSite($newSite); $this->em->persist($domain); $newSite->setPrimaryDomain($domain); $this->em->flush(); } } } } }