public function processrecoverpasswordAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(TRUE); $formvalues = $this->_getAllParams(); $session = SessionWrapper::getInstance(); // debugMessage($this->_getAllParams()); if (!isEmptyString($formvalues['email'])) { // process the password recovery $user = new UserAccount(); $useraccount = new UserAccount(); // $user->setEmail($this->_getParam('email')); # check which field user is using to login. default is username $credcolumn = "username"; $login = (string) $formvalues['email']; # check if credcolumn is phone if (strlen($login) == 12 && is_numeric(substr($login, -6, 6))) { $credcolumn = 'phone'; } # check if credcolumn is emai $validator = new Zend_Validate_EmailAddress(); if ($validator->isValid($login)) { $credcolumn = 'email'; } // debugMessage($credcolumn); $userfond = false; switch ($credcolumn) { case 'email': if ($useraccount->findByEmail($formvalues['email'])) { $userfond = true; // debugMessage($useraccount->toArray()); } break; case 'phone': $useraccount = $user->populateByPhone($formvalues['email']); if (!isEmptyString($useraccount->getID())) { $userfond = true; // debugMessage($useraccount->toArray()); } break; case 'username': if ($useraccount->findByUsername($formvalues['email'])) { $userfond = true; // debugMessage($useraccount->toArray()); } break; default: break; } // exit; if (!isEmptyString($useraccount->getID())) { $useraccount->recoverPassword(); // send a link to enable the user to recover their password $session->setVar(SUCCESS_MESSAGE, "Instructions on how to reset your password have been sent to your email (" . $useraccount->getEmail() . ")"); $this->_helper->redirector->gotoUrl($this->view->baseUrl("user/login")); } else { $usecase = '1.14'; $module = '1'; $type = USER_RECOVER_PASSWORD; $details = "Recover password request for user with Identity " . $formvalues['email'] . " failed. No match found."; $browser = new Browser(); $audit_values = $session->getVar('browseraudit'); $audit_values['module'] = $module; $audit_values['usecase'] = $usecase; $audit_values['transactiontype'] = $type; $audit_values['userid'] = $session->getVar('userid'); $audit_values['transactiondetails'] = $details; $audit_values['status'] = "N"; // debugMessage($audit_values); $this->notify(new sfEvent($this, $type, $audit_values)); // send an error message that no user with that email was found $session = SessionWrapper::getInstance(); $session->setVar(FORM_VALUES, $this->_getAllParams()); $session->setVar(ERROR_MESSAGE, $this->_translate->translate("profile_user_invalid_error")); $this->_helper->redirector->gotoUrl($this->view->baseUrl("user/recoverpassword")); } } }