Пример #1
0
 public function registerAction()
 {
     $this->userTable = $this->getServiceLocator()->get('UserTable');
     $this->layout('layout/register');
     $RegisterUserForm = new RegisterForm();
     // get form request methord.
     $request = $this->getRequest();
     if ($request->isPost()) {
         $post = $this->request->getPost();
         $email = $post["email"];
         $usersDetail = $this->userTable->getActiveUserByEmail($post->email);
         $inputFilter = new RegisterFilter();
         $RegisterUserForm->setInputFilter($inputFilter);
         $RegisterUserForm->setData($post);
         if (!$RegisterUserForm->isValid() || isset($usersDetail->user_id)) {
             if (isset($usersDetail->user_id)) {
                 $RegisterUserForm->setMessages(array('email' => array("This email is already registered with us.")));
             }
             if ($post->password !== $post->confirm_password) {
                 $RegisterUserForm->setMessages(array('confirm_password' => array("Password not matched.")));
             }
             //'confirm_password' => array( "Password not matched.")
         } else {
             $user = new User();
             $user->exchangeArray($RegisterUserForm->getData());
             $this->getUserTable()->createUser($user);
             $lastInsertUserID = $this->getUserTable()->lastInsertValue;
             $this->renderer = $this->getServiceLocator()->get('ViewRenderer');
             $mailcontent = $this->renderer->render('mails/RegisterUser', null);
             $encryptedresetlink = base64_encode("{$lastInsertUserID}|" . time());
             $this->getUserTable()->usertokeninsert($lastInsertUserID, $encryptedresetlink);
             //insert into token table  encryped data
             $ResetLink = "http://{$_SERVER["SERVER_NAME"]}/user/activate/{$encryptedresetlink}";
             $tokenKeyValues = array('#USERNAME#' => $user->fname, "#CREATELINK#" => $ResetLink);
             $msgSubject = "Welcome to Interview Organiser";
             $this->SendMail()->SendMailSmtp($user->email, $msgSubject, $mailcontent, $tokenKeyValues);
             $this->flashMessenger()->setNamespace('info')->addMessage('Email is send to your email id for activation');
             return $this->redirect()->toRoute(NULL, array('controller' => 'users', 'action' => 'register'));
         }
     }
     $model = new ViewModel(array('form' => $RegisterUserForm));
     $model->setTemplate('users/users/register');
     return $model;
 }