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