コード例 #1
0
ファイル: actions.class.php プロジェクト: jnankin/makeaminyan
 public function executeAddNewSubscriber(sfWebRequest $request)
 {
     $this->minyan = Utils::extractDomainObjectFromRequest($request, 'Minyan', 'minyanId', true);
     $this->form = new SignupForm();
     unset($this->form['password']);
     if ($request->isMethod('post')) {
         $this->form->bind($request->getParameter('signup'));
         if ($this->form->isValid()) {
             $fields = $this->form->getValues();
             $con = Doctrine::getConnectionByTableName('SfGuardUser');
             try {
                 $con->beginTransaction();
                 $this->logMessage("Executing signup for new user for minyan {$this->minyan->getName()}: {$fields['email']}", 'notice');
                 $sgu = new SfGuardUser();
                 $sgu->setFirstName($fields['first_name']);
                 $sgu->setLastName($fields['last_name']);
                 $sgu->setUsername($fields['email']);
                 $sgu->setEmailAddress($fields['email']);
                 $sgu->setPhone($fields['phone']);
                 $sgu->setPassword(sfConfig::get('app_temp_password'));
                 $sgu->setIsActive(true);
                 $sgu->save();
                 $contactMethods = $request->getParameter('contact_method');
                 foreach ($contactMethods as $name => $method) {
                     $contactMethods[$name] = Utils::toBoolean($method);
                 }
                 $minyanUser = new MinyanUser();
                 $minyanUser->setMinyanId($this->minyan->getId());
                 $minyanUser->setUserId($sgu->getId());
                 $minyanUser->setUsePhone($contactMethods['phone']);
                 $minyanUser->setUseSms($contactMethods['text']);
                 $minyanUser->setUseEmail($contactMethods['email']);
                 $minyanUser->save();
                 $con->commit();
             } catch (Exception $e) {
                 $con->rollback();
                 $this->logMessage("Problem when signing up user {$fields['email']}: {$e->getMessage()}", 'notice');
                 throw $e;
             }
             MAMUtils::sendInternalEmail("New Make a Minyan User Alert for minyan {$this->minyan->getName()}! - {$sgu->getFullName()}", "");
             //send email
             $options = array();
             $options['template'] = 'welcomeToMinyan';
             $options['subject'] = 'Welcome!';
             $options['minyan'] = $this->minyan;
             $options['user'] = $sgu;
             $options['minyanUser'] = $minyanUser;
             $options['first_name'] = $sgu->getFirstName();
             $options['to'] = $sgu->getUsername();
             EmailUtils::send($options);
             $this->logMessage('Welcome email sent to ' . $sgu->getUsername(), 'notice');
             $this->getUser()->setFlash('subscribersSuccess', 'Added ' . $sgu->getUsername() . ' successfully!');
             echo Utils::ajaxResponse(true, $this->minyan->getId());
             return sfView::NONE;
         }
     }
 }
コード例 #2
0
 public static function fireBlast(Blast $blast)
 {
     //dont do anything if we've already fired
     if ($blast->getHasFired()) {
         return;
     }
     $blast->setHasFired(true);
     $blast->save();
     $minyan = $blast->getMinyan();
     //loop through the minyan subscribers, generate a response, and send notifications
     $phoneCounter = 0;
     $emailCounter = 0;
     $textCounter = 0;
     $subscribers = $minyan->getUsers();
     foreach ($subscribers as $subscriber) {
         $response = new BlastResponse();
         $response->setBlastId($blast->getId());
         $response->setUserId($subscriber->getUserId());
         $response->save();
         if ($subscriber->getUsePhone()) {
             self::createPhoneResponse($response);
             $phoneCounter++;
         } else {
             if ($subscriber->getUseSms()) {
                 self::createTextResponse($response);
                 $textCounter++;
             }
         }
         if ($subscriber->getUseEmail()) {
             self::createEmailResponse($response);
             $emailCounter++;
         }
     }
     MAMUtils::sendInternalEmail("Minyan Blast - {$minyan->getName()}", $blast->getTextMessage() . "<br><ul><li>Emails: {$emailCounter}</li><li>Phone Calls: {$phoneCounter}</li><li>Texts: {$textCounter}</li></ul>");
     //update the minyan resource counters
     $minyan->setNumberEmails($minyan->getNumberEmails() + $emailCounter);
     $minyan->setNumberTexts($minyan->getNumberTexts() + $textCounter);
     $minyan->setNumberPhoneCalls($minyan->getNumberPhoneCalls() + $phoneCounter);
     $minyan->save();
     $blast->setNumberEmails($blast->getNumberEmails() + $emailCounter);
     $blast->setNumberTexts($blast->getNumberTexts() + $textCounter);
     $blast->setNumberPhoneCalls($blast->getNumberPhoneCalls() + $phoneCounter);
     $blast->save();
 }
コード例 #3
0
ファイル: actions.class.php プロジェクト: jnankin/makeaminyan
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
 public function executeIndex(sfWebRequest $request)
 {
     $this->form = new SignupForm();
     if ($request->isMethod('post')) {
         $this->form->bind($request->getParameter('signup'));
         if ($this->form->isValid()) {
             $fields = $this->form->getValues();
             $con = Doctrine::getConnectionByTableName('SfGuardUser');
             try {
                 $con->beginTransaction();
                 $this->logMessage("Executing signup for new user: {$fields['email']}", 'notice');
                 $sgu = new SfGuardUser();
                 $sgu->setFirstName($fields['first_name']);
                 $sgu->setLastName($fields['last_name']);
                 $sgu->setUsername($fields['email']);
                 $sgu->setEmailAddress($fields['email']);
                 $sgu->setPhone($fields['phone']);
                 $sgu->setPassword($fields['password']);
                 $sgu->setIsActive(true);
                 $sgu->save();
                 $con->commit();
             } catch (Exception $e) {
                 $con->rollback();
                 $this->logMessage("Problem when signing up user {$fields['email']}: {$e->getMessage()}", 'notice');
                 throw $e;
             }
             MAMUtils::sendInternalEmail("New Make a Minyan User Alert! - {$sgu->getFullName()}, Plan: {$this->plan['name']}", "");
             //send email
             $options = array();
             $options['template'] = 'welcome';
             $options['subject'] = 'Welcome!';
             $options['first_name'] = $sgu->getFirstName();
             $options['to'] = $sgu->getUsername();
             EmailUtils::send($options);
             $this->logMessage('Welcome email sent to ' . $sgu->getUsername(), 'notice');
             $this->redirect('signup/thanks');
         }
     }
 }