function before_parse() { if (empty($this->params['short'])) { // вызвано не возле короткой формы логина, а в теле страницы // процедура изменения пароля if (!empty($_GET['k']) && isset($_POST['newpass']) && isset($_POST['accpass'])) { $sql = 'sql:user?u_passre=\'' . $_GET['k'] . '\' $shrink=yes auto_query=no'; $res = $GLOBALS[CM]->run($sql); if ($res) { if (empty($_POST['newpass']) || $_POST['newpass'] != $_POST['accpass']) { $this->pg = str_replace('<!--err:changepass-->', 'Пароли не совпадают', $this->pg); return false; // пусто или не совпадает } else { $GLOBALS[CM]->run($sql, 'update', array('u_passre' => '', 'u_pwd' => $_POST['newpass'])); $this->pg = $this->tpl['changed']; return true; // пароль изменен } } } } else { // вызвано возле формы логина кнопкой "напомнить" if (empty($_POST['passremail'])) { $this->pg = str_replace('<!--err:passremail-->', '', $this->pg); // если его не зачищать, то ява-скрипт отобразит блок, чтобы показать результат } else { // проверить наличие данного емыла в базе $sql = 'sql:user?u_email=\'' . $_POST['passremail'] . '\' $shrink=yes auto_query=no'; $res = $GLOBALS[CM]->run($sql); if (!$res) { $this->pg = str_replace('<!--err:passremail-->', 'Пользователь с таким e-mail не найден.', $this->pg); return false; // емыл не найден } elseif (!empty($res['u_lock']) && $res['u_lock'] != '') { $this->pg = str_replace('<!--err:passremail-->', 'Пользователь заблокирован', $this->pg); return false; // акк заблокирован } // создать секретный код для беспарольного входа и отправить его на емыл юзера if (empty($res['u_passre'])) { $res['u_passre'] = substr(uniqid(mt_rand()), 0, 24); $GLOBALS[CM]->run($sql, 'update', array('u_passre' => $res['u_passre'])); } $ml = new mailer(array('tpl' => $this->params['email_tpl'])); $ml->send($res, $res['u_email']); $this->pg = str_replace('<!--err:passremail-->', 'Письмо отправлено', $this->pg); return true; // пароль отправлен } } $tmp = new iControl(array('pg' => $this->pg)); $tmp->get_maked(); $this->pg = $tmp->pg; unset($tmp); //parent::onValid(); }
function init() { if (AJAX) { $this->ajax_process(); parent::init(); return true; } parent::init(false); if (!empty($this->ctrl['unlock'])) { //Выбираю пользователя $rs = $GLOBALS[CM]->run('sql:user?u_lock=\'' . $this->ctrl['unlock'] . '\'$shrink=yes auto_query=no'); unset($rs['u_pwd']); if ($rs && $rs2) { $GLOBALS[CM]->run('sql:user?u_id=\'' . $rs['u_id'] . '\'$auto_query=no', 'update', array('u_lock' => '', 'u_last_login' => date('Y-m-d H:i:s'))); $_SESSION['Jlib_auth'] = array_merge($rs, $rs2, array('site_auth' => 1, 'admin_auth' => 0)); $this->pg = $this->tpl['reg_unlocked']; } else { $this->pg = $this->tpl['reg_stilllocked']; } $tmp = new iControl(array('pg' => $this->pg)); $tmp->get_maked(); $this->pg = $tmp->pg; unset($tmp); $this->parsed = true; $this->maked = true; return true; } //Инициализация хранилища визарда $this->wizard_init(); if (!empty($GLOBALS['Jlib_page_extra'][0]) && $GLOBALS['Jlib_page_extra'][0] == 'ulogin') { $this->ulogin_reg(); } //Получить информацию о шагах //Определить шаг if (!empty($this->ctrl[$this->params['ctrl_steps']])) { $this->cur_step = $this->ctrl[$this->params['ctrl_steps']]; } else { $this->cur_step = array_shift(array_keys($this->params['steps'])); } //Оформить шаг $this->show_step(); $this->load_params_reg(); // инициализация $this->user = 0; if ($this->user && $this->saller) { // режим update } else { // режим insert $this->form_params['cs_mode'] = 'insert'; } parent::init(true); $this->inited = true; }