public function executeResolve(sfWebRequest $request) { $i18n = sfContext::getInstance()->getI18N(); $i = Doctrine::getTable('Invitation')->findOneByUuid($request->getParameter('uuid')); /* Nincs is ilyen meghívó. */ if (!$i) { $m = $i18n->__("Can't find the requested invitation"); $this->getUser()->setFlash('error', $m); $this->redirect("default/error"); } /* Elfogadta már? */ if ($i->getStatus() != "pending") { $m = $i18n->__('The invitation is no longer pending: %status%', array("%status%" => $i->getStatus())); $this->getUser()->setFlash('error', $m); $this->redirect("default/error"); } $p = Doctrine::getTable('Principal')->findOneByFedid($this->getUser()->getUsername()); /* A felhasználó most van itt először. Berakjuk a principal-ba. */ if (!$p) { $p = new Principal(); $p->setFedid($this->getUser()->getUsername()); $p->save(); } /* Ugye nincs még benn a szervezetben? */ $o = $i->getOrganization(); foreach ($i->getPrincipal() as $prin) { if ($prin and $prin->getId() == $this->getUser()->getPrincipalId()) { $i->delete(); $m = $i18n->__('You are already a member of this organization. The invitation has lost its purpose, so we have deleted it.'); $this->getUser()->setFlash('notice', $m); $this->redirect("show/index?id=" . $r->getOrganization()->getId()); } } $p_id = $this->getUser()->getPrincipalId(); $i->setAcceptAt(date('Y-m-d H:i:s')); $i->setStatus('accepted'); $i->setPrincipalId($p_id); $i->save(); $rp = new RolePrincipal(); $rp->setRoleId($i->getRoleId()); $rp->setPrincipalId($p_id); $rp->save(); $r = $rp->getRole(); /* Send email */ $params = array("o" => $o, "p" => $p, "r" => $r); /* szervezők email címei */ $to = array(); foreach ($o->getPrincipal() as $manager) { $to[] = $manager->getUser()->getEmailAddress(); } $email_params = array("to" => $to, "subject" => $i18n->__('%lname% has accepted the invitation to %organization%', array("%lname%" => $p->getUser()->getLastName(), "%organization%" => $o)), "bodyhtml" => $this->getPartial('invitePrincipal/acceptHtml', $params)); $this->sendEmail($email_params); $this->getUser()->setFlash('notice', $i18n->__('You have been successfully added to %organization% organization.', array("%organization%" => $o))); $this->redirect("show/index?id=" . $o->getId()); }
public function executeProcessForm(sfWebRequest $request) { $i18n = sfContext::getInstance()->getI18N(); $r = Doctrine::getTable('Role')->find($request->getParameter('role_id')); $torolve = array(); $uj = array(); $this->forward404Unless($r->getOrganization()->isMy()); foreach ($r->getRolePrincipal() as $rp) { $megmarad = FALSE; foreach ($request->getParameter('principal_id') as $p_id) { if ($rp->getPrincipalId() == $p_id) { $megmarad = TRUE; } } if (!$megmarad) { array_push($torolve, $rp->getPrincipalId()); $rp->delete(); } } $exparray = $request->getParameter('expiration'); $expstring = $exparray['year'] . "-" . $exparray['month'] . "-" . $exparray['day'] . ' 00:00:00'; foreach ($request->getParameter('principal_id') as $p_id) { $ezmarvolt = FALSE; foreach ($r->getRolePrincipal() as $rp) { if ($rp->getPrincipalId() == $p_id) { // ez már egyszer fel van véve. $ezmarvolt = TRUE; } } if (!$ezmarvolt) { $rp = new RolePrincipal(); $rp->setPrincipalId($p_id); $rp->setRoleId($r->getId()); $rp->setExpiration($expstring); $rp->save(); array_push($uj, $rp->getPrincipalId()); } } /** * Mail to deleted principals */ $to = array(); foreach ($torolve as $tpid) { $tp = Doctrine::getTable('Principal')->find($tpid); $to[$tp->getEmail()] = $tp->getName(); } $mail = $this->getMailer()->compose(ProjectConfiguration::$mail_from, $to, $i18n->__(ProjectConfiguration::$mail_tag . 'Your membership in %organization%::%role% has been cancelled', array("%role%" => $r->getName(), "%organization%" => $r->getOrganization()))); $html = $this->getPartial('updateRolePrincipal/cancelledHtml', array("o" => $r->getOrganization(), "r" => $r)); $mail->setBody($html, 'text/html'); $this->getMailer()->send($mail); /** * Mail to added principals */ $to = array(); foreach ($uj as $tpid) { $tp = Doctrine::getTable('Principal')->find($tpid); $to[$tp->getEmail()] = $tp->getName(); } $mail = $this->getMailer()->compose(ProjectConfiguration::$mail_from, $to, $i18n->__(ProjectConfiguration::$mail_tag . 'Welcome to role %organization%::%role%', array("%role%" => $r->getName(), "%organization%" => $r->getOrganization()))); $html = $this->getPartial('updateRolePrincipal/addedHtml', array("o" => $r->getOrganization(), "r" => $r)); $mail->setBody($html, 'text/html'); $this->getMailer()->send($mail); /** * Mail to organization maganers */ $to = $r->getOrganization()->getManagersEmailArray(); $mail = $this->getMailer()->compose(ProjectConfiguration::$mail_from, $to, $i18n->__(ProjectConfiguration::$mail_tag . 'Members of the %organization%::%role% role have been modified', array("%role%" => $r->getName(), "%organization%" => $r->getOrganization()))); $html = $this->getPartial('updateRolePrincipal/managersHtml', array("o" => $r->getOrganization(), "r" => $r)); $mail->setBody($html, 'text/html'); $this->getMailer()->send($mail); $this->redirect("show/index?id=" . $r->getOrganization()->getId()); }