/** * Активирует аккаунт юзера по $code, возвращает логин и пароль пользователя. * * @param string $code Код активации * @param string $login Возвращает логин пользователя * @param string $pass Возвращает пароль пользователя * * @return integer 1 - активация прошла успешно, 0 - активация не прошла */ public function Activate($code, &$login, &$pass) { define('IS_USER_ACTION', 1); /** * Подлючаем файл для работы с пользователем. */ require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/wizard_registration.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_employer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_freelancer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; global $DB; $sql = 'SELECT user_id, login, passwd FROM activate_code LEFT JOIN users ON user_id=uid WHERE code = ?'; $res = $DB->query($sql, $code); list($fid, $login, $pass) = pg_fetch_row($res); if ($fid) { $usr = new users(); $usr->active = 1; $usr->Update($fid, $res); $usr->GetUserByUID($fid); // #0017513 if ($usr->role[0] == 1) { $wiz_user = wizard::isUserWizard($fid, step_employer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_EMP_ID); } else { $wiz_user = wizard::isUserWizard($fid, step_freelancer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_FRL_ID); } $out = 1; $this->Delete($fid); if ($wiz_user['id'] > 0) { $mail = new smail(); if ($usr->role[0] == 1) { $mail->employerQuickStartGuide($fid); } else { $mail->freelancerQuickStartGuide($fid); } step_wizard::setStatusStepAdmin(step_wizard::STATUS_COMPLITED, $fid, $wiz_user['id']); $role = $usr->role[0] == 1 ? wizard_registration::REG_EMP_ID : wizard_registration::REG_FRL_ID; login($login, $pass, 0, true); header('Location: /registration/activated.php?role=' . $role); exit; } } else { $out = 0; } return $out; }
/** * Активирует новый e-mail юзера по коду активации * * @param string $code Код активации * @return integer 1 - активировало, 0 - не активировало */ function Activate($code) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; global $DB; $sql = "SELECT user_id, email FROM activate_mail WHERE code = ?"; $res = $DB->query($sql, $code); list($fid, $email) = pg_fetch_row($res); if ($fid) { $usr = new users(); $usr->email = $email; $usr->Update($fid, $res); $usr->SaveChangeEmailLog($fid, $email); $out = 1; $this->Delete($fid); } else { $out = 0; } return $out; }
/** * Проверка статуса верификации и обновление фио. * * @todo: обновление фио подвопросом так как при верификации банковсой карточкой тоже это происходит * * @param type $fname * @param type $lname * @param type $type * * @return \xajaxResponse */ function checkIsVerify($fname, $lname, $type) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $objResponse = new xajaxResponse(); $uid = get_uid(false); if ($uid <= 0) { return $objResponse; } $user = new users(); $user->GetUserByUID($uid); if ($user->uid > 0 && $user->IsVerified()) { $update_fio = false; $fname = change_q(substr(trim($fname), 0, 21)); if ($fname) { $user->uname = $fname; $update_fio = true; } $lname = change_q(substr(trim($lname), 0, 21)); if ($lname) { $user->usurname = $lname; $update_fio = true; } if ($update_fio) { $user->Update($user->uid, $err); } $_SESSION['is_verify'] = 't'; unset($_SESSION['quick_ver_fname']); unset($_SESSION['quick_ver_lname']); $objResponse->script("window.location = '?vok=1" . ($type == 'card' ? '&vuse=card' : '') . "';"); } else { $error = session::getFlashMessages('verify_error'); $error = empty($error) ? Verification::ERROR_DEFAULT : $error; $objResponse->script("window.verification_popup.showError('{$error}');"); } return $objResponse; }
$pwd = strip_tags(stripslashes(trim($_POST['pwd']))); $pwd2 = strip_tags(stripslashes(trim($_POST['pwd2']))); if (!preg_match('/^[a-zA-Z\\d\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\_\\+\\-\\=\\;\\,\\.\\/\\?\\[\\]\\{\\}]+$/', $pwd)) { $error = 'Пароль содержит недопустимые символы.<br>' . 'Пожалуйста, используйте только латинские буквы, цифры<br>' . 'и следующие спецсимволы: !@#$%^&*()_+-=;,./?[]{}'; } elseif (strcmp($pwd, $pwd2)) { $error = 'Введенные пароли не совпадают'; } elseif (strlen($pwd) < 6) { $error = 'Слишком короткий пароль (минимум — 6 символов)'; } elseif (strlen($pwd) > 24) { $error = 'Слишком длинный пароль (максимум — 24 символа)'; } if (!$error && $codes->user_id) { require_once ABS_PATH . '/classes/users.php'; $user = new users(); $user->passwd = $pwd; $err = $user->Update($codes->user_id, $res); $u_id = $codes->user_id; $codes->DelByUT($codes->user_id, 1); if (!$err) { $info = 'Изменения внесены'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $smail->ChangePwd($codes->user_id, $pwd); // Пишем в лог смены паролей require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/restorepass_log.php'; restorepass_log::SaveToLog($codes->user_id, getRemoteIP(), 1); $pwd = users::hashPasswd(trim(stripslashes($pwd))); $user->getUserByUID($u_id); login($user->login, $pwd); session_write_close(); header('Location: /');
} } else { if ($users->is_team == 't') { $error_login = "******" . $users->login . " уже находится в команде Free-lance.ru"; } else { $error_login = "******" . $_POST['login'] . " не существует"; } } break; case "delteam": $users->GetUser($_POST['login']); if ($users->uid && $users->is_team == 't') { $users->is_team = 'f'; $user_update = new users(); $user_update->is_team = 'f'; $error = $user_update->Update($users->uid, $error); if ($error) { $error_login = $error; } } else { if ($users->is_team == 'f') { $error_login = "******" . $_POST['login'] . " нет в команде Free-lance.ru"; } else { $error_login = "******" . $_POST['login'] . " не существует"; } } break; } } $users_team = $users->GetUsers("is_team = 't'", "login ASC"); ?>
/** * Отключаем/включаем верификацию пользователям. * * @param int $uid ИД пользователя * @param bool $type вкючить/выключить * * @return \xajaxResponse */ function setVerification($uid = 0, $type = false) { session_start(); $objResponse = new xajaxResponse(); if (hasPermissions('users')) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $users = new users(); $users->is_verify = $type; $sError = $users->Update($uid, $res); if ($type == false) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Verification.php'; Verification::decrementStat($uid); } if (empty($sError)) { $text = $type ? 'Снять верификацию' : 'Дать верификацию'; $html = '<a href="javascript:void(0);" onclick="user_search.setVerification(' . $uid . ', ' . ($type ? 'false' : 'true') . ');" class="lnk-dot-666" title="' . $text . '"><b>' . $text . '</b></a>'; $objResponse->assign("verify{$uid}", 'innerHTML', $html); if ($type) { $objResponse->script("\$\$('#user{$uid} a.user-name').grab(new Element('span', {class:'b-icon b-icon__ver b-icon_valign_middle'}), 'before')"); } else { $objResponse->script("\$\$('#user{$uid} .b-icon__ver').dispose();"); } $objResponse->alert($type ? 'Верификация дана' : 'Верификация снята'); } else { $objResponse->alert('Ошибка сохранения данных'); } } return $objResponse; }
$error_flag = 1; $alert[1] = "Поле заполнено некорректно"; } if ($surname && !preg_match("/^[-a-zA-Zа-яёА-ЯЁ]+\$/", $surname)) { $error_flag = 1; $alert[2] = "Поле заполнено некорректно"; } if (!$error_flag) { if ($name) { $userObj->uname = $name; } if ($surname) { $userObj->usurname = $surname; } if ($name || $surname || $userpic) { $userObj->Update($userID, $res); } $info = "Изменения внесены"; } // делаем так как будто сохранение было не из сплэша а из обычной формы в профиле пользователя $action = 'main_change'; $userObj->GetUserByUID($userID); $email = $userObj->email; $pname = $userObj->pname; $promo_block_hide = (bool) $_COOKIE['nfastpromo_open']; $direct_links = $_SESSION['direct_external_links']; break; } $body_class = $is_pro ? 'p-pro' : 'p-nopro'; $header = $rpath . "header.php"; $footer = $rpath . "footer.html";
/** * Редактирует данные о подписках пользователя. * @param integer $fid uid пользователя * @param boolean $newmsgs уведомления о новых сообщениях в "Мои контакты" * @param boolean $vacan уведомлять о новых проектах? * @param boolean $comments комментарии к сообщениям/комментариям в блогах * @param boolean $opin уведомления о добавлении/удалении отзыва * @param boolean $prcomments комментарии к сообщениям/комментариям в проектах * @param boolean $commune_subscr уведомления о новых действиях в сообществах * @param boolean $commune_top_subscr уведомления о новых темах в сообществах * @param boolean $adm_subscr новости от команды Free-lance.ru * @param boolean $content_subscr уведомления в конкурсах * @param boolean $defilecomments комментарии к работе/комментариям в Дефиле * @param boolean $articlescomments комментарии в разделе "Статьи/Интервью" * @param boolean $massending платная рассылка * @param integer $shop комментарии к товару в магазине * @param integer $daily_news Уведомления о платных рекомендациях * @param boolean $vacan_use принимать во внимание сохраненные подписки о новых проектах * @param boolean $payment Уведомления о платежах * @return string возможная ошибка */ function UpdateSubscr($fid, $newmsgs, $vacan, $comments, $opin, $prcomments, $commune_subscr, $commune_top_subscr, $adm_subscr, $contest_subscr, $team, $defilecomments, $articlescomments, $massending, $shop, $daily_news, $vacan_use = true, $payment) { $this->mailer = $vacan_use ? 1 : 0; $this->mailer_str = ''; $cats = array(); foreach ($vacan as $val) { $cats[] = 'c' . (int) $val['category_id'] . ($val['subcategory_id'] ? 's' . (int) $val['subcategory_id'] : ''); } $this->mailer_str = implode(':', $cats); //@todo: сохраняем состояние подписки даже если не выбрана ниодна категория //if(!$this->mailer_str) { // $this->mailer = 0; //} if ($this->mailer) { $proj = 1; } else { $proj = 0; } $this->subscr = (int) $newmsgs . $proj . (int) $comments . (int) $opin . (int) $prcomments . (int) $commune_subscr . (int) $commune_top_subscr . (int) $adm_subscr . (int) $contest_subscr . (int) $team . (int) $defilecomments . (int) $articlescomments . (int) $massending . (int) $shop . (int) $daily_news . (int) $payment; while (strlen($this->subscr) < $GLOBALS['subscrsize']) { $this->subscr .= '0'; } $error = parent::Update($fid, $res); return $error; }
/** * Выход пользователя из системы * * @param boolean $save_cookie Удалять сохраненные кукисы или нет */ function logout($save_cookie = FALSE) { if (!$save_cookie) { $sql = "UPDATE users SET solt=NULL WHERE login='******'login'] . "'"; pg_query(DBConnect(), $sql); if (is_emp()) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; tmp_project::clearTmpAll($_SESSION['login']); } } $GLOBALS['session']->logout($_SESSION['login']); if ($_SESSION['uid']) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/activate_code.php"; $user = new users(); $active = $user->GetField($_SESSION['uid'], $err, 'active'); $activate_code = activate_code::getActivateCodeByUid($_SESSION['uid']); if ($activate_code != '' && ($active == true || $active == 't')) { $user->active = false; } $user->last_time = 'now'; $user->Update($_SESSION['uid'], $res); } //Переносим хеши ссылок на уже зафиксированные местки для юзера при выходе/входе $_ga_stat_url_hash = isset($_SESSION['ga_stat_url_hash']) ? $_SESSION['ga_stat_url_hash'] : null; session_unset(); //Воссанавливаем значение хешей ссылок if ($_ga_stat_url_hash) { $_SESSION['ga_stat_url_hash'] = $_ga_stat_url_hash; } if (!$save_cookie) { uncookie(); } }
/** * Изменение логина юзера. Перед вызовом необходимо проинициализировать члены класса * old_login, new_login, save_old. * * @param string $error возвращает сообщение об ошибке * * @return 0 * * @see classes/db_access#Add($error, $return_id) */ public function Add(&$error) { global $DB; require_once ABS_PATH . '/classes/users.php'; $user = new users(); $this->user_id = $user->GetUid($error, $this->old_login); if (!$this->user_id) { $error = 'Пользователь не найден!'; return 0; } $new_user = $user->GetUid($error, $this->new_login); if ($new_user) { $error = 'Логин занят!'; return 0; } if ($this->save_old) { require_once ABS_PATH . '/classes/users_old.php'; require_once ABS_PATH . '/classes/account.php'; $account = new account(); $tr_id = $account->start_transaction($this->user_id); $id = 0; $error = $account->Buy($id, $tr_id, self::OP_CODE, $this->user_id, 'Изменеие логина', 'Изменение логина'); if ($error) { return 0; } $this->operation_id = $id; $users_old = new users_old(); $users_old->Add($this->old_login); } if (!$error) { $aData = array('user_id' => '', 'old_login' => '', 'new_login' => '', 'save_old' => '', 'operation_id' => ''); foreach ($aData as $key => $val) { $aData[$key] = $this->{$key}; } $CFile = new CFile(); if (!$CFile->MoveDir($this->new_login, $this->old_login)) { $error = "Директория не создана! {$this->new_login}, {$this->old_login}"; if ($this->operation_id) { $account->Del($this->user_id, $this->operation_id); } } else { $DB->insert('login_change', $aData); $user->login = $this->new_login; $user->Update($this->user_id, $res); } } return 0; }
/** * Оплата услуг. * * @param array $order Данные по оплачивоемой услуге * * @return bool */ public function paymentOrder($order) { $_op_code = self::getOpCodeByDiscount($order['op_code']); switch ($_op_code) { // Верификация банковской картой через ЯКассу case 191: $error = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment']); if (!$error) { $success = true; //Устанавливаем флаг верификации require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Verification.php'; $verify = new Verification(); $verify->cardYK($this->user['uid']); //Обновляем сессию //@todo: эта штука не работает! $session = new session(); $session->UpdateVerification($this->user['login']); //Обновляем имя и фамилию $fio = mb_unserialize($order['option']); if (isset($fio['uname']) && isset($fio['usurname'])) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $u = new users(); $u->GetUserByUID($this->user['uid']); $u->uname = $fio['uname']; $u->usurname = $fio['usurname']; $u->Update($this->user['uid'], $db_errors); } //Назначаем возврат require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing/BillPayback.php'; BillPayback::getInstance()->requestPayback($order['id'], $this->paymentSysParams['invoiceId'], $order['ammount']); } break; //------------------------------------------------------------------ // Верификация через FF //------------------------------------------------------------------ // Верификация через FF case 117: require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Verification.php'; $error = $this->account->Buy($account_operation_id, $this->transaction, Verification::FF_OP_CODE, $this->user['uid'], $order['comment'], $order['descr'], 1, 0); $verify = new Verification(); $verify->data = unserialize($order['option']); $this->_db->query('UPDATE verify_ff SET is_pro = ?, bill_id = ? WHERE id = ?', false, $account_operation_id, $order['src_id']); if ($verify->verify($this->user['uid'])) { $this->_db->query('UPDATE verify_ff SET result = TRUE WHERE id = ?', $order['src_id']); $success = true; } break; //------------------------------------------------------------------ // Конкурс //------------------------------------------------------------------ // Конкурс case 9: case 106: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case 128: case 129: case 130: // Платный конкурс // Платный конкурс case 86: // Платный проект (вакансия, устаревший опкод) // Платный проект (вакансия, устаревший опкод) case 53: //Покупка вакансии //Покупка вакансии case 113: //пользователь не PRO //пользователь не PRO case 192: //пользователь PRO //Платные услуги проектов //пользователь PRO //Платные услуги проектов case 138: case 139: case 140: case 141: require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/uploader/uploader.php'; // Публикуем платный проект if ($order['parent_table'] == 'draft_projects') { $draft_id = $order['parent_id']; $this->project_key = md5(uniqid($this->user['uid'])); $tmpPrj = new tmp_project($this->project_key); $tmpPrj->initFromDraft($draft_id, $this->user['uid']); $tproject = $tmpPrj->getProject(); $isMovedToVacancy = false; // Нет конкурса значит его уже опубликовали и оплатили, оставляем деньги на личном счете if ((int) $tproject['prj_id'] <= 0) { // Не тратим деньги на такой конкурс if ($tmpPrj->isKonkurs() && strtotime($tproject['end_date']) <= time()) { $success = true; break; } $error = $tmpPrj->saveProject($this->user['uid'], $proj, $this->ordersPromoCodes); $success = !$error; // Отработали все по конкурсу удаляем его чтобы не мешал (после отработки всех операций) $this->setAfterQuery($this->_db->parse('DELETE FROM draft_projects WHERE id = ? AND uid = ?', $draft_id, $this->user['uid']), $order['parent_id']); $sql = 'UPDATE draft_projects SET prj_id = ? WHERE id = ? AND uid = ?'; $this->_db->query($sql, $proj['id'], $draft_id, $this->user['uid']); } else { $success = true; } } elseif ($order['parent_table'] == 'projects') { $prj_id = $order['parent_id']; $this->project_key = md5(uniqid($this->user['uid'])); $tmpPrj = new tmp_project($this->project_key); $tmpPrj->setInitFromDB($prj_id); $tproject = $tmpPrj->getProject(); $isMovedToVacancy = $tmpPrj->isStateMovedToVacancy(); // Если закрыт или заблокирован не тратим деньги if ($tproject['closed'] == 't' || $tproject['is_blocked'] == 't') { $success = true; break; } switch ($order['option']) { case 'top': $tmpPrj->setAddedTopDays($order['op_count']); break; case 'logo': $LogoFile = new CFile($order['src_id']); $tmpPrj->initLogo($LogoFile, $order['descr']); break; case 'urgent': $tmpPrj->setProjectField('urgent', 't'); break; case 'hide': $tmpPrj->setProjectField('hide', 't'); break; case 'office': $tmpPrj->setProjectField('old_state', $tproject['state']); $tmpPrj->setProjectField('state', projects::STATE_PUBLIC); //Если оплачивается не перемещенная вакансия //то работаем как обычно и подымаем вверх if ($tproject['state'] != projects::STATE_MOVED_TO_VACANCY) { $tmpPrj->setProjectField('post_now', true); } break; } $error = $tmpPrj->saveProject($this->user['uid'], $proj, $this->ordersPromoCodes); $success = !$error; if ($success) { if (isset($tmpPrj->account_operation_id) && $tmpPrj->account_operation_id > 0) { $account_operation_id = $tmpPrj->account_operation_id; } switch ($order['option']) { case 'office': if ($tproject['state'] == projects::STATE_MOVED_TO_VACANCY) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $smail->sendMovedToVacancySuccessPayed($tproject); require_once $_SERVER['DOCUMENT_ROOT'] . '/guest/models/GuestInviteModel.php'; $guestInviteModel = new GuestInviteModel(); $guestInviteModel->updateDatePublicBySrc($prj_id, array(GuestConst::TYPE_PROJECT, GuestConst::TYPE_VACANCY)); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/autoresponse.php'; $autoresponse = new autoresponse(); $autoresponse->reduceByProject($prj_id); } break; } } } //Сохраняем, чтобы показать попап юзеру $memBuff = new memBuff(); $memBuff->add('bill_ok_project_' . $this->user['uid'], $proj['id']); //Если это оплата вакансии или конкусра то предлагаем еще купить платные опции if (in_array($order['option'], array('office', 'contest')) && !$isMovedToVacancy) { $memBuff->add('bill_ok_project_payed_' . $this->user['uid'], true); } break; //------------------------------------------------------------------ // Платное место в карусели //------------------------------------------------------------------ // Платное место в карусели case 65: // На главной странице $catalog = 0; case 73: // В каталоге require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pay_place.php'; $payPlace = new pay_place(isset($catalog) ? $catalog : 1); $buyMain = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['comment'], $order['descr'], $order['op_count'], 0, $order['promo_code']); if ($buyMain === 0) { $options = unserialize($order['option']); if (isset($options['adHead'])) { //поддержка старого режима $success = $payPlace->addUser($this->user['uid'], $options['adHead'], $options['adText'], $options['adImg']); } else { $success = $payPlace->addUserRequest($this->user['uid'], $options); } } break; //------------------------------------------------------------------ // ПРО аккаунт фрилансеры //------------------------------------------------------------------ // ПРО аккаунт фрилансеры case 47: // Тестовый ПРО на 1 неделю if (payed::IsUserWasPro($this->user['uid'])) { return false; break; } case 15: // Про на 1 месяц (emp) // Про на 1 месяц (emp) case 48: // Про на 1 месяц (frl) // Про на 1 месяц (frl) case 118: // Про на 3 месяца (emp) // Про на 3 месяца (emp) case 49: // Про на 3 месяца (frl) // Про на 3 месяца (frl) case 119: // Про на 6 месяцeв (emp) // Про на 6 месяцeв (emp) case 50: // Про на 6 месяцев (frl) // Про на 6 месяцев (frl) case 120: // Про на 1 год (emp) // Про на 1 год (emp) case 51: // Про на 1 год (frl) // Про на 1 год (frl) case 132: // Про на 1 день (frl) // Про на 1 день (frl) case 131: // Про на 1 неделю (frl) // Про на 1 неделю (frl) case 163: // Тестовый ПРО на месяц // Тестовый ПРО на месяц case 164: // PROFI на 1 месяц require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php'; $payed = new payed(); $user = is_emp($this->user['role']) ? new employer() : new freelancer(); $success = $payed->SetOrderedTarif($this->user['uid'], $this->transaction, $order['op_count'], $order['comment'], $order['op_code'], $order['promo_code'], $error); if ($success) { if (isset($payed->account_operation_id) && $payed->account_operation_id > 0) { $account_operation_id = $payed->account_operation_id; } // Обновим сессию сразу! if (get_uid(false) == $this->user['uid']) { $_SESSION['pro_last'] = payed::ProLast($this->user['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['is_freezed'] ? false : $_SESSION['pro_last']['cnt']; if ($_SESSION['pro_last']['is_freezed']) { $_SESSION['payed_to'] = $_SESSION['pro_last']['cnt']; } } else { $membuff = new memBuff(); $membuff->set('is_changed_pro_' . $this->user['uid'], true); //Этот подход не работает //$session = new session(); //$session->UpdateProEndingDate($this->user['login']); } if ($order['auto'] == 't') { $user->setPROAutoProlong('on', $this->user['uid']); } else { $user->setPROAutoProlong('off', $this->user['uid']); } //Опубликовать перемещенные вакансии при покупке ПРО //@todo: Теперь вакансии для всех платные разница лишь в цене для ПРО дешевле //поэтому отключаем публикацию после покупки ПРО //https://beta.free-lance.ru/mantis/view.php?id=28579 /* if (is_emp($this->user['role'])) { require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"); $project = new projects(); $project->publishedMovedToVacancy($this->user); }*/ //Чистим кеш каталога PROFI пользователей if ($order['op_code'] == 164) { freelancer::clearCacheProfiCatalog(); } } break; //------------------------------------------------------------------ //------------------------------------------------------------------ case 45: // рассылка по каталогу require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/masssending.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; $masssending = masssending::Get($order['parent_id']); $masssending = $masssending[0]; $error = $this->account->Buy($account_operation_id, $this->transaction, masssending::OPER_CODE, $this->user['uid'], $order['descr'], $order['comment'], $masssending['pre_sum'], 0, $order['promo_code']); if ($error) { break; } masssending::UpdateAcOpID($order['parent_id'], $account_operation_id); $success = (bool) messages::Masssending($masssending['user_id'], $masssending['id'], $masssending['msgtext'], $masssending['posted_time']); break; //------------------------------------------------------------------ /* * Погашение задолженности */ //------------------------------------------------------------------ /* * Погашение задолженности */ case 135: $error = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], 1, 1, 0, 0, $order['ammount']); if (!$error) { $success = true; //Начисление погашенной комиссии и удаление блокировки ТУ require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceOrderModel.php'; TServiceOrderModel::model()->clearDebt($this->user['uid']); } break; //------------------------------------------------------------------- /* * Операции над бизнес логикой резерва средств * при успешном зачислении денег */ //------------------------------------------------------------------- /* * Операции над бизнес логикой резерва средств * при успешном зачислении денег */ case 136: $success = false; $data = @$this->list_service[$order['id']]['info']; if (!$data) { break; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reserves/ReservesModelFactory.php'; $reserveInstance = ReservesModelFactory::getInstance($data['type']); //Уже была зарезервирована или нет нужный параметров то //ничего не покупаем деньги остаются на ЛС if (!$reserveInstance || !isset($this->paymentSysParams['invoiceId'])) { break; } //Невозможно сменить статус сделки выходим $reserveInstance->setReserveData($data); if (!$reserveInstance->allowChangeStatus(ReservesModel::STATUS_RESERVE)) { break; } $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], $order['ammount']); if ($ret === 0) { //Успешно купили услугу и теперь меняем статус резерва $data['invoice_id'] = $this->paymentSysParams['invoiceId']; $data['acc_op_id'] = $account_operation_id; $reserveInstance->setReserveData($data); $success = $reserveInstance->changeStatus(ReservesModel::STATUS_RESERVE); } break; //------------------------------------------------------------------ /* * Завершение покупки автоответов. */ //------------------------------------------------------------------ /* * Завершение покупки автоответов. */ case 137: $success = false; $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], $order['ammount'], 1, $order['promo_code']); if ($ret === 0 && isset($order['parent_id']) && intval($order['parent_id'])) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/autoresponse.php'; autoresponse::$db = $GLOBALS['DB']; // Активация покупки услуги автоответа if ($autoresponse = autoresponse::get($order['parent_id'])) { $autoresponse->activate(); $success = true; } } break; //------------------------------------------------------------------ // Закрепление в каталоге фрилансеров //------------------------------------------------------------------ // Закрепление в каталоге фрилансеров case 142: // В корневом разделе // В корневом разделе case 143: // В разделе $is_spec = false; case 144: // В подразделе if (!isset($is_spec)) { $is_spec = true; } $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php'; $freelancer_binds = new freelancer_binds(); $freelancer_binds->prepare($this->user['uid'], $order['src_id'], $is_spec, $order['op_count']); $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], $freelancer_binds->bind_info['comment'], $order['ammount'], 1, $order['promo_code']); if ($ret === 0) { $success = $freelancer_binds->create(); } break; //------------------------------------------------------------------ // Продление закрепления в каталоге фрилансеров //------------------------------------------------------------------ // Продление закрепления в каталоге фрилансеров case 148: // В корневом разделе // В корневом разделе case 149: // В разделе $is_spec = false; case 150: // В подразделе if (!isset($is_spec)) { $is_spec = true; } $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php'; $freelancer_binds = new freelancer_binds(); $bind_id = $freelancer_binds->isUserBinded($this->user['uid'], $order['src_id'], $is_spec); $ret = true; if ($bind_id) { $freelancer_binds->getProlongInfo($this->user['uid'], $order['src_id'], $is_spec, $order['op_count']); $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], $freelancer_binds->bind_info['comment'], $order['ammount']); } if ($ret === 0) { $success = $freelancer_binds->prolong($bind_id, $order['op_count'], $order['src_id'], $is_spec); } break; //------------------------------------------------------------------ // Поднятие закрепления в каталоге фрилансеров //------------------------------------------------------------------ // Поднятие закрепления в каталоге фрилансеров case 151: // В корневом разделе // В корневом разделе case 152: // В разделе $is_spec = false; case 153: // В подразделе // В подразделе case 194: //Оплата из буфера if (!isset($is_spec)) { $is_spec = $order['src_id'] > 0; } $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php'; $freelancer_binds = new freelancer_binds(); $bind_id = $freelancer_binds->isUserBinded($this->user['uid'], $order['src_id'], $is_spec); if ($bind_id) { $freelancer_binds->getUpInfo($this->user['uid'], $order['src_id'], $is_spec); $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], '', $order['ammount']); if ($ret === 0) { $success = $freelancer_binds->up($bind_id, $order['src_id'], $is_spec); } } break; //------------------------------------------------------------------ // Закрепление/продление в каталоге услуг //------------------------------------------------------------------ // Закрепление/продление в каталоге услуг case 155: // В лендинге // В лендинге case 156: // В корневом разделе // В корневом разделе case 157: // В разделе // В разделе case 158: // В подразделе $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices_binds.php'; $tservices_binds = new tservices_binds(tservices_binds::KIND_LANDING); $tservices_binds->setKindByOpCode($_op_code); $option = unserialize($order['option']); $tservice_id = isset($option['tservice_id']) ? $option['tservice_id'] : $order['option']; $is_prolong = isset($option['is_prolong']) ? $option['is_prolong'] : false; $tservices_binds->prepare($this->user['uid'], $tservice_id, $order['src_id'], $order['op_count'], $is_prolong); if ($tservices_binds->bind_info) { $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $tservices_binds->bind_info['descr'], $tservices_binds->bind_info['comment'], $order['ammount']); if ($ret === 0) { $success = $is_prolong ? $tservices_binds->update() : $tservices_binds->create(); } } break; //------------------------------------------------------------------ // Поднятие закрепления в каталоге услуг //------------------------------------------------------------------ // Поднятие закрепления в каталоге услуг case 159: // В лендинге // В лендинге case 160: // В корневом разделе // В корневом разделе case 161: // В разделе // В разделе case 162: // В подразделе // В подразделе case 193: //Оплата из буфера $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices_binds.php'; $tservices_binds = new tservices_binds(tservices_binds::KIND_LANDING); $tservices_binds->setKindByOpCode($_op_code); $bind = $tservices_binds->getItemById($order['src_id']); $tservices_binds->makeUpInfo($bind); if ($tservices_binds->bind_info) { $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $tservices_binds->bind_info['descr'], $tservices_binds->bind_info['comment'], $order['ammount']); if ($ret === 0) { $success = $tservices_binds->update(); } } break; } if ($success) { $update = array('status' => self::STATUS_COMPLETE); $this->update($order['id'], $update); $memBuff = new memBuff(); $memBuff->delete('last_operation_' . $order['uid'] . '_' . $order['service']); //Если только что была оплата из яндекс.кассы if ($this->paymentSysParams['invoiceId']) { //Фиксируем ID транзакции $label = op_codes::getLabel($order['op_code']); if (isset($account_operation_id) && $account_operation_id > 0) { $label = (empty($label) ? '' : "{$label},") . "trans_{$account_operation_id}"; } // Посылаем данные о покупке в google analytics $this->_db->query("SELECT pgq.insert_event('statistic', 'service_payed', ?)", http_build_query(array('is_emp' => is_emp($this->user['role']), 'label' => $label, 'ammount' => floatval($order['ammount']), 'cid' => $this->getCid()))); } } return $success; }
header("Location: /siteadmin/rating/?result=success"); exit; } $error = "ќшибка."; break; case "setpwd": $login = __paramInit('string', NULL, 'login'); $pwd = stripslashes($_POST['pwd']); //__paramInit('string', NULL, 'pwd'); require_once ABS_PATH . "/classes/users.php"; require_once ABS_PATH . "/classes/codes.php"; $codes = new codes(); $user = new users(); $uid = $user->GetUid($error, $login); $user->passwd = $pwd; $err = $user->Update($uid, $res); $codes->DelByUT($uid, 1); // ѕишем в лог смены паролей require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/restorepass_log.php"; restorepass_log::SaveToLog($uid, getRemoteIP(), 4, get_uid(false)); header("Location: /siteadmin/rating/?result=success"); break; case "addserv": $login = __paramInit('string', NULL, 'login'); $days = __paramInit('string', NULL, 'days'); $type = __paramInit('int', NULL, 'type'); $where = __paramInit('int', NULL, 'where'); $fid = users::GetUid($err, $login); if ($fid && $login) { if (preg_match('#^[1-9]+[\\d]*$#', $days)) { require_once ABS_PATH . '/classes/account.php';
/** * Снимает бан с пользователя. * * @param int $uid UID пользователя. * @param int $ban_where какой бан снимаем: 0 - на всем сайте, 1 - в блогах. * @return string сообщение об ошибке или пестая строка. */ function unsetUserBan($uid, $ban_where) { $user = new users(); if ($ban_where) { // в блогах $GLOBALS['DB']->query('UPDATE users_ban SET "to" = NULL WHERE uid = ?i AND "where" = ?i', $uid, $ban_where); $sError = $GLOBALS['DB']->error; if (!$sError) { $user->ban_where = 0; $sError = $user->Update($uid, $res); } } else { // на всем сайте $user->is_banned = 0; $user->self_deleted = "FALSE"; // флаг АККАУНТ УДАЛЕН САМОСТОЯТЕЛЬНО $sError = $user->Update($uid, $res); if (!$sError) { users::approveSuspiciousUser($uid); } } $memBuff = new memBuff(); $memBuff->touchTag("msgsCnt"); // восстанавливаем данные о разблокированном пользователе в сессию его антиюзера /*require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/session_Memcached.php"); $user->GetUserByUID($uid); $antiUid = $user->anti_uid; $antiUser = new users; $antiUser->GetUserByUID($antiUid); $session = new session; $session->UpdateAntiuser($antiUser->login, $user);*/ return $sError; }
$users->ShowOne(); echo "<div class='container'>"; echo "<div class='col-md-9'> "; echo "<div> "; echo "<div><ol class='breadcrumb'><li><a href='/'>Home</a></li><li><a href='/master/users/'>Data Karyawan</a></li><li class='active'>Ubah Data Karyawan</li>"; echo "</ol"; echo "</div>"; echo "</div>"; if ($_POST) { include_once $_SERVER['DOCUMENT_ROOT'] . '/objects/users.php'; $users = new users($db); $users->username = $_POST['username']; $users->password = $_POST['password']; $users->userlevel = $_POST['userlevel']; // $users->isactive = $_POST['isactive']; if ($users->Update()) { echo "<div class='alert alert-success alert-dismissable'>"; echo "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button>"; echo "User berhasil diubah. <a href='/master/users/'>kembali</a>"; echo "</div>"; } else { echo "<div class='alert alert-danger alert-dismissable'>"; echo "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button>"; echo "User gagal diubah."; echo "</div>"; } } echo "<div class='row'>"; echo "<form id='form_reg' class='form-horizontal' action='' method='POST' role='form'>"; echo "<legend class='text-center'>Ubah Data Karyawan</legend>"; echo "<div class='form-group'>";