/**
  * Render and process forgot password form
  *
  * @param void
  * @return null
  */
 function forgot_password()
 {
     if (isset($_GET['your_email'])) {
         $your_email = trim(array_var($_GET, 'your_email'));
     } else {
         $your_email = trim(array_var($_POST, 'your_email'));
     }
     tpl_assign('your_email', $your_email);
     if (array_var($_REQUEST, 'submited') == 'submited') {
         if (!is_valid_email($your_email)) {
             tpl_assign('error', new InvalidEmailAddressError($your_email, lang('invalid email address')));
             $this->render();
         }
         // if
         $user = Contacts::getByEmail($your_email);
         if (!($user instanceof Contact && $user->isUser()) || $user->getDisabled()) {
             flash_error(lang('email address not in use', $your_email));
             $this->redirectTo('access', 'forgot_password');
         }
         // if
         $token = sha1(gen_id() . (defined('SEED') ? SEED : ''));
         $timestamp = time() + 60 * 60 * 24;
         set_user_config_option('reset_password', $token . ";" . $timestamp, $user->getId());
         try {
             DB::beginWork();
             Notifier::forgotPassword($user, $token);
             flash_success(lang('success forgot password'));
             DB::commit();
         } catch (Exception $e) {
             DB::rollback();
             flash_error(lang('error forgot password'));
         }
         // try
         $this->redirectTo('access', 'forgot_password', array('instructions_sent' => 1));
     }
     // if
 }
 /**
  * Render and process forgot password form
  *
  * @param void
  * @return null
  */
 function forgot_password()
 {
     $your_email = trim(array_var($_POST, 'your_email'));
     tpl_assign('your_email', $your_email);
     if (array_var($_POST, 'submitted') == 'submitted') {
         if (!is_valid_email($your_email)) {
             tpl_assign('error', new InvalidEmailAddressError($your_email, lang('invalid email address')));
             $this->render();
         }
         // if
         $user = Users::getByEmail($your_email);
         if (!$user instanceof User) {
             flash_error(lang('email address not in use', $your_email));
             $this->redirectTo('access', 'forgot_password');
         }
         // if
         try {
             Notifier::forgotPassword($user);
             flash_success(lang('success forgot password'));
         } catch (Exception $e) {
             flash_error(lang('error forgot password'));
         }
         // try
         $this->redirectTo('access', 'forgot_password');
     }
     // if
 }