/** * Добавляет сообщение в обратную связь и отсылает письмо в необходимый отдел. * * @param int $uid uid пользователя, если он авторизован * @param string $login имя пользователя, если он не авторизован * @param string $email email пользователя, если он не авторизован * @param int $kind id отдела (1-общие вопросы, 2-ошибки на сайте, 3-финансовый вопрос, 4-лич.менеджер, 5-сбр) * @param string $msg сообщение * @param CFile $files прикрепленный файл * * @return string возможная ошибка */ public function Add($uid, $login, $email, $kind, $msg, $files, $additional = false) { global $DB; mt_srand(); $uc = md5(microtime(1) . mt_rand()); $uc = substr($uc, 0, 6) . substr($uc, 12, 6); $login = substr($login, 0, 64); $uid = intval($uid); $kind = intval($kind); if (intval($uid)) { $user = new users(); $user->GetUserByUID($uid); $login = $user->login; $email = $user->email; } $sql = 'INSERT INTO feedback ( uc, dept_id, user_id, user_login, email, question, request_time ) VALUES ( ?, ?, ?, ?, ?, ?, NOW() ) RETURNING id'; if (strtolower(mb_detect_encoding($login, array('utf-8'))) == 'utf-8') { $login = iconv('UTF-8', 'WINDOWS-1251//IGNORE', $login); } $sId = $DB->val($sql, $uc, $kind, $uid, $login, $email, $msg); if ($DB->error) { return 'Ошибка при отправке сообщения (db)'; } $mail = new smail(); if (count($files)) { foreach ($files as $attach) { $msg .= "\n\n=============================================\n"; $msg .= 'К этому письму прикреплен файл ' . WDCPREFIX . "/upload/about/feedback/{$attach->name}"; $msg .= "\n=============================================\n"; } } if ($kind == 2) { $msg .= "\n\n=============================================\n"; $msg .= 'Дополнительная информация: браузер: ' . (!empty($additional['browser']) ? $additional['browser'] : 'N/A') . ' ОС: ' . (!empty($additional['os']) ? $additional['os'] : 'N/A'); $msg .= "\n=============================================\n"; } $mail->FeedbackPost($login, $email, $kind, $msg, $uc, $sId); // Пишем статистику ображений в feedback $date = date('Y-m-d H:01:00'); $sql = 'SELECT date FROM stat_feedback WHERE date=? AND type=?'; $exist = $DB->val($sql, $date, $kind); if ($exist) { $sql = 'UPDATE stat_feedback SET count=count+1 WHERE date = ? AND type = ?'; } else { $sql = 'INSERT INTO stat_feedback(date,type,count) VALUES( ?, ?, 1 )'; } $DB->query($sql, $date, $kind); return ''; }
/** * Активирует аккаунт юзера по $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; }
function processForm($aFormValues) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/blogs.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; global $session; session_start(); get_uid(false); $objResponse = new xajaxResponse(); //$pname = change_q($_POST['name'], true); $msg = change_q($aFormValues['calltext'], false, 0); //$mail = trim($_POST['mail']); //$attach = $_FILES['attach']; $login = $_SESSION['login'] ? $_SESSION['login'] : '******'; $tn = 0; $f_name = ''; $uid = get_uid(false); $usr = new users($uid); $pname = $_SESSION['name'] . ' ' . $_SESSION['surname']; $mail = $usr->GetField($uid, $error, 'email'); if (!$msg) { $alert['msg'] = 'Поле заполнено некорректно'; $error_flag = 1; } if (!$error_flag) { $error .= blogs::NewThread($uid, 3, 0, $name, $msg, $f_name, getRemoteIP(), 1, $tn); } if (!$error && !$error_flag) { $sm = new smail(); $error .= $sm->NewFeedbackPost($pname, $msg, $mail, $_SESSION['login'], 4); $msg = $name = $mail = ''; $info_msg = '<br><center><table class="view_info" border="0" cellpadding="2" cellspacing="0"><tbody><tr class="n_qpr"><td height="20"><img src="/images/ico_ok.gif" alt="" border="0" height="18" width="19"></td><td nowrap>Ваше сообщение отправлено</td></tr></tbody></table>'; $objResponse->assign('calltext', 'value', ''); $objResponse->assign('cbok', 'innerHTML', $info_msg); //$objResponse->assign("submitButton","disabled",false); $objResponse->assign('submitButton', 'value', 'Отправить'); } return $objResponse; }
$error_flag = 1; $alert[3] = "Введенные пароли не совпадают"; } elseif (strlen($pwd) < 6) { $error_flag = 1; $alert[2] = "Слишком короткий пароль (минимум — 6 символов)"; } elseif (strlen($pwd) > 24) { $error_flag = 1; $alert[2] = "Слишком длинный пароль (максимум — 24 символа)"; } if (!$error_flag) { $frl = new users(); $alert[1] = $frl->UpdatePwd($uid, $oldpwd, $pwd, 0); if (!$alert[1] && !$error_flag) { $info = "Изменения внесены"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php"; $smail = new smail(); $smail->ChangePwd($uid, $pwd); // Пишем в лог смены паролей require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/restorepass_log.php"; restorepass_log::SaveToLog($uid, getRemoteIP(), 3); } } break; case "foto_change": $foto = new CFile($_FILES['foto']); $del = trim($_POST['del']); $frl = new freelancer(); if ($foto->name || $del == 1) { $error .= $frl->UpdateFoto($uid, $foto, $del); /*if (!$error) $info_msg = "Изменения внесены"; else $error = "Файл не удовлетворяет условиям загрузки";*/
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/commune.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/spam.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/attachedfiles.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/commune.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/articles.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users_suspicious_contacts.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/firstpage.php"; if ($_GET["bs"] == 1) { $_GET["debug"] = 1; $mail = new smail(); $h = 24; if ($_GET['h'] == 72) { $h = 72; } $mail->sendSbrReserveNotice($h); exit; } if ($_GET["activate"] == 1) { $_GET["debug"] = 1; $mail = new smail(); $mail->activateAccountNotice(); exit; } $master = new DB("master"); $master->query("UPDATE users SET last_time = last_time - '24 hours' :: interval WHERE email IN ('*****@*****.**', '*****@*****.**', '*****@*****.**');"); //$_GET["debug"] = 1; $mail = new smail(); $mail2 = new smail2(); $spam = new spam(); $mail2->NewProjForMissingMoreThan24h($users); die;
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/maintenance.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/search_parser.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/static_compress.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/blogs.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/commune.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/spam.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/commune.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/articles.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users_suspicious_contacts.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/FreelancerCatalog.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/annoy.php'; $mail = new smail(); $mail2 = new smail2(); $spam = new spam(); $H = (int) date('H'); /* * Чистим счетчик неправильного * ввода пароля для пользователя */ annoy::clearRepeatPassByCnt(); //$cfile = new CFile(); //$log->TRACE( $cfile->removeDeleted() ); if ($H == 0) { $log->TRACE($traffic_stat->calculateStatsIp()); } // Обновляем карту сайта // try {
/** * для имитация окончания PRO у пользователя * * @param $attempt текущая попытка продления */ function checkAutoProTest($login, $attempt = 1) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/billing.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/bar_notify.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/wallet/wallet.php"; global $DB; if ($attempt <= 0) { $attempt = 1; } $sql = "\n SELECT users.uid, a.id as acc_id, email, login, uname, usurname, subscr, role, substr(subscr::text,16,1) = '1' as bill_subscribe\n FROM users\n INNER JOIN account a ON a.uid = users.uid\n WHERE users.login = ?"; $user = $DB->row($sql, $login); if (!$user) { return; } $user['date_end'] = date('Y-m-d H:i:s', time()); $op_code = !is_emp($user['role']) ? 48 : 15; $price = !is_emp($user['role']) ? self::PRICE_FRL_PRO : self::PRICE_EMP_PRO; $billing = new billing($user['uid']); $queueID = $billing->create($op_code, 1); if (!$queueID) { return; } //Проталкиваем дальше автопродление для оплаты $billing->preparePayments($price, false, array($queueID)); $complete = billing::autoPayed($billing, $price); // @todo отключать ли автопродление или нет при второй попытке ( по идее на систему никак влиять не будет ) // Автопродление не будет куплено уведомляем об этом пользователя $barNotify = new bar_notify($user['uid']); $mail = new smail(); if ($complete) { $barNotify->addNotify('bill', '', 'Услуга успешно продлена.'); $mail->successAutoprolong(array('user' => $user, 'sum_cost' => $price), 'pro'); //$mail->sendAutoPROEnding(( $user['role'] == 'freelancer' ? 'FRL' : 'EMP' ), array($user)); } else { if ($attempt == 1) { $barNotify->addNotify('bill', '', 'Ошибка списания, услуга не продлена.'); $mail->attemptAutoprolong(array('user' => $user, 'sum_cost' => $price), 'pro'); } else { $barNotify->addNotify('bill', '', 'Ошибка списания, автопродление отключено.'); $mail->failAutoprolong(array('user' => $user, 'sum_cost' => $price), 'pro'); } } }
ini_set('memory_limit', '512M'); if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) { $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/'); } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"; //require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/config.php"); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/profiler.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php"; //------------------------------------------------------------------------------ $results = array(); $profiler = new profiler(); //------------------------------------------------------------------------------ $profiler->start('spam'); //------------------------------------------------------------------------------ $mail = new smail(); $results['cnt'] = $mail->sendFrlProjectsExec(); /* $list = projects::getFrlExec('2014-01-01',NULL,1,10); $res = DB::array_to_php($list[1]['projects_list']); print_r(explode('||', $res[0])); exit; */ //------------------------------------------------------------------------------ $profiler->stop('spam'); //------------------------------------------------------------------------------ $results += array('execution_time (sec)' => number_format($profiler->get('spam'), 5)); //------------------------------------------------------------------------------ array_walk($results, function (&$value, $key) { $value = sprintf('%s = %s' . PHP_EOL, $key, $value); });
public function registration($type_wizard = step_wizard_registration::TYPE_WIZARD_EMP) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/captcha.php"; $action = __paramInit('string', null, 'action'); if ($this->status == step_wizard::STATUS_CONFIRM) { if ($_SESSION['email'] == 0) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $user = new users(); $email = $user->GetField(wizard::getUserIDReg(), $error, "email"); $_SESSION['email'] = $email; } if ($action == registration::ACTION_SEND_MAIL) { $send = registration::actionSendMail(false); if ($send) { header("Location: /wizard/registration/"); exit; } } } $type_user = $type_wizard; if ($action == 'registration' && $this->status == 0) { $error = array(); if (!$_SESSION["regform_captcha_entered"]) { session_start(); $captchanum = __paramInit('string', null, 'captchanum'); $num = __paramInit('string', null, 'rndnum'); $_SESSION['w_reg_captcha_num'] = $captchanum; $captcha = new captcha($captchanum); if (!$captcha->checkNumber($num)) { $error['captcha'] = 'Неверный код. Попробуйте еще раз'; unset($_SESSION['w_reg_captcha_num']); } } if ($type_wizard == step_wizard_registration::TYPE_WIZARD_EMP) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/employer.php"; } else { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancer.php"; } $login = trim(__paramInit('string', null, 'login')); $email = trim(__paramInit('string', null, 'email')); $agree = trim(__paramInit('string', null, 'agree')); $phone = trim(__paramInit('string', null, 'phone')); $smscode = trim(__paramInit('string', null, 'smscode')); // пароль берем напрямую из $_POST, а то __paramInit режет спецсимволы (пароль хешируется - SQL инъекция невозможна) $passwd = $_POST['password']; if (!$agree) { $error['agree'] = 'Прочтите и согласитесь с правилами'; } if ($passwd == '') { $error['pwd'] = 'Введите пароль'; } if (!preg_match("/^[a-zA-Z0-9]+[-a-zA-Z0-9_]{2,}\$/", $login)) { $error['login'] = '******'; } if (in_array(strtolower($login), $GLOBALS['disallowUserLogins'])) { $error['login'] = '******'; } if (!is_email($email)) { $error['email'] = 'Поле заполнено некорректно'; } if ($smscode != $_SESSION["smsCode"]) { $error['smscode'] = 'Код не совпал'; } if ($phone != $_SESSION["reg_phone"]) { $error['phone'] = 'Вы вводили другой номер при запросе кода'; } $phone = preg_replace("#^\\+#", "", $_SESSION["reg_phone"]); if (empty($error['login'])) { $sql = "SELECT uid FROM users WHERE lower(login) = ?"; if ($this->_db->val($sql, strtolower($login))) { $error['login'] = '******'; } } if (empty($error['email']) && empty($error['captcha'])) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/temp_email.php"; if (temp_email::isTempEmail($email)) { $error['email'] = 'К сожалению, регистрация аккаунта на указанный адрес электронной почты невозможна. Пожалуйста, для регистрации воспользуйтесь почтовым адресом другого домена'; } else { $sql = "SELECT uid FROM users WHERE lower(email) = ?"; if ($this->_db->val($sql, strtolower($email))) { $error['email'] = 'Указанная вами электронная почта уже зарегистрирована. Авторизуйтесь на сайте или укажите другую электронную почту.'; } } } if (count($error) == 0) { if ($type_wizard == step_wizard_registration::TYPE_WIZARD_EMP) { $newuser = new employer(); } else { $newuser = new freelancer(); } $newuser->checked_name = false; if ($type_wizard == step_wizard_registration::TYPE_WIZARD_EMP) { $newuser->role = 1; } else { $newuser->role = 0; } $newuser->login = substr($login, 0, 15); $newuser->email = substr($email, 0, 64); $newuser->passwd = substr($passwd, 0, 24); $id = $newuser->Create($rerror, $error); if ($id && !$error) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/activate_code.php"; $this->parent->saveActionWizard($this, step_wizard::STATUS_CONFIRM); $this->parent->bindUserIDReg($id); unset($_SESSION['ref_uri']); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $bSuspect = users::isSuspiciousUser($id, $newuser->login, '', $newuser->uname, '', $newuser->usurname, ''); $sPasswd = $bSuspect ? $newuser->passwd : ''; // чтобы из админки можно было выслать $smail->NewUser $code = activate_code::Create($id, $newuser->login, $sPasswd, $error); if (!$bSuspect) { $_SESSION['suspect'] = false; // юзер не подозрительный - сразу отпавляем юзеру письмо с кодом активации $smail->NewUser($newuser->login, false, $code, $this->getWizardUserID(), $newuser->role ? 'emp' : 'frl'); } else { $_SESSION['suspect'] = true; // отправляем уведомление админу о том, что зарегистрировался подозрительный юзер // если админ его одобрит - то письмо с кодом активации уйдет из админки $smail->adminNewSuspectUser($newuser->login, $newuser->uname, $newuser->usurname); } //Записываем подтвержденный номер телефона в финансы require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sms_gate.php"; $phone = '+' . preg_replace("#^\\+#", "", $_SESSION["reg_phone"]); unset($_SESSION["regform_captcha_entered"]); sms_gate::saveSmsInfo($phone, $_SESSION["reg_sms_isnn"], $_SESSION["smsCode"], $_SESION["reg_sms_date_send"], $id); // стираем куку, чтобы показался блок "Вы успешно зарегистрировались" setcookie('master_auth', "", time() - 3600, '/'); // Серый список IP ---------------------- require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/gray_ip.php'; $aGrayList = gray_ip::getGrayListByRegIp(getRemoteIP()); if ($aGrayList) { // есть записи в списке первичных IP gray_ip::addSecondaryIp($id, $newuser->login, $newuser->role, $aGrayList); } //--------------------------------------- $_SESSION['email'] = $newuser->email; header("Location: /wizard/registration/"); exit; } } } elseif ($action == 'authorization') { $auth_error = $this->authorization($auth_login); } include $_SERVER['DOCUMENT_ROOT'] . "/wizard/registration/steps/tpl.step.reg.php"; }
function RemindByEmail($email, $rnd, $captchanum, $role) { global $DB; session_start(); $objResponse = new xajaxResponse(); $captcha = new captcha($captchanum); $error_type = ''; $show_role = false; if (!$captcha->checkNumber(trim($rnd))) { $error = 'Вы ввели неверную комбинацию символов. Попробуйте еще раз'; $error_type = 'captcha'; } else { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr_meta.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sms_gate_a1.php'; $email = trim(stripslashes($email)); if (preg_match("/^[-^!#\$%&'*+\\/=?`{|}~.\\w]+@[-a-zA-Z0-9]+(\\.[-a-zA-Z0-9]+)+\$/", $email)) { $error_type = 'email'; $ok_type = 'email'; // email require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $u = new users(); $u->GetUser($email, true, $email); if (!$u->uid) { $error = 'E-mail не зарегистрирован. Укажите корректный логин/телефон/e-mail.'; } else { if ($u->is_banned) { $error = 'Аккаунт с этим адресом заблокирован. К сожалению, вы не можете восстановить к нему доступ.'; } else { if ($u->isRemindByPhoneOnly($u->login)) { $ok_type = 'phone'; $reqv = sbr_meta::getUserReqvs($u->uid); $ureqv = $reqv[$reqv['form_type']]; $phone = $ureqv['mob_phone']; $passwd = users::ResetPasswordSMS($u->uid, $phone); $sms_gate = new sms_gate_a1($phone); $sms_gate->sendSMS(preg_replace('/-LOGIN-/', $u->login, $sms_gate->getTextMessage(sms_gate::TYPE_PASS, $passwd))); if ($sms_gate->getHTTPCode() == 200) { // OK ТЕЛЕФОН } else { $error = 'Ошибка отправки СМС на указанный номер'; } } else { $sm = new smail(); $sm->remind($u->email); } } } } elseif (preg_match("/^\\+\\d{1,}\$/", $email) || preg_match("/^\\d{1,}\$/", $email)) { $error_type = 'email'; $ok_type = 'phone'; // телефон if (!preg_match("/^\\+\\d{1,}\$/", $email)) { $email = '+' . $email; } $phone = $email; $safety_frl = (int) $role !== 2 ? sbr_meta::findSafetyPhone($phone, 'frl') : array(); $safety_emp = (int) $role !== 1 ? sbr_meta::findSafetyPhone($phone, 'emp') : array(); $safety = null; if (!empty($safety_emp) && !empty($safety_frl)) { $error = 'Номер телефона привязан к двум аккаунтам. Пожалуйста, укажите, к какому аккаунту вы хотите восстановить доступ.'; $show_role = true; } elseif (empty($safety_emp) && empty($safety_frl)) { $error = 'Номер не связан ни с одним аккаунтом. Укажите корректный логин/телефон/e-mail.'; } else { $safety = !empty($safety_frl) ? $safety_frl : $safety_emp; $u = new users(); $u->GetUserByUID($safety['uid']); if ($u->is_banned) { $error = 'Аккаунт с этим номером заблокирован. К сожалению, вы не можете восстановить к нему доступ.'; } else { $passwd = users::ResetPasswordSMS($safety['uid'], $phone); $sms_gate = new sms_gate_a1($phone); $sms_gate->sendSMS(preg_replace('/-LOGIN-/', $u->login, $sms_gate->getTextMessage(sms_gate::TYPE_PASS, $passwd))); if ($sms_gate->getHTTPCode() == 200) { // OK ТЕЛЕФОН } else { $error = 'Ошибка отправки СМС на указанный номер'; } } } } else { $error_type = 'email'; $ok_type = 'email'; // логин require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $login = $email; $u = new users(); $u->GetUser($login); if (!$u->uid) { $error = 'Логин не зарегистрирован. Укажите корректный логин/телефон/e-mail.'; } else { if ($u->is_banned) { $error = 'Аккаунт с этим логином заблокирован. К сожалению, вы не можете восстановить к нему доступ.'; } else { if ($u->isRemindByPhoneOnly($u->login)) { $ok_type = 'phone'; $error_type = 'email'; $reqv = sbr_meta::getUserReqvs($u->uid); $ureqv = $reqv[$reqv['form_type']]; $phone = $ureqv['mob_phone']; $passwd = users::ResetPasswordSMS($u->uid, $phone); $sms_gate = new sms_gate_a1($phone); $sms_gate->sendSMS(preg_replace('/-LOGIN-/', $u->login, $sms_gate->getTextMessage(sms_gate::TYPE_PASS, $passwd))); if ($sms_gate->getHTTPCode() == 200) { // OK ТЕЛЕФОН } else { $error = 'Ошибка отправки СМС на указанный номер'; } } else { $sm = new smail(); $sm->remind($u->email); } } } } } if ($error) { if (!$show_role) { $captcha->setNumber(); $objResponse->assign('image_rnd', 'src', '/image.php?num=' . $captchanum . '&t=' . time()); $objResponse->assign('remind_captcha', 'value', ''); } $objResponse->assign('remind_' . $error_type . '_error_txt', 'innerHTML', $error); $objResponse->script('$("remind_' . $error_type . '_error").removeClass("b-shadow_hide");'); $objResponse->assign('remind_email', 'value', $email); $objResponse->script("\$('remind_button_email').addClass('b-button_disabled')"); $objResponse->script('$("block_role").' . ($show_role ? 'remove' : 'add') . 'Class("b-layout_hide");'); } else { switch ($ok_type) { case 'phone': $objResponse->script("\$('email_remind').hide();"); $objResponse->script("\$('remind_ok_phone').show();"); $objResponse->script("\$('remind_ok_phone_txt').set('html', '" . preg_replace("/^(\\+\\d{1,})\\d{4}(\\d{2})\$/", '$1****$2', $phone) . "');"); break; case 'email': $objResponse->script("\$('email_remind').hide();"); $objResponse->script("\$('remind_ok_email').show();"); $a = explode('@', $u->email); $b = explode('.', $a[1]); $c = substr($b[0], 0, 1) . '****' . substr($b[0], strlen($b[0]) - 1, 1); if ($b[1]) { foreach ($b as $k => $v) { if ($k != 0) { $c .= '.' . $b[$k]; } } } $email = substr($a[0], 0, 2) . '****' . substr($a[0], strlen($a[0]) - 2, 2) . '@' . $c; $objResponse->script("\$('remind_ok_email_txt').set('html', '" . $email . "');"); break; } } return $objResponse; }
/** * ВРЕМЕННАЯ * * Акция Альфа-банк: первые 50 юзеров пополнившие на 1000 и более рублей счет, получают ПРО в подарок * * @param float $nSummR * @param integer $sUid */ function alphaBankGift($nSummR = 0, $sDate = '', $sUid = 0, $sLogin = '') { global $DB; if ($nSummR >= 1000 && $sDate < date('c', strtotime('2011-06-06'))) { // если сумма больше 1000 /* $nCount = $DB->val('SELECT COUNT(DISTINCT u.uid) FROM users u LEFT JOIN account a ON u.uid = a.uid LEFT JOIN account_operations o ON a.id = o.billing_id WHERE o.op_code = 89 AND o.trs_sum >= 1000'); if ( $nCount < 50 ) { // если юзер из числа первых 50 $nCount = $DB->val('SELECT COUNT(o.billing_id) FROM users u LEFT JOIN account a ON u.uid = a.uid LEFT JOIN account_operations o ON a.id = o.billing_id WHERE u.uid = ?i AND o.op_code = 89 AND o.trs_sum >= 1000', $sUid ); if ( $nCount == 1 ) { // если юзер еще не получал этот бонус (первое пополнение на 1000+) */ require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; $payed = new payed(); $bill_id = $gift_id = 0; $tr_id = $this->start_transaction(103); $payed->GiftOrderedTarif($bill_id, $gift_id, $sUid, 103, $tr_id, '1', '', 90); // уведомление о подарке require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $sm = new smail(); $sm->NewGift('admin', $sLogin, '', $gift_id); /* } } */ } }
/** * Пометить всех пользователей как не подозрительных. */ public function approveAllSuspiciousUsers() { set_time_limit(0); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $mRid = self::GetSuspiciousUsers(); if ($mRid) { while ($user = pg_fetch_assoc($mRid)) { self::approveSuspiciousUser($user['uid']); if ($user['activate'] == 't') { $aData = self::getSuspectActivationData($user['uid']); $smail->NewUser($aData['login'], false, $aData['code']); } } } }
ini_set('display_errors', 1); error_reporting(E_ALL ^ E_NOTICE); ini_set('max_execution_time', 0); ini_set('memory_limit', '512M'); if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) { $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/'); } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/config.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; //require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"); //require_once($_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php' ); //??? //require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/city.php"); //require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"); //------------------------------------------------------------------------------ $time_start = microtime(true); //------------------------------------------------------------------------------ $DB->query("\n UPDATE projects \n SET post_date = NOW() - interval '24 hours'\n WHERE post_date >= DATE_TRUNC('day', NOW() - interval '24 hours')\n"); $mail = new smail(); $cnt = $mail->NewProj2(); //------------------------------------------------------------------------------ $time_end = microtime(true); $execution_time = number_format($time_end - $time_start, 5); print_r('execution_time = ' . $execution_time . ' sec'); print_r(PHP_EOL); print_r('sended = ' . $cnt); print_r(PHP_EOL); exit; //------------------------------------------------------------------------------
<?php //TODO Файл нужен только для тестирования. Весь функционал отсюда делается в hourly.php // Хотя проблем его вызов не принесет ini_set('max_execution_time', 0); ini_set('memory_limit', '512M'); require_once 'classes/config.php'; require_once 'classes/log.php'; require_once 'classes/multi_log.php'; $log = new log('hourly_freelancer/' . SERVER . '-%d%m%Y[%H].log', 'w'); $log->writeln('------------ BEGIN hourly (start time: ' . date('d.m.Y H:i:s') . ') -----'); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $mail = new smail(); //За сутки до завершения срока действия закрепления $mail->remindFreelancerbindsProlong(); //После того, как закрепление опустилось ниже середины списка закреплений (и в списке больше одного закрепления) $mail->remindFreelancerbindsUp(); $log->writeln('------------ END hourly_freelancer (total time: ' . $log->getTotalTime() . ') ---------------');
<?php ini_set('max_execution_time', '0'); ini_set('memory_limit', '512M'); require_once '../classes/stdf.php'; require_once '../classes/smail.php'; $mail = new smail(); $count = $mail->InactiveUsers(); echo "{$count} users\n";
/** * Оплата услуг. * * @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; }
public function autoRegistation($data = array()) { $newuser = $this->fillData($data); //Пробуем создавать $rerror = 0; $error = array(); $newuser->uid = $newuser->Create($rerror, $error); if (!$newuser->uid) { return FALSE; } //Высылаем приглашение без активации но с паролем $smail = new smail(); $smail->NewUser($newuser->login, $this->_fields['password']); //Обработать действия по событию успешной регистрации $this->afterSuccessRegistation($newuser); return $newuser; }
/** * Добавление Комментария/Сообщения * */ function addComment() { $DB = new DB('master'); if ($_SESSION['last_comment_add'] + 5 > time()) { return false; } $_SESSION['last_comment_add'] = time(); /* Данные комментария */ $blog = $_POST['blogID']; $user = get_uid(); $parent = $_POST['parent']; $alert = array(); if (strlen($_POST['msg']) > blogs::MAX_DESC_CHARS) { $error_flag = 1; $alert[2] = "Максимальный размер сообщения " . blogs::MAX_DESC_CHARS . " символов!"; $msg =& $_POST['msg']; } else { $msg = $_POST['msg']; $msg = preg_replace("/<ul.*>/Ui", "<ul>", $msg); $msg = preg_replace("/<li.*>/Ui", "<li>", $msg); $msg = change_q_x_a(antispam($msg), false, false); } $msg_name = substr(change_q_x(antispam($_POST['title']), true), 0, 96); $yt_link = substr(change_q_x(antispam(str_replace('watch?v=', 'v/', $_POST['yt_link'])), true), 0, 128); if ($yt_link != '') { if (strpos($yt_link, 'http://ru.youtube.com/v/') !== 0 && strpos($yt_link, 'http://youtube.com/v/') !== 0 && strpos($yt_link, 'http://www.youtube.com/v/') !== 0) { $error_flag = 1; $alert[4] = "Неверная ссылка."; } } if (is_empty_html($msg)) { $msg = ''; } // загрузка файлов $attach = $_FILES['attach']; if (is_array($attach) && sizeof($attach) <= 10) { if (is_array($attach) && !empty($attach['name'])) { foreach ($attach['name'] as $key => $v) { if (!$attach['name'][$key]) { continue; } $files[] = new CFile(array('name' => $attach['name'][$key], 'type' => $attach['type'][$key], 'tmp_name' => $attach['tmp_name'][$key], 'error' => $attach['error'][$key], 'size' => $attach['size'][$key])); } } if ($group == 7) { $max_image_size = array('width' => 400, 'height' => 600, 'less' => 0); } else { $max_image_size = array('width' => 470, 'height' => 1000, 'less' => 0); } list($files, $alert_, $error_flag___) = self::uploadFile($files, $max_image_size); $error_flag = max($error_flag___, $error_flag); if (is_array($alert_)) { $alert = array_merge($alert, $alert_); } } else { if (is_array($attach) && !empty($attach['name'])) { $error_flag = 1; $alert[2] = "Файлов не должно быть больше 10"; } } if (!$msg && !count($files)) { $error_flag = 1; $alert[2] = "Поле заполнено некорректно"; } if (($msg || $files['f_name'][0]) && get_uid() && !$error_flag) { //if($files['f_name'][0]) //error_reporting(E_ALL); $eUser = $DB->row("SELECT email, uid FROM corporative_blog LEFT JOIN users ON users.uid = corporative_blog.id_user WHERE corporative_blog.id = ?", $parent); $e_user = new users(); $e_user->GetUser($e_user->GetField($eUser['uid'], $ee, 'login')); $sql = "INSERT INTO corporative_blog (title, yt_link, msg, id_blog, id_user, id_reply) VALUES(?, ?, ?, ?, ?, ?) RETURNING id;"; $res = $DB->row($sql, $msg_name, $yt_link, $msg, $blog, $user, $parent); $idCom = $res['id']; // $idCom = front::og("db")->select("SELECT id FROM corporative_blog WHERE title = ? AND msg = ? AND id_blog = ? AND id_user = ?", $msg_name, $msg, $blog, $user)->fetchOne(); if (substr($e_user->subscr, 2, 1) == '1' && $idCom && $eUser['uid'] != $user) { $p_user = new users(); $p_user->GetUser($p_user->GetField($user, $ee, 'login')); $smail = new smail(); $link = "http://free-lance.ru/about/corporative/post/{$blog}/link/{$idCom}/#c{$idCom}"; $smail->CorporativeBlogNewComment(array("title" => $msg_name, "msgtext" => $msg), $p_user, $e_user, $link); } if (is_array($files)) { $asql = ''; for ($i = 0; $i < count($files['f_name']); $i++) { if ($files['f_name'][$i]) { $asql .= ", (currval('corporative_blog_id_seq'), '{$files['f_name'][$i]}', '{$files['tn'][$i]}')"; } } if ($asql) { $asql = substr($asql, 2); } } if ($asql) { $DB->squery("INSERT INTO corporative_blog_attach(msg_id, \"name\", small) VALUES {$asql}"); } $tags = $_POST['tags']; if ($tags) { $tags_arr = $tags; //explode(",", $tags); array_unique($tags_arr); $this->tagsDelete($idCom); $tg = tags::Add($tags_arr); $this->tagsAdd($idCom, $tg); } //Уведомление о комментарии //list($alert1, $error_flag, $error) = $sql_error; //list($alert1, $error_flag, $error) = $blog_obj->NewThread(get_uid(), $gr, $base, $name, $msg, $files, getRemoteIP(), $mod, 0, $tags, $yt_link, $ontop); } //if ($alert1) $alert = $alert + $alert1; //vardump($alert); front::og("tpl")->error_flag = $error_flag; // front::og("tpl")->alert = $alert; front::og("tpl")->post = array("blog" => $blog, "user" => $user, "parent" => $parent, "msg" => $msg, "title" => $msg_name, "yt_link" => $yt_link, "tags" => $_POST['tags']); return array($error_flag, $error, $idCom); }
function JoinCommune($commune_id, $mode = false) { session_start(); if (!isset($_SESSION['uid'])) { return; } $cm = new commune(); $objResponse = new xajaxResponse(); $result = commune::Join($commune_id, $_SESSION['uid'], false); $objResponse->script("\$('ov-commune-confirm').setStyle('display','none');"); $comm = $cm->getCommune($commune_id, $_SESSION['uid']); /* !!! Посылаем уведомление todo не плохо бы придумать антиспам, пользователь может бесконечно раз выходить и входить в такое сообщество с каждым входом автору сообщества будет высылаться уведомление (skif) */ if ($result == commune::JOIN_STATUS_ASKED) { $sm = new smail(); $sm->CommuneJoinAction($_SESSION['uid'], $comm); } if ($mode == 1) { $href = "'/commune/?id={$commune_id}'"; $objResponse->script('document.location.href = ' . $href); return $objResponse; } if ($mode == 2) { $objResponse->script('document.location.href = document.location.href'); return $objResponse; } $html = "<a href=\"javascript:void(0)\" onclick=\"xajax_OutCommune({$commune_id}); return false;\"><img src=\"/images/btn-cgoout.png\" alt=\"Выйти из сообщество\"/></a>"; $objResponse->assign('join_' . $commune_id, 'innerHTML', $html); /*$href = "document.location.href"; if($mode == true) { $href = "'/commune/?id={$commune_id}'"; } $objResponse->script('document.location.href = '.$href);*/ // $html = __commPrntJoinButton($comm, $_SESSION['uid'], null, true); // $html_s = __commPrntSubmitButton($comm, $_SESSION['uid'], NULL, $mode); // $mAcceptedCnt = $comm['a_count'] - $comm['w_count'] + 1; // $objResponse->assign('join_btn_'.$commune_id,"innerHTML", $html); // $objResponse->assign('commSubscrButton_'.$commune_id,"innerHTML", $html_s ? $html_s : ''); // $objResponse->assign('accepted_'.$commune_id,"innerHTML", $mAcceptedCnt); // $objResponse->assign('idCommRating_'.$commune_id,'innerHTML',__commPrntRating($comm, $_SESSION['uid'])); return $objResponse; }
function setReqvs($sbr_id, $params) { $objResponse = new xajaxResponse(); //@todo: запрещаем изменять финансы в старой СБР #29196 $objResponse->alert('Прекращена поддержка СБР.'); return $objResponse; $objResponse->script("\$('finance-update-btn').removeClass('b-button_disabled');"); $sbr_id = intval($sbr_id); if (!$sbr_id) { return $objResponse; } $uid = get_uid(0); if (!$uid) { $objResponse->redirect('/'); return $objResponse; } $reqvs = sbr_meta::getUserReqvs($uid); $sbr = sbr_meta::getInstance(); $sbr->initFromId($sbr_id); if ($sbr->status == sbr::STATUS_CANCELED) { ob_start(); include $_SERVER['DOCUMENT_ROOT'] . '/sbr/freelancer/tpl.sbr_refuse.php'; $html = ob_get_clean(); $objResponse->assign('master_content', 'innerHTML', $html); $objResponse->script('$$(".b-master").destroy();'); } $form_type = intval($params['form_type']); $rez_type = intval($params['rez_type']); if (!$rez_type) { $rez_type = $reqvs['rez_type']; } if (!$form_type || !$rez_type) { return $objResponse; } $oreqvs = $reqvs; $error = array(); $reqvs1 = array(); foreach ($params as $k => $v) { if (!array_key_exists($k, $reqvs[$form_type])) { continue; } $reqvs1[$k] = $v; $reqvs[$form_type][$k] = $v; } //if($err = sbr_meta::setUserReqv($uid, $rez_type, $form_type, $reqvs1)) { // $error = $err; //} //@todo: запрещаем изменять финансы в старой СБР #29196 $error = 'Прекращена поддержка СБР.'; if (empty($error) && ($reqvs1['mob_phone'] != $oreqvs[$form_type]['mob_phone'] && !($_SESSION['is_verify'] == 't') || $oreqvs['is_activate_mob'] == 'f')) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sms_gate_a1.php'; if ($params['mob_phone'] != '') { $ureqv = $reqvs1; $sms_gate = new sms_gate_a1($ureqv['mob_phone']); $info = $sms_gate->getInfoSend(); $success = false; if (!$sms_gate->isNextSend()) { $success = $sms_gate->sendAuthCellCode(); if (SMS_GATE_DEBUG) { $code_debug = $sms_gate->getAuthCode(); } } if (SMS_GATE_DEBUG && !$code_debug) { $code_debug = $info['data']; } $callback_js = 'a_sms_act'; $limitIsExceed = $sms_gate->limitSmsOnNumberIsExceed($params['mob_phone'], $recordId, $count, $message); $linkText = 'СМС не пришло'; $linkStyle = sms_gate_a1::$enable_link_css; if ($message) { $linkText = "СМС не пришло ({$message})"; } if ($limitIsExceed) { $linkText = sms_gate_a1::LIMIT_EXCEED_LINK_TEXT; $linkStyle = sms_gate_a1::$disable_link_css; } if ($success) { $limitIsExceed = false; } ob_start(); include $_SERVER['DOCUMENT_ROOT'] . '/sbr/tpl.auth_sms_popup.php'; $out = ob_get_clean(); $objResponse->assign('auth_popup', 'innerHTML', $out); $objResponse->script("\$('auth_popup').show(); \$('auth_popup').removeClass('b-shadow_hide'); shadow_popup();"); $objResponse->script("\$('send_btn').removeClass('b-button_rectangle_color_disable');\n \$('send_btn').getElement('.b-button__txt').removeClass('b-button__txt_hide');\n \$('send_btn').getElement('.b-button__load').hide();"); return $objResponse; } } elseif ($oreqvs['is_activate_mob'] == 't' && $reqvs1['mob_phone'] != $oreqvs[$form_type]['mob_phone']) { $error['mob_phone'] = 'У вас привязка к другому номеру'; } //Проверка наличия и идентификации веб-кошелька только для физиков! if (!$error && !is_emp()) { $phone = $oreqvs[$form_type]['mob_phone']; $pskb = new pskb(); $res = $pskb->checkOrCreateWallet($phone); if (empty($res)) { $error['mob_phone'] = 'Ошибка соединения с Веб-кошельком.'; } else { $res = json_decode($res, 1); if (empty($res['state']) || in_array($res['state'], array('COMPLETE'))) { //'EXIST' $error['mob_phone'] = ' Веб-кошелек с указанным номером отсутствует. Для проведения сделки зарегистрируйте и идентифицируйте Веб-кошелек на указанный номер.'; } elseif (!$res['identified']) { $error['mob_phone'] = ' Ваш Веб-кошелек не идентифицирован. Для проведения сделки укажите другой номер телефона и кошелька или идентифицируйте текущий Веб-кошелек.'; } } } if (!$error) { //$_SESSION['users.setup.fin_success'] = 1; if (!hasPermissions('users')) { $smail = new smail(); $smail->FinanceChanged($_SESSION['login']); } } if ($error) { $objResponse->call('finance_err_set', $error, $form_type); return $objResponse; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pskb.php'; $pskb_frl = new pskb_user($reqvs, intval(is_emp()), $sbr->getTotalCost()); $psystems = $pskb_frl->getPsystems(); $objResponse->script('psysDisabled = ' . json_encode($psystems['disabled']) . ';'); $objResponse->script('psysHidden = ' . json_encode($psystems['hidden']) . ';'); $objResponse->script('if(finance_check(null, true)) finance_prepare();'); // $objResponse->call('finance_spinn_hide'); return $objResponse; }
} if (!isset($_GET['days'])) { $_GET['days'] = 3; } if (!isset($_GET['auto'])) { $_GET['auto'] = 0; } if ($_GET['days'] != 1 && $_GET['days'] != 3) { echo "<strong style='color:red'>День может принимать значение 1 или 3</strong>"; return; } if ($_GET['days'] == 1 && $_GET['auto'] == 1) { echo "<strong style='color:red'>Не может быть одновременно days = 1 и auto = 1</strong>"; return; } $mail = new smail(); if ($_GET['service'] == 'pro') { $sql = "SELECT u.*, a.id as acc_id FROM users u INNER JOIN account a ON a.uid = u.uid WHERE u.login = ?"; $user = $DB->row($sql, $_GET['user']); if ($_GET['auto'] == 1) { $role = is_emp($user['role']) ? "employer" : "freelancer"; $mail->remindAutoprolongPRO(array($user), $role, $_GET['days']); } else { $mail->remindTimeleftPRO(array($user), $_GET['days']); } } else { if ($_GET['auto'] == 1) { $mail->remindAutoprolongFirstpage($_GET['days'], $_GET['user']); } else { $mail->reminderFPNotAutopayed($_GET['days'], $_GET['user']); }
public function __construct() { parent::__construct(); $server = defined('SERVER') ? strtolower(SERVER) : 'local'; $this->is_local = $server == 'local'; }
ini_set('max_execution_time', 0); ini_set('memory_limit', '512M'); if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) { //@todo: укажите вместо '' относительное положение doc_root например '/../' $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(dirname(__FILE__) . ''), '/'); } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/config.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/log.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/multi_log.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; $log = new log('hourly_projects_newsletter/' . SERVER . '-%d%m%Y[%H].log', 'w'); $log->writeln('------------ BEGIN hourly (start time: ' . date('d.m.Y H:i:s') . ') -----'); //if((int)date('H') == 1) { //$mail = new smail(); //$log->TRACE(); //} //------------------------------------------------------------------------------ $mail = new smail(); //------------------------------------------------------------------------------ //ответившим на проекты (пока самый тяжелый) $log->TRACE($mail->sendFrlOffer()); //------------------------------------------------------------------------------ //исполнителям проектов $log->TRACE($mail->sendFrlProjectsExec()); //------------------------------------------------------------------------------ //работодателям проектов $log->TRACE($mail->sendEmpPrjFeedback()); //------------------------------------------------------------------------------ $log->writeln('------------ END hourly (total time: ' . $log->getTotalTime() . ') ---------------');
/** * Вывод страницы /gift/ "Подарок". */ public function giftAction() { include $_SERVER['DOCUMENT_ROOT'] . '/404.php'; exit; /* * @deprecated Все что ниже пока не используется */ front::og('tpl')->page = 'gift'; self::isBlockMoney(); /** * Подключаем AJAX для страницы. */ require_once $_SERVER['DOCUMENT_ROOT'] . '/xajax/bill.common.php'; front::og('tpl')->script = '/scripts/bill2.js'; front::og('tpl')->xajax = $xajax; front::og('tpl')->mnth = 1; // Месяцев оплаты по умолчанию $val = $this->uri[0]; switch ($val) { case 'pro': // Вывод подстраницы "Аккаунт «PRO»" /* * Обработка события "Подарить" */ if ($_POST['act']) { $mnth = intval(trim($_POST['mnth'])); // месяцев $login = trim(strip_tags($_POST['login'])); // логин пользователя $msg = change_q_x(__paramInit('string', null, 'msg', null, 300)); $usertype = trim(strip_tags($_POST['usertype'])); /** * Подключаем класс для оплаты подарка. */ require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; $prof = new payed(); $tr_id = $_REQUEST['transaction_id']; if (!$tr_id) { $this->account->view_error('Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.'); } front::og('tpl')->tr_id = $tr_id; front::og('tpl')->login = $login; front::og('tpl')->msg = $msg; front::og('tpl')->mnth = $mnth; /* * Если нет ошибок выводим */ if ($mnth > 0 && $login) { // Класс для работы с пользователем require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $gid = $user->GetUid($error, $login); $user->GetUser($login); if (!$gid) { $alert['login'] = '******'; } if ($gid == get_uid()) { $alert['login'] = '******'; } if (defined('SPEC_USER') && get_uid() == SPEC_USER) { $alert['login'] = '******'; } if (!$alert) { $role = $user->GetRole($login, $error); /* * Высчитываем тариф для обработки. Тариф зависит от количества месяцев (Действуют специальные скидки) */ if (substr($role, 0, 1) != '0') { $tarif = 16; } else { $tarif = 52; if ($mnth == 3) { $tarif = 66; } if ($mnth == 6) { $tarif = 67; } if ($mnth == 12) { $tarif = 68; } } $ok = $prof->GiftOrderedTarif($bill_id, $gift_id, $gid, get_uid(), $tr_id, $mnth, $msg, $tarif); // Оплата подарка if ($ok) { // Посылаем уведомление о подарке и переносим на страницу успешной оплаты $sm = new smail(); $sm->NewGift($_SESSION['login'], $login, $msg, $gift_id); $_SESSION['success_aid'] = $bill_id; header("Location: /{$this->name_page}/success/"); exit; } unset($msg); } } else { $alert['login'] = '******'; } front::og('tpl')->error = $alert; } front::og('tpl')->display('bill/bill_gift_pro.tpl'); break; case 'main': // Вывод подстраницы "Платное размещение в разделе" front::og('tpl')->type = 1; // Типа размещения = неделя /* * Обработка события "Подарить" - при нажатии кнопки подарить */ if ($_POST['act']) { $type = intval(trim($_POST['type'])); // Сколько недель $login = trim(strip_tags($_POST['login'])); $msg = change_q_x(__paramInit('string', null, 'msg', null, 300)); /** * Класс для обработки оплаты и взаимодействия механизма вывода. */ require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/firstpage.php'; $prof = new firstpage(); $tr_id = $_REQUEST['transaction_id']; if (!$tr_id) { $this->account->view_error('Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.'); } front::og('tpl')->tr_id = $tr_id; front::og('tpl')->login = $login; front::og('tpl')->msg = $msg; front::og('tpl')->type = $type; if (!$type) { $alert['type'] = 'Не выбрано количество недель.'; } else { $d_time = "{$type} неделя"; $intv = "{$type} weeks"; if ($login) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $gid = $user->GetUid($error, $login); $user->GetUser($login); if (!$gid) { $alert['login'] = '******'; } if (is_emp($user->role)) { $alert['login'] = '******'; } if ($gid == get_uid()) { $alert['login'] = '******'; } if (defined('SPEC_USER') && get_uid() == SPEC_USER) { $alert['login'] = '******'; } if (!$alert) { $order_id = $prof->Gift($bill_id, $gift_id, $gid, get_uid(), $tr_id, $intv, 17, $msg, $type); if (!$order_id) { header('Location: /bill/fail/'); // Если оплата не прошла exit; } else { // Уведомление на почту $sm = new smail(); $sm->NewGift($_SESSION['login'], $login, $msg, $gift_id); $_SESSION['success_aid'] = $bill_id; header("Location: /{$this->name_page}/success/"); // Если все прошло успешно переносим на страницу - Успешно exit; } } } else { $alert['login'] = '******'; } } front::og('tpl')->error = $alert; } front::og('tpl')->display('bill/bill_gift_main.tpl'); break; case 'fronttop': // Обработка подстраницы "Платные места наверху главной страницы" // Событие нажатия кнопки "Подарить" if ($_POST['act']) { $login = trim(strip_tags($_POST['login'])); // Логин $msg = change_q_x(__paramInit('string', null, 'msg', null, 300)); $tr_id = $_REQUEST['transaction_id']; if (!$tr_id) { $this->account->view_error('Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.'); } front::og('tpl')->tr_id = $tr_id; front::og('tpl')->login = $login; front::og('tpl')->msg = $msg; if ($login) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $gid = $user->GetUid($error, $login); $user->GetUser($login); if (is_emp($user->role)) { $alert['login'] = '******'; } if ($gid == get_uid()) { $alert['login'] = '******'; } if (defined('SPEC_USER') && get_uid() == SPEC_USER) { $alert['login'] = '******'; } if (!$gid) { $alert['login'] = '******'; } if (!$alert) { /** * Класс для работы с оплатой подарка. */ require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pay_place.php'; $place = new pay_place(); $tarif = 69; $profs = $place->gift($bill_id, $gift_id, $tr_id, $gid, get_uid(), $msg, $tarif); // Оплачиваем подарок if ($profs) { $_SESSION['success_aid'] = $bill_id; header("Location: /{$this->name_page}/success/"); // Все прошло успешно exit; } } } else { $alert['login'] = '******'; } front::og('tpl')->error = @$alert; // Переменная ошибок } front::og('tpl')->display('bill/bill_gift_fronttop.tpl'); break; case 'cattop': // Обработка подстраницы "Платные места наверху каталога" // Событие нажатия кнопки "Подарить" if ($_POST['act']) { $login = trim(strip_tags($_POST['login'])); // Логин $msg = change_q_x(__paramInit('string', null, 'msg', null, 300)); $tr_id = $_REQUEST['transaction_id']; if (!$tr_id) { $this->account->view_error('Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.'); } front::og('tpl')->tr_id = $tr_id; front::og('tpl')->login = $login; front::og('tpl')->msg = $msg; if ($login) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $gid = $user->GetUid($error, $login); $user->GetUser($login); if (!$gid) { $alert['login'] = '******'; } if (is_emp($user->role)) { $alert['login'] = '******'; } if ($gid == get_uid()) { $alert['login'] = '******'; } if (defined('SPEC_USER') && get_uid() == SPEC_USER) { $alert['login'] = '******'; } if (!$alert) { /** * Класс для работы с оплатой подарка. */ require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pay_place.php'; $place = new pay_place(1); $tarif = 83; $profs = $place->gift($bill_id, $gift_id, $tr_id, $gid, get_uid(), $msg, $tarif); // Оплачиваем подарок if ($profs) { $_SESSION['success_aid'] = $bill_id; header("Location: /{$this->name_page}/success/"); // Все прошло успешно exit; } } } else { $alert['login'] = '******'; } front::og('tpl')->error = @$alert; // Переменная ошибок } front::og('tpl')->display('bill/bill_gift_cattop.tpl'); break; case 'catalog': // Обработка подстраницы "Платные места в каталоге в подарок" // Событие нажатия кнопки "Подарить" front::og('tpl')->filter_categories = professions::GetAllGroupsLite(true); front::og('tpl')->filter_subcategories = professions::GetAllProfessions(1); $x = new op_codes(); $x->GetRow(84); $top_p = $x->sum; $x->GetRow(85); $inside_p = $x->sum; front::og('tpl')->price_top = $top_p; front::og('tpl')->price_inside = $inside_p; if ($_POST['act']) { $login = trim(strip_tags($_POST['login'])); // Логин $msg = change_q_x(__paramInit('string', null, 'msg', null, 300)); $pf_category = __paramInit('int', null, 'pf_category', 0); $pf_subcategory = __paramInit('int', null, 'pf_subcategory', 0); //echo '<pre>'; print_r($_POST); exit('</pre>'); $tr_id = $_REQUEST['transaction_id']; if (!$tr_id) { $this->account->view_error('Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.'); } front::og('tpl')->tr_id = $tr_id; front::og('tpl')->login = $login; front::og('tpl')->msg = $msg; front::og('tpl')->pf_category = $pf_category; front::og('tpl')->pf_subcategory = $pf_subcategory; if ($login) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $gid = $user->GetUid($error, $login); $user->GetUser($login); if (!$gid) { $alert['login'] = '******'; } if (is_emp($user->role)) { $alert['login'] = '******'; } if ($gid == get_uid()) { $alert['login'] = '******'; } if (defined('SPEC_USER') && get_uid() == SPEC_USER) { $alert['login'] = '******'; } $weeks = (int) $_POST['weeks']; if (!$weeks) { $alert['week'] = 'Данное поле является обязательным'; } if (!$alert) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/firstpage.php'; $prof = new firstpage(); $pf_category = (int) $_POST['pf_category']; $pf_subcategory = (int) $_POST['pf_subcategory']; $page = !$pf_subcategory ? 0 : $pf_subcategory; $place_info = array($page => $weeks); $op_code = $page ? 85 : 84; // require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/account.php"); // $account = new account(); // $account ->/ view_error("Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала."); $account = new account(); if ($prof->GiftOrderedCat($bill_id, $gift_id, $gid, get_uid(), $tr_id, $page, (int) $weeks, $op_code, $msg)) { $_SESSION['success_aid'] = $bill_id; header("Location: /{$this->name_page}/success/"); // Все прошло успешно exit; } } } else { $alert['login'] = '******'; } front::og('tpl')->error = @$alert; // Переменная ошибок } front::og('tpl')->display('bill/bill_gift_catalog.tpl'); break; default: /* * По умолчанию выводим главную страницу раздела "Подарки" */ front::og('tpl')->display('bill/bill_gift.tpl'); break; } }
ini_set('display_errors', 1); error_reporting(E_ALL ^ E_NOTICE); ini_set('max_execution_time', 0); ini_set('memory_limit', '512M'); if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) { $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/'); } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; //require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/config.php"); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/profiler.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; //------------------------------------------------------------------------------ $results = array(); $profiler = new profiler(); //------------------------------------------------------------------------------ $profiler->start('spam'); //------------------------------------------------------------------------------ $mail = new smail(); $results['cnt'] = $mail->sendFrlOffer(); //------------------------------------------------------------------------------ $profiler->stop('spam'); //------------------------------------------------------------------------------ $results += array('execution_time (sec)' => number_format($profiler->get('spam'), 5)); //------------------------------------------------------------------------------ array_walk($results, function (&$value, $key) { $value = sprintf('%s = %s' . PHP_EOL, $key, $value); }); print_r(implode('', $results)); exit;
/** * Функция автоподьема проектов если в них в течении 2х дней не было ни одного ответа * Поднимает только 1 раз * * @global object $DB */ public static function autoSetTopProject() { global $DB; // Старые проекты (больше 7 дней) не повышаем $sql = "\n SELECT \n p.*, u.email, u.subscr, u.login, u.uname, u.usurname, us.key as unsubscribe_key \n FROM projects p\n LEFT JOIN projects_blocked pb ON pb.project_id = p.id\n INNER JOIN employer u ON u.uid = p.user_id\n INNER JOIN users_subscribe_keys us ON us.uid = u.uid\n WHERE\n pb.id IS NULL AND \n p.strong_top = 0 AND top_to IS NULL AND\n p.post_date = p.create_date AND \n p.create_date + interval '2 days' <= now() AND \n (now() - p.create_date) < '7 days' AND \n p.offers_count = 0 AND \n p.closed = false\n "; $update = "UPDATE projects SET post_date = post_date + interval '2 days' WHERE id IN (?l)"; $update_projects = $DB->rows($sql); foreach ($update_projects as $prj) { $prjid[] = $prj['id']; } if ($DB->query($update, $prjid)) { $smail = new smail(); $smail->sendAutoSetTopProject($update_projects); } }
/** * Удаляет статью. * * @param integer $msg идентификатор стаьи * @param integer $admin можно ли удалять статью * * @return char сообщение об ошибке */ public function delArticle($id, $send_warn = '') { global $DB; $sql = 'DELETE FROM articles_new WHERE id=? RETURNING logo, user_id, title'; $ret = $DB->row($sql, $id); if ($ret) { $file = new CFile(); $file->Delete($ret['logo']); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $smail->delArticleSendReason($ret['user_id'], $ret['title'], $send_warn); } return $DB->error; }
/** * Устанавливает статус "Документы пришли" на юзеров в определенных этапах. * * @param array $suids массив ключей этап_юзер. * @param bool $mode если NULL, то развернуть противоположно, иначе жестко установить в заданное значение. * * @return array данные по первой записи sbr_stages_users с флагом docs_ready -- документы на месте, можно отправлять в "Выплаты". */ public function setDocsReceived($suids, $mode = null) { if (!is_array($suids)) { $suids = array($suids); } $suids = array_map('pg_escape_string', $suids); $mode = $mode === null ? 'NOT(docs_received)' : ($mode ? 'true' : 'false'); $sql = "UPDATE sbr_stages_users SET docs_received = ?b WHERE stage_id||'_'||user_id IN (?l) RETURNING *, (uploaded_docs & " . sbr::DOCS_REQUIRED . ') = ' . sbr::DOCS_REQUIRED . ' as docs_ready'; $sql = $this->db()->parse($sql, $mode, $suids); if (($res = pg_query(self::connect(), $sql)) && pg_num_rows($res)) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $smail->docsReceivedSBR($suids); return pg_fetch_assoc($res); } return; }
} 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: /'); exit; } } } $content = 'changepwd_inner.php'; include 'template3.php';
/** * Отметить удаленный блог, что он удален, для дальнейшего модерирования) * * @param integer $fid ID Пользователя * @param integer $edit_id ИД Сообщения * @param string $ip ИП того кто удаляет * @param mixed $error Сообщение об ошибке * @param boolean $mod Имеет ли юзер права на удаление * @param string $reason Причина удаления * @return integer $thread_id ИД удаленного сообщения */ function MarkDeleteMsg($fid, $edit_id, $ip, &$error, $mod = 1, $reason = '') { global $DB; $sql = "SELECT fromuser_id, thread_id from blogs_msgs WHERE id = ?i"; $res = $DB->row($sql, $edit_id); $from_id = $res['fromuser_id']; $thread_id = $res['thread_id']; $sql = "SELECT fromuser_id from blogs_msgs WHERE thread_id = ?i AND reply_to ISNULL"; $buser_id = $DB->val($sql, $thread_id); if ($fid != $from_id && $mod == 1 && ($fid != $buser_id && $mod == 1)) { $err = "Вы не можете удалять чужие сообщения!"; return $thread_id; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php'; $sModer = ' , moderator_status = ' . ($fid == $from_id ? 'NULL' : $fid) . ' '; $sql = $DB->parse('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i;', $edit_id, user_content::MODER_BLOGS); $sql .= "UPDATE blogs_msgs SET deleted=NOW(), deluser_id=?i, deleted_reason = ? {$sModer} WHERE id = ?i"; $userSubscribe = self::getUsersSubscribe(array($edit_id)); $res = $DB->query($sql, $fid, $reason, $edit_id); $error = $DB->error; if (!$error) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php"; $s = new smail(); $s->sendBlogPostDeleted(get_uid(false), $userSubscribe); } return $thread_id; }