示例#1
0
 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());
 }