public function passwordretrieveAction() { $form = new Application_Form_PasswordRetrieve(); if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getParams())) { $retrieveData = $form->getValues(); $user = Application_Model_Mappers_UserMapper::getInstance()->findByEmail(filter_var($retrieveData['email'], FILTER_SANITIZE_EMAIL)); //create new reset token and send e-mail to the user $resetToken = new Application_Model_Models_PasswordRecoveryToken(array('saltString' => $retrieveData['email'], 'expiredAt' => date(Tools_System_Tools::DATE_MYSQL, strtotime('+1 day', time())), 'userId' => $user->getId())); $resetToken->registerObserver(new Tools_Mail_Watchdog(array('trigger' => Tools_Mail_SystemMailWatchdog::TRIGGER_PASSWORDRESET))); $resetTokenId = Application_Model_Mappers_PasswordRecoveryMapper::getInstance()->save($resetToken); if ($resetTokenId) { $this->_helper->flashMessenger->setNamespace('passreset')->addMessage('We\'ve sent an email to ' . $user->getEmail() . ' containing a temporary url that will allow you to reset your password for the next 24 hours. Please check your spam folder if the email doesn\'t appear within a few minutes.'); if (isset($this->_helper->session->retrieveRedirect)) { $redirectTo = $this->_helper->session->retrieveRedirect; unset($this->_helper->session->retrieveRedirect); $this->redirect($this->_helper->website->getUrl() . $redirectTo); } $this->_helper->redirector->gotoRoute(array('controller' => 'login', 'action' => 'passwordretrieve')); } } else { $messages = array_values($form->getMessages()); $flashMessanger = $this->_helper->flashMessenger; foreach ($messages as $messageData) { if (is_array($messageData)) { array_walk($messageData, function ($msg) use($flashMessanger) { $flashMessanger->addMessage(array('email' => $msg)); }); } else { $flashMessanger->addMessage(array('email' => $messageData)); } } if (isset($this->_helper->session->retrieveRedirect)) { $redirectTo = $this->_helper->session->retrieveRedirect; unset($this->_helper->session->retrieveRedirect); return $this->redirect($this->_helper->website->getUrl() . $redirectTo); } return $this->redirect($this->_helper->website->getUrl() . 'login/retrieve/'); } } $errorMessages = $this->_helper->flashMessenger->getMessages(); if (!empty($errorMessages)) { foreach ($errorMessages as $message) { foreach ($message as $elementName => $msg) { $form->getElement($elementName)->setAttribs(array('class' => 'notvalid', 'title' => $msg)); } } } $passResetMsg = $this->_helper->flashMessenger->getMessages('passreset'); if (!empty($passResetMsg)) { $this->view->retrieveSuccessMessage = join($passResetMsg, PHP_EOL); } $form->removeDecorator('HtmlTag'); $form->setElementDecorators(array('ViewHelper', 'Errors', 'Label', array('HtmlTag', array('tag' => 'p')))); $this->view->form = $form; }