Esempio n. 1
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());
 }