/** * Changes a password from a given key * * @access public * @param string $key Recovery key * @return mixed True on success or Jaws_Error on failure */ function ChangePassword($key) { $jUser = new Jaws_User(); $user = $jUser->GetUserByPasswordVerifyKey($key); if (Jaws_Error::IsError($user) || empty($user)) { return false; } // generate new password $password = Jaws_Utils::RandomText(8); $res = $jUser->UpdateUser($user['id'], array('username' => $user['username'], 'nickname' => $user['nickname'], 'email' => $user['email'], 'password' => $password)); if (Jaws_Error::IsError($res)) { return $res; } $site_url = $GLOBALS['app']->getSiteURL('/'); $site_name = $this->gadget->registry->fetch('site_name', 'Settings'); $tpl = $this->gadget->template->load('NewPassword.txt'); $tpl->SetBlock('NewPassword'); $tpl->SetVariable('say_hello', _t('USERS_EMAIL_REPLACEMENT_HELLO', $user['nickname'])); $tpl->SetVariable('username', $user['username']); $tpl->SetVariable('nickname', $user['nickname']); $tpl->SetVariable('password', $password); $tpl->SetVariable('message', _t('USERS_FORGOT_PASSWORD_CHANGED_MESSAGE', $user['username'])); $tpl->SetVariable('lbl_password', _t('USERS_USERS_PASSWORD')); $tpl->SetVariable('lbl_username', _t('USERS_USERS_USERNAME')); $tpl->SetVariable('thanks', _t('GLOBAL_THANKS')); $tpl->SetVariable('site-name', $site_name); $tpl->SetVariable('site-url', $site_url); $tpl->ParseBlock('NewPassword'); $message = $tpl->Get(); $subject = _t('USERS_FORGOT_PASSWORD_CHANGED_SUBJECT'); $mail = Jaws_Mail::getInstance(); $mail->SetFrom(); $mail->AddRecipient($user['email']); $mail->SetSubject($subject); $mail->SetBody($this->gadget->ParseText($message)); $mresult = $mail->send(); if (Jaws_Error::IsError($mresult)) { return new Jaws_Error(_t('USERS_FORGOT_ERROR_SENDING_MAIL')); } return true; }