Example #1
0
 /**
  * Handles the registration. Validates and creates the member, then redirects
  * to the appropriate place
  *  
  * @param  array $data
  * @param  BootstrapForm $form
  * @return SSViewer
  */
 public function doRegister($data, $form)
 {
     try {
         Session::set("FormInfo.{$form->getName()}.data", $data);
         $member = Member::get()->filter('Email', $data['Email'])->first();
         if ($member) {
             $form->sessionMessage('Bah! We\'ve already got a user with that email.', 'bad');
             return $this->redirectBack();
         }
         if ($data['Password'] != $data['Password_confirm']) {
             $form->sessionMessage('Passwords do not match.', 'bad');
             return $this->redirectBack();
         }
         $member = Member::create(array('FirstName' => $data['FirstName'], 'Surname' => $data['Surname'], 'Email' => $data['Email'], 'Password' => $data['Password']));
         $member->write();
         if (!empty($data[SpeakerRegistrationRequest::ConfirmationTokenParamName])) {
             $speaker_registration_token = $data[SpeakerRegistrationRequest::ConfirmationTokenParamName];
             $this->speaker_registration_request_manager->confirm($speaker_registration_token, $member);
         }
         $member->addToGroupByCode('speakers');
         $member->sendWelcomeEmail();
         Session::clear("FormInfo.{$form->getName()}.data");
         if ($data['BackURL']) {
             $redirect = HTTP::setGetVar('welcome', 1, $data['BackURL']);
             return OpenStackIdCommon::loginMember($member, $redirect);
         }
         $form->sessionMessage('Awesome! You should receive an email shortly.', 'good');
         return OpenStackIdCommon::loginMember($member, $this->redirectBackUrl());
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::WARN);
         return $this->httpError(404, $ex->getMessage());
     }
 }