| 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;␊ |
| }␊ |
| }␊ |