| public function clean_account()␊ | 
| {␊ | 
| $account = mb_strtolower(trim($this->cleaned_data['account']));␊ | 
| $db =& Pluf::db();␊ | 
| $true = Pluf_DB_BooleanToDb(true, $db);␊ | 
| $sql = new Pluf_SQL('(email=%s OR login=%s) AND active='.$true,␊ | 
| $sql = new Pluf_SQL('email=%s OR login=%s',␊ | 
| array($account, $account));␊ | 
| $users = Pluf::factory('Pluf_User')->getList(array('filter'=>$sql->gen()));␊ | 
| if ($users->count() == 0) {␊ | 
| throw new Pluf_Form_Invalid(__('Sorry, we cannot find a user with this email address or login. Feel free to try again.'));␊ | 
| }␊ | 
| $ok = false;␊ | 
| foreach ($users as $user) {␊ | 
| if ($user->active) {␊ | 
| $ok = true;␊ | 
| continue;␊ | 
| }␊ | 
| if (!$user->active and $user->first_name == '---') {␊ | 
| $ok = true;␊ | 
| continue;␊ | 
| }␊ | 
| $ok = false; // This ensures an all or nothing ok.␊ | 
| }␊ | 
| if (!$ok) {␊ | 
| throw new Pluf_Form_Invalid(__('Sorry, we cannot find a user with this email address or login. Feel free to try again.'));␊ | 
| }␊ | 
| return $account;␊ | 
| }␊ | 
| ␊ | 
|  | 
| $sql = new Pluf_SQL('email=%s OR login=%s',␊ | 
| array($account, $account));␊ | 
| $users = Pluf::factory('Pluf_User')->getList(array('filter'=>$sql->gen()));␊ | 
| ␊ | 
| $return_url = '';␊ | 
| foreach ($users as $user) {␊ | 
| $tmpl = new Pluf_Template('idf/user/passrecovery-email.txt');␊ | 
| $cr = new Pluf_Crypt(md5(Pluf::f('secret_key')));␊ | 
| $code = trim($cr->encrypt($user->email.':'.$user->id.':'.time()), ␊ | 
| '~');␊ | 
| $code = substr(md5(Pluf::f('secret_key').$code), 0, 2).$code;␊ | 
| $url = Pluf::f('url_base').Pluf_HTTP_URL_urlForView('IDF_Views::passwordRecovery', array($code), array(), false);␊ | 
| $urlic = Pluf::f('url_base').Pluf_HTTP_URL_urlForView('IDF_Views::passwordRecoveryInputCode', array(), array(), false);␊ | 
| $context = new Pluf_Template_Context(array('url' => Pluf_Template::markSafe($url),␊ | 
| 'urlik' => Pluf_Template::markSafe($urlic),␊ | 
| 'user' => Pluf_Template::markSafe($user),␊ | 
| 'key' => Pluf_Template::markSafe($code)));␊ | 
| $email = new Pluf_Mail(Pluf::f('from_email'), $user->email,␊ | 
| __('Password Recovery - InDefero'));␊ | 
| $email->setReturnPath(Pluf::f('bounce_email', Pluf::f('from_email')));␊ | 
| $email->addTextMessage($tmpl->render($context));␊ | 
| $email->sendMail();␊ | 
| if ($user->active) {␊ | 
| $return_url = Pluf_HTTP_URL_urlForView('IDF_Views::passwordRecoveryInputCode');␊ | 
| $tmpl = new Pluf_Template('idf/user/passrecovery-email.txt');␊ | 
| $cr = new Pluf_Crypt(md5(Pluf::f('secret_key')));␊ | 
| $code = trim($cr->encrypt($user->email.':'.$user->id.':'.time()), ␊ | 
| '~');␊ | 
| $code = substr(md5(Pluf::f('secret_key').$code), 0, 2).$code;␊ | 
| $url = Pluf::f('url_base').Pluf_HTTP_URL_urlForView('IDF_Views::passwordRecovery', array($code), array(), false);␊ | 
| $urlic = Pluf::f('url_base').Pluf_HTTP_URL_urlForView('IDF_Views::passwordRecoveryInputCode', array(), array(), false);␊ | 
| $context = new Pluf_Template_Context(␊ | 
| array('url' => Pluf_Template::markSafe($url),␊ | 
| 'urlik' => Pluf_Template::markSafe($urlic),␊ | 
| 'user' => Pluf_Template::markSafe($user),␊ | 
| 'key' => Pluf_Template::markSafe($code)));␊ | 
| $email = new Pluf_Mail(Pluf::f('from_email'), $user->email,␊ | 
| __('Password Recovery - InDefero'));␊ | 
| $email->setReturnPath(Pluf::f('bounce_email', Pluf::f('from_email')));␊ | 
| $email->addTextMessage($tmpl->render($context));␊ | 
| $email->sendMail();␊ | 
| }␊ | 
| if (!$user->active and $user->first_name == '---') {␊ | 
| $return_url = Pluf_HTTP_URL_urlForView('IDF_Views::registerInputKey');␊ | 
| IDF_Form_Register::sendVerificationEmail($user);␊ | 
| }␊ | 
| }␊ | 
| return $return_url;␊ | 
| }␊ | 
| }␊ |