public function process_event(&$event) { global $DB; $this->force_connect(); $r = false; switch ($event->type) { case 'ProjectPosted': $project_id = $event->data['id']; $this->log->notice('New project posted #id = ' . $project_id); $obj_project = new projects(); $project = $obj_project->GetPrjCust($project_id); // Не выбран испольнитель (если испольнитель выбран, то не пишем ответ на этот проект) if ($project && $project['exec_id'] == 0 && $project['kind'] == 1) { $autoresponses = autoresponse::getListForProject($project); foreach ($autoresponses as $autoresponse) { $freelancer = $autoresponse->data['freelancer']; $contacts_freelancer = $autoresponse->data['contacts_freelancer']; // Проверяем если проект только для про, то и пользователь который на него отвечает должен быть ПРО if ($project['pro_only'] == 't' && !payed::CheckPro($freelancer->login)) { continue; } // Проверяем если проект только для верифицированных, то и пользователь который на него отвечает должен быть верифицирован if ($project['verify_only'] == 't' && !$freelancer->IsVerified()) { continue; } // Проверка, что текущий пользователь не является владельцем проекта if ($project['user_id'] == $freelancer->uid) { continue; } // Добавление нового отзыва к проекту $obj_offer = new projects_offers(); $save_contacts = serialize($contacts_freelancer); $DB->start(); $error_offer = $obj_offer->AddOffer($freelancer->uid, $project['id'], '', '', '', '', '', '', antispam(stripslashes($autoresponse->data['descr'])), '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', $autoresponse->toBoolean($autoresponse->data['only_4_cust']), 0, 0, false, false, $save_contacts, 0, $autoresponse->data['id']); // В случае добавление автоответа, уменьшаем счетчик автоответов для пользователя (в транзакции) if ($error_offer || !$autoresponse->reduce($freelancer, $obj_offer, $project_id)) { $this->log->notice('Rollback autoresponse posted for project #id = ' . $project_id); $DB->rollback(); } else { $obj_project->incrementViews($project_id); $this->log->notice(sprintf('New autoresponse #%d posted for project #%d', $obj_offer->offer_id, $project_id)); $DB->commit(); } } } break; } return PGQ_EVENT_OK; }
/** * Аутентификация пользователя и заполнение его сессии необходимыми данными. * * @param string $login логин пользователя * @param string $pwd пароль пользователя * @param array ¶ms данные пользователя * @param boolean $is_2fa_off принудительное откулючение 2х этапной проверки * * @return integer id сессии * * @global DB $DB */ public function Auth($login, $pwd, &$params, $is_2fa_off = false) { ////////////////////////////////////////////////////////// // Ахтунг! Изменение логики нужно отражать также в новом движке. // Например, при добавлении новый полей в сессию, добавьте их в Web_Front::login() ////////////////////////////////////////////////////////// global $DB; $plogin = preg_replace('/[+ ()-]/', '', $login); $phoneType = preg_replace("/\\D/", '', $plogin); if ($phoneType == $plogin) { $plogin = '******' . $plogin; $sql = "SELECT user_id FROM sbr_reqv WHERE (_1_mob_phone = ? OR _2_mob_phone = ?) AND is_activate_mob = 't'"; $uids = $DB->rows($sql, $plogin, $plogin); if ($uids) { foreach ($uids as $u) { $sql_uids .= $u['user_id'] . ','; } $sql_uids = preg_replace('/,$/', '', $sql_uids); } } $sql = ' SELECT u.email, u.role, u.uname, u.usurname, u.uid, u.is_banned, u.ban_where, u.active, a.sum, a.bonus_sum, u.login, u.anti_uid, u.is_pro_test, u.is_pro_new, u.is_chuck, u.sex, u.settings, u.splash_show, u.is_verify, u.reg_date, ac.code, u.photo, u.is_profi, u.birthday FROM users AS u LEFT JOIN activate_code ac ON ac.user_id = u.uid LEFT JOIN account AS a ON a.uid = u.uid WHERE ((lower(u.login) = ? OR lower(u.email) = ?) AND u.passwd = ?) ' . ($sql_uids ? "OR ( u.uid IN ({$sql_uids}) AND u.passwd = ?)" : ''); $res = $DB->rows($sql, strtolower($login), mb_strtolower($login), $pwd, $pwd); if ($res) { $qres = $res; $uvisits = array(); $n = 0; foreach ($qres as $k => $v) { $uvisits[$this->getLastVisit($v['uid']) . '-' . $n] = $k; ++$n; } asort($uvisits); $res = $qres[array_pop($uvisits)]; } $error .= $DB->error; $first_login = $this->getLastVisit($res['uid']); $ip = getRemoteIP(); /** * Дополнительная проверка логина. * Нужна для исправления паролей, содержащих * теги (или похожие на теги последовательности). * * !!Убрать после следующей глобальной смены паролей. */ if (!$res) { // попробуем убрать (0018079) //$res = $this->FixPassword($sql, $login); } /** * Определяем нужна ли 2хэтапная авторизация. */ if (!$is_2fa_off && count($res) && $first_login) { //не первый вход //если на 2ом этапе ввели другой аккаунт то направить //обратно на 2ой этап и сообщить обэтом if (isset($params['2fa_provider']['uid']) && $params['2fa_provider']['uid'] != $res['uid']) { $is_login = $params['2fa_provider']['type'] == 0; session::setFlashMessage($is_login ? self::TXT_AUTH_2FA_LOG_FAIL : self::TXT_AUTH_2FA_SOC_FAIL, '/auth/second/'); return self::AUTH_STATUS_2FA; } $is_opauth = defined('IS_OPAUTH'); if (!isset($params['2fa_provider']) || $params['2fa_provider']['type'] > 0 != $is_opauth) { //несовпадают типы авторизаций на 2ом этапе require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/opauth/OpauthModel.php'; $opauthModel = new OpauthModel(); $is_2fa = $opauthModel->getMultilevel($res['uid']); if (isset($is_2fa['type'])) { //$is_2fa - авторизация через выбранную соцсеть //0 - нужна обычная авторизация так как вход был выполнен через соцсеть $params['2fa_provider'] = array('type' => !$is_opauth ? $is_2fa['type'] : 0, 'uid' => $res['uid'], 'login' => $res['login']); //Сбрасываем авторизацию $res = array(); //переходим ко 2ой стадии return self::AUTH_STATUS_2FA; } } } //Более нам параметр этапов авторизации не нужен unset($params['2fa_provider']); /** * Успешная авторизация. */ if (count($res)) { list($email, $trole, $tname, $tsurname, $tid, $is_banned, $ban_where, $active, $sum, $bonus_sum, $log, $anti_uid, $is_pro_test, $is_pro_new, $is_chuck, $sex, $settings, $splash_show, $is_verify, $reg_date, $activate_code, $photo, $is_profi, $birthday) = array_values($res); if ($activate_code != '' && $active == 't') { $this->checkRegDate($tid, $reg_date); } if ($is_banned) { return -1; } //if ($active=='f') return -2; //##0027983 if (!$this->CheckUserAllowIP($ip, $tid)) { return -3; } $params['birthday'] = $birthday ? strtotime($birthday) : null; $params['age'] = $params['birthday'] ? intval(ElapsedYears($params['birthday'])) : null; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php'; $params['permissions'] = permissions::getUserPermissions($tid); $params['email'] = $email; $params['role'] = $trole; $params['name'] = $tname; $params['surname'] = $tsurname; $params['uid'] = $tid; $params['user_ip'] = $ip; $params['ac_sum'] = zin($sum); $params['bn_sum'] = zin($bonus_sum); $params['login'] = $log; $params['is_pro_new'] = $is_pro_new; $params['pro_test'] = $is_pro_test; $params['is_chuck'] = $is_chuck; $params['is_verify'] = $is_verify; $params['sex'] = $sex; $params['reg_date'] = $reg_date; $params['photo'] = $photo; if (!is_emp($trole)) { $params['is_profi'] = $is_profi === 't'; } if ($anti_uid) { $anti_class = is_emp($trole) ? 'freelancer' : 'employer'; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/{$anti_class}.php"; $anti = new $anti_class(); $anti->GetUserByUID($anti_uid); $params['anti_uid'] = $anti->uid; $params['anti_login'] = $anti->login; $params['anti_surname'] = $anti->usurname; $params['anti_name'] = $anti->uname; } if (!is_emp($params['role'])) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php'; if ($po_summary = projects_offers::GetFrlOffersSummary($params['uid'])) { $params['po_count'] = $po_summary['total']; } } $sql = 'UPDATE users SET last_time = now(), last_ip = ?, is_active = true WHERE uid = ?i'; $res = $DB->query($sql, $ip, $tid); $this->SaveLoginIPLog($tid, $ip); $this->increaseLoginsCnt($tid); // количество операций $sQuery = 'SELECT COUNT(ao.id) FROM account_operations ao INNER JOIN account a ON a.id = ao.billing_id WHERE a.uid = ?i AND (ao.ammount <> 0 OR ao.trs_sum <> 0)'; $params['account_operations'] = $DB->val($sQuery, $tid); $params['question_button_hide'] = $settings[1]; // Показывать/скрывать кнопку "У вас есть вопрос?" $params['promo_block_hide'] = $settings[2]; // показывать Блок "Быстрый доступ к основным функциям сайта" $params['direct_external_links'] = $settings[3]; // Не показывать страницу "Переход по внешней ссылке" a.php $params['sbr_slash_show'] = $settings[4] && $first_login < strtotime('2012-08-08'); // Показывать/скрыть СБР промо-слеш $params['splash_show'] = $splash_show; $params['chat'] = $settings[5]; $params['chat_sound'] = $settings[6]; // #0017182 > Вопрос можем ли мы вытащить эту настройку из кук пользователей и сохранить ее в базу? if (empty($settings[3]) && $_COOKIE['direct_external_links'] == 1) { $this->setDirectExternalLinks($tid, 1); if ($anti_uid) { $this->setDirectExternalLinks($anti_uid, 1); } setcookie('direct_external_links', '', time() - 60 * 60 * 24 * 365, '/'); setcookie('no_a_php', '1', time() + 60 * 60 * 24 * 365 * 2, '/'); } //генерация куки для userecho require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/userecho.php'; setcookie('ue_sso_token', UserEcho::get_sso_token(USERECHO_API_KEY, USERECHO_PROJECT_KEY, array()), 0, '/', preg_replace('/^https?\\:\\/\\/(?:www\\.)?/', '.', 'fl.ru')); // Первый заход, регистрация через мастер, мастер не закончен if ($first_login == 0) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/wizard.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'; if (is_emp($params['role'])) { $wiz_user = wizard::isUserWizard($tid, step_employer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_EMP_ID); } else { $wiz_user = wizard::isUserWizard($tid, step_freelancer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_FRL_ID); } if ($wiz_user['id'] > 0) { $role = is_emp($params['role']) ? wizard_registration::REG_EMP_ID : wizard_registration::REG_FRL_ID; header('Location: /registration/activated.php?role=' . $role); //header("Location: /wizard/registration/?role={$role}"); exit; } elseif (!is_emp($params['role'])) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; $pro_last = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $pro_last['is_freezed'] ? false : $pro_last['cnt']; if ($_SESSION['pro_last'] && $_SESSION['is_pro_new'] != 't') { payed::checkNewPro($id); } if ($pro_last['freeze_to']) { $_SESSION['freeze_from'] = $pro_last['freeze_from']; $_SESSION['freeze_to'] = $pro_last['freeze_to']; $_SESSION['is_freezed'] = $pro_last['is_freezed']; $_SESSION['payed_to'] = $pro_last['cnt']; } if ($_SESSION['anti_login']) { $pro_last = payed::ProLast($_SESSION['anti_login']); $_SESSION['anti_pro_last'] = $pro_last['freeze_to'] ? false : $pro_last['cnt']; } //отправляем письмо с инфой, как работать на сайте /* require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php"); $mail = new smail(); if (is_emp()) { $mail->employerQuickStartGuide(get_uid(false)); } else { $mail->freelancerQuickStartGuide(get_uid(false)); } */ return $tid; if (!defined('IN_API')) { // для API мобильного приложения не нужно header("Location: /users/{$login}/"); exit; } } } //----------------------------------- } else { $tid = 0; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/annoy.php'; $annoy = new annoy(); $annoy->Add($ip); } return $tid; }
/** * Скрывает или отображает платные проекты. * * @see projects_filter::ShowClosedProjects() * @see projects_filter::initClosedProjects() * * @param string $id id определенного или all для всех * @param string $type скрыть (hide) или показать (unhide) * @param int $kind тип текущей закладки главной страницы (см. new_projects::getProjects()) * @param int $page номер текущей страницы. * @param bool $filter включен ли фильтр у юзера. * * @return object xajaxResponse */ function _HideProject($id, $type, $kind, $page, $filter) { session_start(); $objResponse = new xajaxResponse(); $all = $id == 'all'; $id = (int) $id; $uid = $_SESSION['uid']; if ($type == 'hide') { $prj = new new_projects(); $content = $prj->SearchDB((int) $kind, 2, 0, $uf, true, true); $prjs = $prj->getProjects($num_prjs, (int) $kind, 2, true, $uf, true, true); $num = 0; $nDH = $nH; $_SESSION['ph'][$id] = base64_encode(projects::GetField($id, 'name')); $_SESSION['top_payed']--; $objResponse->assign("project-item{$id}", 'outerHTML', ''); if ($filter) { $prj_filter = new projects_filters(); $uf = $prj_filter->GetFilter($uid, $error); } if ($prjs[$num]) { $this_kind = $prjs[$num]['kind']; $this_uid = get_uid(false); $this_pro_last = $_SESSION['pro_last']; $this_is_pro = payed::CheckPro($_SESSION['login']); $this_edit_mode = hasPermissions('projects'); if ($this_uid) { $this_user_role = $_SESSION['role']; } $this_project = $prjs[$num]; $row = $this_project; if ($this_edit_mode || $this_project['kind'] == 2 || $this_project['user_id'] == $this_uid || $this_project['offer_id'] || $this_pro_last) { $this_show_data = 1; $row['show_data'] = 1; } else { $this_show_data = 0; $row['show_data'] = 0; } $descr = $row['descr']; $descr = preg_replace("/^ /", "", $descr); $descr = preg_replace("/(\n) /", "\$1", $descr); $descr = reformat(strip_tags(LenghtFormatEx($descr, 180), "<br />"), 50, 1, 0, 1); $descr = preg_replace("//", " ", $descr); $row['descr'] = $descr; $row['t_is_payed'] = $this_project['payed'] && $this_project['kind'] != 2 && $this_project['kind'] != 7; $row['t_is_contest'] = $this_project['kind'] == 2 || $this_project['kind'] == 7; $row['t_pro_only'] = $this_project['pro_only'] == "t"; $row['t_prefer_sbr'] = $this_project['prefer_sbr'] == "t"; $row['priceby'] = $this_project['priceby']; $row['t_is_adm'] = hasPermissions('projects'); $row['t_is_ontop'] = strtotime($this_project['top_to']) >= time(); $row['unread'] = (int) $this_project['unread_p_msgs'] + (int) $this_project['unread_c_msgs'] + (int) $this_project['unread_c_prjs']; $row['t_is_proonly'] = $this_project['pro_only'] == 't' && !$_SESSION['pro_last'] && !$this_edit_mode && $this_uid != $this_project['user_id']; $row['friendly_url'] = getFriendlyURL('project', array('id' => $row['id'], 'name' => $row['name'])); $attaches = projects::GetAllAttach($this_project['id']); $attaches = !$attaches ? array() : $attaches; foreach ($attaches as $k => $a) { $a['virus'] = is_null($a['virus']) ? $a['virus'] : bindec($a['virus']); $attaches[$k] = $a; } $row['attaches'] = $this_project['attaches'] = $attaches; $is_ajax = true; $can_change_prj = hasPermissions("projects"); ob_start(); require $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.lenta-item.php'; $prj_html = ob_get_contents(); ob_end_clean(); $objResponse->script('ndiv = new Element("div", {id: "project-item' . $prjs[$num]['id'] . '", class: "b-post b-post_pad_10_15_15_20 b-post_margleft_-20 b-post_margright_-15 b-post_margbot_15 b-layout b-post_relative b-post_overflow_hidden' . ($row['is_color'] == 't' ? ' b-post_bg_fffded' : '') . '"});'); $objResponse->script('ndiv.inject($("projects-list").getLast("div[id^=project-item]"), "after");'); $objResponse->assign("project-item" . $prjs[$num]['id'], "innerHTML", $prj_html); } } else { if ($all && $_SESSION['ph']) { $nDH = -1 * $nH * count($_SESSION['ph']); unset($_SESSION['ph']); } else { $nDH = -1 * $nH; unset($_SESSION['ph'][$id]); if (!$_SESSION['ph']) { unset($_SESSION['ph']); } } if ($filter) { $prj_filter = new projects_filters(); $uf = $prj_filter->GetFilter($uid, $error); } $prj = new new_projects(); $content = $prj->SearchDB((int) $kind, (int) $page, 0, $uf, true, true); $objResponse->assign("projects-list", "innerHTML", $content); } if ($_SESSION['ph']) { $ccph = array_keys($_SESSION['ph']); } setcookie("ph[{$uid}]", $ccph ? implode(',', $ccph) : '', time() + 60 * 60 * 24 * 30, '/'); if ($kind == 2 || $kind == 7) { $prjWord_1 = 'скрытый конкурс'; $prjWord_2 = 'скрытых конкурса'; $prjWord_5 = 'скрытых конкурсов'; } elseif ($kind == 4) { $prjWord_1 = 'скрытая вакансия'; $prjWord_2 = 'скрытых вакансии'; $prjWord_5 = 'скрытых вакансий'; } else { $prjWord_1 = 'скрытый проект'; $prjWord_2 = 'скрытых проекта'; $prjWord_5 = 'скрытых проектов'; } $cnt = ""; if (sizeof($_SESSION['ph']) && $_SESSION['uid']) { $cnt = sizeof($_SESSION['ph']) . " " . ending(sizeof($_SESSION['ph']), $prjWord_1, $prjWord_2, $prjWord_5); } $objResponse->assign("hide_project_count", "innerHTML", $cnt); // если до этого проекты отображались в режиме "Только название", то сворачиваем их $objResponse->call("rollProjects"); return $objResponse; }
$teasers = $teasersEmp; } else { $teasers = $teasersFrl; } } else { $teasers = $teasersEmp; } // для про пользователей не показвыаем рекламу ПРО аккаунта if (is_pro()) { if ($_SESSION['pro_test'] === 'f') { // тизер ПРО показываем если куплен тестовый ПРО $teasersExclude[] = 'pro'; } $teasersExclude[] = 'test-pro'; $teasersExclude[] = 'offers'; } elseif (!payed::IsUserWasPro($uid)) { $teasersExclude[] = 'test-pro'; } // формируем массив из прошедших фильтрацию тизеров foreach ($teasers as $key => $teaser) { $ok = true; foreach ($teaser['exclude'] as $filter) { if (isset($teasersExclude) && in_array($filter, $teasersExclude)) { $ok = false; break; } } if ($ok) { $filteredTeasers[] = $teaser; } }
<?php require_once '../classes/stdf.php'; require_once '../classes/account.php'; require_once '../classes/session.php'; require_once '../classes/firstpage.php'; require_once '../classes/payed.php'; $payed = new payed(); $sess = new session(); /* $users = $DB->rows(" SELECT DISTINCT from_id, login FROM orders o INNER JOIN users ON o.from_id = users.uid WHERE (from_date <= '2013-10-25 00:00:00') AND (from_date + to_date >= '2013-10-24 00:00:00') AND NOT EXISTS ( SELECT 1 FROM orders WHERE from_id = o.from_id AND ( (from_date <= '2013-10-18 00:00:00') AND (from_date + to_date >= '2013-10-17 00:00:00') ) ) "); echo "Execute recovery PRO accounts for " . count($users) . " users.\n"; foreach ($users as $user) { $transaction_id = account::start_transaction($user['from_id']); $payed->AdminAddPRO($user['from_id'], $transaction_id, '2 days'); $session->UpdateProEndingDate($user['login']); } */ $users = $DB->rows("\n SELECT\n DISTINCT from_id, login\n FROM\n orders o\n INNER JOIN\n users ON o.from_id = users.uid\n WHERE\n (from_date <= '2013-10-25 00:00:00') AND (from_date + to_date >= '2013-10-24 00:00:00')\n AND EXISTS ( SELECT 1 FROM orders WHERE from_id = o.from_id AND ( (from_date <= '2013-10-18 00:00:00') AND (from_date + to_date >= '2013-10-17 00:00:00') ) )\n");
?> </span> <?php } //if ?> </h3> <div class="b-layout__txt b-layout__txt_fontsize_11 b-layout__txt_padbot_20 b-layout__txt_padleft_70 b-layout__txt_padleft_null_iphone">Аккаунт PRO предоставляет своим обладателям бонусы на сайте: скидки на все платные услуги, бесплатную публикацию вакансий, возможность просматривать контакты всех пользователей и многое другое.</div> <div class="b-buttons b-buttons_padleft_70 b-buttons_padbot_10 b-layout__txt_padleft_null_iphone"> <a href="javascript:void(0)" class="b-button b-button_flat b-button_flat_green btn-pay"><?php echo billing::$btn_name_for_type[$service['type']]; ?> </a> </div> <?php if (!empty($service['last_operation']['op_code'])) { $popup_mini_data = payed::getPayedPROList('emp'); foreach ($popup_mini_data as $data) { if ($service['last_operation']['op_code'] == $data['opcode']) { $last_operation = array('month' => $data['month'], 'op_code' => $data['opcode'], 'sum' => $data['cost']); break; } } $popup_content = $_SERVER['DOCUMENT_ROOT'] . '/bill/widget/popups/popup.emp_pro.php'; include $_SERVER['DOCUMENT_ROOT'] . '/bill/widget/tpl.popup.php'; } ?> <span class="b-layout__txt b-layout__txt_padtop_10 b-layout__txt_fontsize_11 b-page__iphone"><a href="/payed-emp/" class="b-layout__link promo-link">Подробнее об услуге</a></span> </div>
if (date('i') % 15 == 0) { // проверка статусов платежей paymaster при возврате require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/pmpay.php"; $pm = new pmpay(); if (DEBUG) { $pm->setDebugUrl($GLOBALS['host'] . '/norisk2/admin/pm-server-test.php'); } $pm->checkRefund(); } if (SERVER === 'release') { /* * @todo: https://beta.free-lance.ru/mantis/view.php?id=29134#c87337 * require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/qiwipay.php"); $qiwipay = new qiwipay(); $qiwipay->checkBillsStatus($error); */ if (date('i') % 10 == 0) { // проверка статусов платежей paymaster require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/pmpay.php"; $pm = new pmpay(); $pm->checkInvoiced(); } } // запускаетс¤ в 0 и 1 минуту каждого часа с начала суток до 5 утра if (date('i') == 0 && date('H') >= 0 && date('H') <= 5) { $log = new log('minutly/' . SERVER . '-%d%m%Y[%H].log', 'w'); // разморозка ѕ–ќ $log->TRACE(payed::freezeUpdateProUsers()); } professions::autoProlongSpecs();
//$page_keyw = ''; break; case "projects": default: //if ($_SESSION['login'] == $name) { $inner = "setup/projects_inner.php"; $_in_setup = 1;} //else {$inner = "projects_inner.php";} $inner = "projects_inner.php"; $activ_tab = 1; $page = __paramInit('page', 'page', 'page', 1); break; } if ($_SESSION['p_ref']) { unset($_SESSION['p_ref']); } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; $is_pro = payed::CheckPro($user->login); $no_banner = !!$is_pro; $action = trim(__paramInit('string', 'action', 'action')); switch ($action) { case 'activated': $alert_message = "Аккаунт активирован"; break; case "prj_close": $kind = __paramInit('int', null, 'kind', 0); $prj_id = __paramInit('int', null, 'project_id'); $do_close = __paramInit('bool', null, 'do_close'); $projects = new projects(); if ($prj_id) { $error .= $projects->SwitchStatusPrj(get_uid(), $prj_id); } $location = "/users/{$name}/projects/?kind={$kind}" . ($do_close ? '&closed=1' : '');
<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/platipotom.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/PromoCodes.php"; if (isset($quickPRO_type) && $quickPRO_type == 'profi') { $quickPRO_proList = payed::getPayedPROFIList(); } else { $quickPRO_proList = payed::getPayedPROList(is_emp() ? 'emp' : 'frl'); } $promoCodes = new PromoCodes(); $quickPRO_redirect = ''; $quickpro_ok_default = 'quickpro_ok'; switch ($quickPRO_type) { case 'profi': $quickPRO_title = 'Покупка аккаунта PROFI'; $quickPRO_ok_close_btn = 'Закрыть'; $quickpro_ok_default = 'quickprofi_ok'; $quickpro_ok_title = 'Вы успешно купили аккаунт PROFI'; $quickpro_ok_subtitle = ''; break; case 'project': $quickPRO_title = 'Покупка аккаунта Pro для ответа на проект'; $quickPRO_ok_close_btn = 'Закрыть и ответить на проект'; $quickPRO_redirect = getFriendlyUrl('project', $project['id']); break; case 'promotion': $quickPRO_redirect = '/promotion/'; default: $quickPRO_title = 'Покупка аккаунта Pro'; $quickPRO_ok_close_btn = 'Закрыть';
<?php $rpath = "../"; $g_page_id = "0|5"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; session_start(); $uid = get_uid(false); $is_pro = payed::CheckPro($_SESSION['login']); $is_adm = false; // чтобы админ мог редактировать предложения по проектам if (hasPermissions('projects') && InGetPost('uid')) { $uid = InGetPost('uid'); $is_pro = payed::checkProByUid($uid); $is_adm = true; } $error = false; $err = ''; $pict_added = false; //die ("DUMP: " . var_export($_FILES, true)); if (isset($_POST['action']) && $_POST['action'] == 'add_pic' && is_array($_FILES['ps_attach'])) { $prj_id = isset($_POST['pid']) ? intval($_POST['pid']) : 0; $img = new CFile($_FILES['ps_attach']); if ($img->size > 0) { $dir = get_login($uid); // чтобы админ мог редактировать предложения по проектам if ($is_adm) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $user->GetUserByUID($uid);
if (!($page = __paramInit('int', 'page', NULL, NULL))) { $page = 1; $bPageDefault = true; } if ($page <= 0) { $page = 1; } if (!$pm_folder) { // пользовательские папки if ($cur_folder == -5) { $contacts = $msgs->GetContactsWithNote(get_uid(), $find); } else { $contacts = $msgs->GetContacts(get_uid(), $cur_folder, $find, $blogspp, ($page - 1) * $blogspp, $predefined_count); } } else { // автоматические папки для массовых рассылок личных менеджеров $contacts = $msgs->pmAutoFolderGetContacts(get_uid(), $pm_folder, $find); } $count = $predefined_count ? $predefined_count : sizeof($contacts); $pages = ceil($count / $blogspp); if (($count == 0 || $count < ($page - 1) * $blogspp) && !$bPageDefault || $pages == 1 && !$bPageDefault) { include ABS_PATH . '/404.php'; exit; } } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; $is_pro = payed::CheckPro($_SESSION['login']); $header = "../header.php"; $footer = "../footer.html"; $content = "content.php"; include "../template3.php";
/** * Вывод страницы /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; } }
<li class="b-menu__item"><a href="/service/" class="b-menu__link">Услуги сайта</a> → </li> <li class="b-menu__item"><a href="/payed/" class="b-menu__link">Аккаунт PRO</a> → </li> </ul> </div> <h1 class="b-page__title">Тестовый аккаунт PRO куплен</h1> <div class="b-fon b-fon_padbot_30"> <div class="b-fon__body b-fon__body_pad_10 b-fon__body_padleft_30 b-fon__body_fontsize_13 b-fon__body_bg_f0ffdf"> <div class="b-fon__txt b-fon__txt_padbot_5"><span class="b-icon b-icon_sbr_gok b-icon_margleft_-25"></span>Вы успешно приобрели тестовый профессиональный аккаунт.</div> <div class="b-fon__txt">Если у вас возникнут вопросы, обращайтесь в <a class="b-fon__link" href="https://feedback.fl.ru/">службу поддержки</a>.</div> </div> </div> <div class="b-layout__txt b-layout__txt_padbot_5">Тестовый аккаунт PRO на <span class="b-layout__txt b-layout__txt_bold">1 неделю</span> стоил <span class="b-layout__txt b-layout__txt_bold b-layout__txt_color_fd6c30"><?php echo $price = payed::GetProPrice(false, payed::get_opcode_action_test_pro()); ?> <?php echo ending($price, 'рубль', 'рубля', 'рублей'); ?> </span></div> <?php include $abs_path . '/teasers/include-teaser.php'; ?> </td> </tr> </table> </div>
/** * Проверяем не кончился ли уже про и не надо ли убрать значек с главной страницы. */ function checkProLast() { if ($_SESSION['pro_last'] && strtotime($_SESSION['pro_last']) < time()) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; $pro_last = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $pro_last['is_freezed'] ? false : $pro_last['cnt']; } }
<div class="b-layout__txt b-layout__txt_padbot_40">и отвечайте на проекты, конкурсы и вакансии без ограничений</div> <div class="b-layout__txt b-layout__txt_fontsize_22">Заполните <a href="/users/<?php echo $_SESSION['login']; ?> /setup/info/" class="b-layout__link">профиль</a>,</div> <div class="b-layout__txt b-layout__txt_padbot_40">чтобы работодатели смогли найти вас в каталоге фрилансеров</div> <div class="b-layout__txt b-layout__txt_fontsize_22">Подтвердите свою <a href="/promo/verification/" class="b-layout__link">личность</a>,</div> <div class="b-layout__txt b-layout__txt_padbot_40">чтобы вам доверяли Заказчики</div> <?php } else { ?> <div class="b-layout__txt b-layout__txt_fontsize_22">Приобретите <a href="/payed/" class="b-layout__link">аккаунт</a> <a href="/payed/" class="b-layout__link"><span title="PRO" class="b-icon b-icon__spro b-icon__spro_f"></span></a> за <span class="b-layout__txt_through b-layout__txt_color_d7d7d7"><?php echo payed::getPriceByOpCode(48); ?> </span> <?php echo payed::getPriceByOpCode(163); ?> рублей</div> <div class="b-layout__txt b-layout__txt_padbot_40">и отвечайте на проекты, конкурсы и вакансии без ограничений</div> <div class="b-layout__txt b-layout__txt_fontsize_22">Заполните <a href="/users/<?php echo $_SESSION['login']; ?> /setup/info/" class="b-layout__link">профиль</a>,</div> <div class="b-layout__txt b-layout__txt_padbot_40">чтобы работодатели смогли найти вас в каталоге фрилансеров</div> <div class="b-layout__txt b-layout__txt_fontsize_22 b-layout__txt_padbot_40">Найдите интересные <a href="/projects/?kind=1" class="b-layout__link">проекты</a>, <a href="/konkurs/" class="b-layout__link">конкурсы</a> и <a href="/projects/?kind=4" class="b-layout__link">вакансии</a></div> <div class="b-layout__txt b-layout__txt_fontsize_22">Подтвердите свою <a href="/promo/verification/" class="b-layout__link">личность</a>,</div> <div class="b-layout__txt b-layout__txt_padbot_40">чтобы вам доверяли Заказчики</div> <?php } ?> </div>
@($action = strip_tags(trim($_GET['action']))); if (!$action) { @($action = strip_tags(trim($_POST['action']))); } // определяем, был ли сброс массива POST if (!$action && ($switch || $change_au)) { $action = "switch_error"; } switch ($action) { case "change_au": // добавляем/изменяем антиюзера. $response = array(); $location = $_SESSION['ref_uri'] ? HTTP_PFX . $_SERVER["HTTP_HOST"] . urldecode($_SESSION['ref_uri']) : HTTP_PFX . $_SERVER["HTTP_HOST"] . "/"; $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['is_freezed'] ? false : $_SESSION['pro_last']['cnt']; $_SESSION['anti_pro_last'] = payed::ProLast($_SESSION['anti_login']); $_SESSION['anti_pro_last'] = $_SESSION['anti_pro_last']['is_freezed'] ? false : $_SESSION['anti_pro_last']['cnt']; if (!($uid = get_uid())) { header("Location: " . $location); exit; } $post_pwd = stripslashes($_POST['passwd']); $anti_login = __paramInit('string', NULL, 'a_login'); // получаем класс антиюзера. Он всегда противоположен классу юзера. $anti_class = is_emp() ? 'freelancer' : 'employer'; $anti = new $anti_class(); // запоминаем данные антиюзера. $anti->GetUser($anti_login, true, true); $anti_uid = $anti->uid; $anti_uname = $anti->uname; $anti_usurname = $anti->usurname;
/** * ВРЕМЕННАЯ * * Акция Альфа-банк: первые 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); /* } } */ } }
/** * Инициализация проекта * для пользователя в параметрах * * @param user $user * @return array */ public function initForUser($user) { if (!isset($user->uid) || !$user->uid) { return $this->destroy(); } $this->_uid = $user->uid; $this->_project['login'] = $user->login; $this->_project['uname'] = $user->uname; $this->_project['usurname'] = $user->usurname; $this->_project['user_id'] = $this->_uid; $this->_setPath(); $this->_project['is_pro'] = payed::checkProByUid($this->_uid) ? 't' : 'f'; return $this->getProject(); }
/** * Обработка и оплата операций * * @global type $DB * @param type $option * @return boolean */ function billingOperation($option, $transaction_id) { global $DB; $ok = false; $account = new account(); switch ($option['op_code']) { // Аккаунт ПРО у фрилансера case 48: case 49: case 50: case 51: case 76: // Удаляем операции по покупке ответов - публикуем ответы $prof = new payed(); $ok = $prof->SetOrderedTarif($this->uid, $transaction_id, 1, "Аккаунт PRO", $option['op_code'], $error); if ($ok) { $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['freeze_to'] ? false : $_SESSION['pro_last']['cnt']; $userdata = new users(); $_SESSION['pro_test'] = $userdata->GetField($this->uid, $error2, 'is_pro_test', false); $this->clearBlockedOperations(step_freelancer::OFFERS_OP_CODE); $step_frl = new step_freelancer(); $offers = $step_frl->getWizardOffers($this->uid, 'all', false); if ($offers) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $step_frl->log = $this->log; $step_frl->user = new users(); $step_frl->user->GetUserByUID($this->uid); $step_frl->transferOffers($offers); } $this->showProjectsFeedbacks(); } break; // Аккаунт ПРО у работодателя // Аккаунт ПРО у работодателя case 15: $prof = new payed(); $ok = $prof->SetOrderedTarif($this->uid, $transaction_id, 1, "Аккаунт PRO", $option['op_code'], $error); if ($ok) { $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['freeze_to'] ? false : $_SESSION['pro_last']['cnt']; $userdata = new users(); $_SESSION['pro_test'] = $userdata->GetField($this->uid, $error2, 'is_pro_test', false); } // Обновляем выбор цвета для проектов тк он для ПРО бесплатный $colorProjects = $this->updateColorProject(); $prj = new new_projects(); foreach ($colorProjects as $k => $project) { $delete_color[] = $project['op_id']; if ($project['country'] == null) { $project['country'] = 'null'; } if ($project['city'] == null) { $project['city'] = 'null'; } $project['name'] = addslashes($project['name']); $project['descr'] = addslashes($project['descr']); if ($project['logo_id'] <= 0) { $project['logo_id'] = 'null'; } $project['payed_items'] = $project['payed_items'] | '010'; $project['is_color'] = 't'; $prj->editPrj($project, false); } // Удаляем данные операции if ($delete_color) { $this->deleteDraftAccountOperation($delete_color); } break; // Публикация конкурса // Публикация конкурса case new_projects::OPCODE_KON: case new_projects::OPCODE_KON_NOPRO: require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_wizard_registration.php'; $drafts = new drafts(); $draft = $drafts->getDraft($option['parent_id'], $this->uid, 1); // Если еще не опубликован if (!$draft['prj_id']) { $project_id = $draft['id']; $error = $account->Buy($bill_id, $transaction_id, $option['op_code'], $this->uid, $option['descr'], $option['comment'], 1, 0); $ok = $bill_id > 0; if ($bill_id) { $color = $DB->val("SELECT id FROM draft_account_operations WHERE parent_id = ? AND op_type = 'contest' AND option = 'color' AND uid = ?", $project_id, wizard::getUserIDReg()); $draft['billing_id'] = $bill_id; $draft['folder_id'] = 'null'; $draft['payed'] = '0'; $draft['payed_items'] = '000'; if (is_pro() && $color > 0) { $draft['is_color'] = 't'; } else { $draft['is_color'] = 'f'; } $draft['win_date'] = date('d-m-Y', strtotime($draft['win_date'])); $draft['end_date'] = date('d-m-Y', strtotime($draft['end_date'])); $draft['is_bold'] = 'f'; $draft['user_id'] = $this->uid; if ($draft['country'] == null) { $draft['country'] = 'null'; } if ($draft['city'] == null) { $draft['city'] = 'null'; } $draft['name'] = addslashes($draft['name']); $draft['descr'] = addslashes($draft['descr']); if ($draft['logo_id'] <= 0) { $draft['logo_id'] = 'null'; } $prj = new new_projects(); $attachedfiles_tmpdraft_files = drafts::getAttachedFiles($option['parent_id'], 4); if ($attachedfiles_tmpdraft_files) { $attachedfiles_tmpdraft_files = array_map(create_function('$a', 'return array("id" => $a);'), $attachedfiles_tmpdraft_files); } if ($attachedfiles_tmpdraft_files) { $month = date('Ym'); $dir = 'projects/upload/' . $month . '/'; $files = step_wizard_registration::transferFiles($attachedfiles_tmpdraft_files, 'file_projects', $dir); } $spec = $draft["categories"]; $spec = explode("|", $spec); $spec = array(array('category_id' => $spec[0], 'subcategory_id' => $spec[1])); $prj->addPrj($draft, $files); $prj->saveSpecs($draft["id"], $spec); // смотрим были ли выбраны платные опции для опубликованного конкурса if ($draft['id'] != $project_id && $draft['id'] > 0) { if ($this->sleep[$project_id]) { foreach ($this->sleep[$project_id] as $k => $opt) { $opt['parent_id'] = $draft['id']; $this->billingOperation($opt); } } else { //Обновляем родителя на всякий случай $update = array("parent_id" => $draft['id']); $DB->update("draft_account_operations", $update, "parent_id = ? AND op_type = 'contest' AND uid = ?", $project_id, wizard::getUserIDReg()); $this->sleep_parent[$project_id] = $draft['id']; } $DB->update("draft_projects", array('prj_id' => $draft['id']), "id = ? AND uid = ?", $project_id, wizard::getUserIDReg()); } } } break; // Платный проект/конкурс // Платный проект/конкурс case 53: $prj = new new_projects(); if ($this->sleep_parent[$option['parent_id']]) { $option['parent_id'] = $this->sleep_parent[$option['parent_id']]; } $project = $prj->getProject($option['parent_id']); if (!$project['id']) { $this->sleep[$option['parent_id']][$option['id']] = $option; return true; } else { unset($this->sleep[$option['parent_id']]); } if ($project['country'] == null) { $project['country'] = 'null'; } if ($project['city'] == null) { $project['city'] = 'null'; } $project['name'] = addslashes($project['name']); $project['descr'] = addslashes($project['descr']); if ($project['logo_id'] <= 0) { $project['logo_id'] = 'null'; } $project['folder_id'] = 'null'; $items = array(); switch ($option['option']) { case 'top': $project['top_days'] = $option['op_count']; break; case 'color': $is_pay = $project['payed_items'] & '010'; if ($is_pay != '010') { $project['payed_items'] = $project['payed_items'] | '010'; $project['is_color'] = 't'; $items['color'] = true; if (is_pro()) { $is_payed = true; $prj->SavePayedInfo($items, $project['id'], null, $project['top_days']); $prj->editPrj($project, false); } } else { $is_payed = true; } break; case 'bold': $is_pay = $project['payed_items'] & '001'; if ($is_pay != '001') { $project['payed_items'] = $project['payed_items'] | '001'; $project['is_bold'] = 't'; $items['bold'] = true; } else { $is_payed = true; } break; case 'logo': $is_pay = $project['payed_items'] & '100'; if ($is_pay != '100') { $key = md5(microtime()); $prj = new tmp_project($key); $prj->init(1); $fu = new CFile($option['src_id']); $ext = $fu->getext(); $tmp_dir = $prj->getDstAbsDir(); $tmp_name = $fu->secure_tmpname($tmp_dir, '.' . $ext); $tmp_name = substr_replace($tmp_name, "", 0, strlen($tmp_dir)); $fu->table = 'file_projects'; $r = $fu->_remoteCopy($tmp_dir . $tmp_name); $project['payed_items'] = $project['payed_items'] | '100'; $project['logo_id'] = $fu->id; $items['logo'] = true; if ($option['extra']) { $project['link'] = $option['extra']; } } else { $is_payed = true; } break; } if (!$is_payed) { $error = $account->Buy($bill_id, $transaction_id, $option['op_code'], $this->uid, $option['descr'], $option['comment'], $option['ammount'], 0); $ok = $bill_id > 0; $project['billing_id'] = $bill_id; $prj->SavePayedInfo($items, $project['id'], $bill_id, $project['top_days']); $prj->editPrj($project, false); } else { $ok = true; } break; // Платные ответы на проекты // Платные ответы на проекты case 61: $answers = new projects_offers_answers(); $error = $answers->BuyByFM($this->uid, $option['op_count'], $transaction_id, 0); if (!$error) { $ok = true; $_SESSION['answers_ammount'] = $option['op_count']; // Публикуем ответы $step_frl = new step_freelancer(); $offers = $step_frl->getWizardOffers($this->uid, $option['op_count']); if ($offers) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $step_frl->log = $this->log; $step_frl->user = new users(); $step_frl->user->GetUserByUID($this->uid); $step_frl->transferOffers($offers); } } break; } return $ok; }
$next_months[$i]['by_e'] = $next30_sum['by_e'] + ceil($to_eom_sum['by_e'] * ($K_ym - 1)) + ($MSIZES[$i - 1] - 30) * ceil($next30_sum['by_e'] / 30); $next_months[$i]['by_f'] = $next30_sum['by_f'] + ceil($to_eom_sum['by_f'] * ($K_ym - 1)) + ($MSIZES[$i - 1] - 30) * ceil($next30_sum['by_f'] / 30); $next_months[$i]['by_u'] = $next30_sum['by_u'] + ceil($to_eom_sum['by_u'] * ($K_ym - 1)) + ($MSIZES[$i - 1] - 30) * ceil($next30_sum['by_u'] / 30); } else { $next_months[$i]['by_e'] = ceil($next_months[$i - 1]['by_e'] ? $next_months[$i - 1]['by_e'] * $K_ym : $next30_sum['by_e']); $next_months[$i]['by_f'] = ceil($next_months[$i - 1]['by_f'] ? $next_months[$i - 1]['by_f'] * $K_ym : $next30_sum['by_f']); $next_months[$i]['by_u'] = ceil($next_months[$i - 1]['by_u'] ? $next_months[$i - 1]['by_u'] * $K_ym : $next30_sum['by_u']); } if (($mc = ($next_months[$i]['by_e'] + $next_months[$i]['by_f'] + $next_months[$i]['by_u']) / $MSIZES[$i - 1]) > $cur_year_max_h) { $cur_year_max_h = $mc; } } } // if(!$u_has_prm) /////////////////////////////////////////////////////////////////////////////////// $PS_STEP_PRICE = 150; $pro_price = payed::GetProPrice(true); $bmCls = getBookmarksStyles(promotion::BM_COUNT, $bm); // Классы закладок. ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////output/////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// ?>
where from_id = ?i AND from_date + to_date > now()"; $DB->query($sql, $uid, $uid); } */ ?> <p> Чтобы имитировать окончание ПРО используйте такую ссылку beta.free-lance.ru/test/test-payed.php?login=login&attempt=1<br/> <pre> login - Логин пользователя которому необходимо автопродление attempt - Попытка автопродления (1 или 2) </pre> </p><?php if ($_GET['login']) { payed::checkAutoProTest($_GET['login'], intval($_GET['attempt'])); } ?> <hr> <p> Чтобы получить уведомление за <b>days</b> дней до окончания услуги beta.free-lance.ru/test/test-payed.php?user=login&service=pro&auto=1<br/> <pre> user - Логин пользователя которому необходимо автопродление service - По какому сервису уведомление (pro, firstpage) (если не задано по умолчанию pro) auto - если установлено в 1 значит автопродление включено, иначе 0 - выключено (если не задано по умолчанию 0) days - Дополнительный праметр дней, может принимать значение 1 или 3 (если не задано, по умолчанию 3) P.S: не может быть одновременно days = 1 и auto = 1 </pre> <form method="GET"> <select name="service">
} $_in_setup = 1; $fpath = ''; $inner = ''; if ($page != 'main') { $user_phone_block = user_phone::getInstance()->render(user_phone::PLACE_HEADER); } // Сообщение сверху страницы $alert_message = ''; if (is_emp($role)) { $fpath = "../employer/setup/"; include $fpath . "index.php"; exit; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; $is_pro = payed::CheckPro($login); $no_banner = !!$is_pro; $action = trim($_POST['action']); if (strtolower($user) == strtolower($login) && is_pro(true)) { $no_adv = true; } else { $no_adv = false; } switch ($page) { case "info": $inner = "inform_inner.php"; $activ_tab = 3; break; case "mailer": $inner = "mailer_inner.php"; $activ_tab = 0;
$showMainDiv = true; $footer_payed = true; $no_banner = true; $freelancer = new freelancer(); $is_allow = isAllowProfi(); if ($is_allow) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; $uid = get_uid(); $account = new account(); $account->GetInfo($uid, true); if (__paramInit('bool', 'quickprofi_ok', NULL, false)) { //Обновляем сессию $freelancer->GetUserByUID($uid); $_SESSION['is_profi'] = $freelancer->isProfi(); $pro_last = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $pro_last['is_freezed'] ? false : $pro_last['cnt']; } } $catalogList = $freelancer->getProfiCatalog(80); $maxFirstCLBlock = 90; $cntCatalogList = count($catalogList); $isMoreCatalogList = $cntCatalogList > $maxFirstCLBlock; $cntFirstCLBlock = $isMoreCatalogList ? $maxFirstCLBlock : $cntCatalogList; $page_title = "PROFI аккаунт - фриланс, удаленная работа на FL.ru"; $css_file = array('/css/block/b-icon/__cont/b-icon__cont.css'); $js_file = array('payed.js', 'billing.js'); $content = 'content.php'; $header = "../header.php"; $footer = "../footer.html"; include "../template3.php";
</div> <?php } ?> </h1> <?php include_once "tpl.setting.pro.php"; ?> <table class="b-layout__table b-layout__table_center b-layout__table_margbot_60"> <tr class="b-layout__tr"> <td class="b-layout__td"> <table class="b-layout__table b-layout__table_width_full"> <?php foreach (payed::getPayedPROList() as $pay) { if ($pay['is_test'] && $is_user_was_pro) { continue; } if (get_uid(false)) { $dcost = $pay['cost'] - round($account->sum, 2); } ?> <td class="b-layout__td b-layout__td_width_200 b-layout__td_padright_70" id="pro_payed_<?php echo $pay['opcode']; ?> "> <form action="/payed/buy.php" method="post" id="post"> <input type="hidden" name="mnth" value="1" /> <?php /* <input type="hidden" name="transaction_id" value="<?= get_uid(false) ? $account->start_transaction($uid, $tr_id) : 0;?>" /> */
require_once $_SERVER["DOCUMENT_ROOT"] . '/classes/stdf.php'; require_once $_SERVER["DOCUMENT_ROOT"] . '/classes/account.php'; require_once $_SERVER["DOCUMENT_ROOT"] . '/classes/payed.php'; require_once $_SERVER["DOCUMENT_ROOT"] . '/classes/users.php'; DB::setStandby('master', NULL); $uid = __paramInit("int", "uid", null, 0); $uid = intval($uid); $admin = 103; if ($uid > 0) { global $DB; //Есть ли такой незабаненый не про, заходивший в проследний раз более года назад? $targetUser = users::userWasInOldYear($uid); if (is_array($targetUser)) { //Даем про на неделю $account = new account(); $payed = new payed(); $op_code = 115; // 52 $tr_id = $account->start_transaction($admin); $interval = "7 days"; if ($targetUser["role"][0] == 1) { $interval = "1 month"; } $success = $payed->GiftOrderedTarif($bill_id, $gift_id, $uid, $admin, $tr_id, $interval, "Аккаунт PRO в подарок", $op_code); if (!$success) { $rpath = "./"; if (!$fpath) { $fpath = ""; } $header = ABS_PATH . "/header.new.php"; $footer = ABS_PATH . "/footer.new.html";
<?php require_once '../classes/stdf.php'; require_once '../classes/account.php'; require_once '../classes/session.php'; require_once '../classes/payed.php'; $users = $DB->rows("\n SELECT uid, login, EXTRACT(epoch FROM to_date)/86400 as days \n FROM orders \n INNER JOIN employer e ON e.uid = orders.from_id\n WHERE tarif = 76;\n "); echo "Execute recovery PRO accounts for " . count($users) . " users.\n"; $payed = new payed(); $sess = new session(); foreach ($users as $user) { $transaction_id = account::start_transaction($user['uid']); $payed->AdminAddPRO($user['uid'], $transaction_id, $user['days'] / 7 * 17 . ' days'); $session->UpdateProEndingDate($user['login']); }
$log->TRACE($e->getMessage()); } // Чистим сессии загруженны, но не использованных файлов $log->TRACE(attachedfiles::clearOldSessions()); //------------------------------------------------------------------------------ // Рассылка ПРО о том что ПРО закончится через день // Вызываем для тех у кого включена опция и для тех у кого нет // но сообщение в итоге шлем всем одинаковое см getPROEnding // так как пока автопродление неиспользуется $log->TRACE(payed::getPROEnding(true, 3)); // За 3 дня для тех у кого включено автопродление $log->TRACE(payed::getPROEnding(true, 1)); // За 1 день для тех у кого включено автопродление $log->TRACE(payed::getPROEnding(false, 3)); // За 3 дня для тех у кого не включено автопродление $log->TRACE(payed::getPROEnding(false, 1)); // За 1 день для тех у кого не включено автопродление //@todo: пока отключаем уведомления об автопродлении ПРО так как отключили автопродление //@todo: тут еще и пытается продлить //$log->TRACE( payed::checkAutoPRO()); // рассылаем email для тех у кого включено автопродление PRO и он закончится через 1 день // @todo: пока автопродление не используется // @todo: кстати непонятно зачем отдельный метод если getPROEnding справяется с этой задачей? //$log->TRACE( payed::AlertPROEnding() ); //------------------------------------------------------------------------------ // Функция автоподьема проектов если в них в течении 2х дней не было ни одного ответа $log->TRACE(projects::autoSetTopProject()); // Раз в час пересчитываем счетчики сообществ (пересчитываем только сообщество "Общение") $log->TRACE(commune::recalcThemesCountCommunes(commune::COMMUNE_BLOGS_ID)); if (date('H') == 1) { $log->TRACE($mail->SendWarnings());
public function __construct($is_emp = false, $options = null) { $this->is_emp = $is_emp; $this->list = payed::getPayedPROList($this->is_emp ? 'emp' : 'frl'); parent::__construct($options); }
<?php $login = '******'; error_reporting(E_ERROR); require_once realpath(dirname(__FILE__) . '/../') . '/classes/stdf.php'; require_once realpath(dirname(__FILE__) . '/../') . '/classes/account.php'; require_once realpath(dirname(__FILE__) . '/../') . '/classes/session.php'; require_once realpath(dirname(__FILE__) . '/../') . '/classes/payed.php'; require_once realpath(dirname(__FILE__) . '/../') . '/classes/users.php'; $ses = new session(); $user = $DB->row("\n SELECT uid, login\n FROM users\n WHERE login='******';\n "); $payed = new payed(); $sess = new session(); $transaction_id = account::start_transaction($user['uid']); $payed->AdminAddPRO($user['uid'], $transaction_id, '2 days'); $sess->UpdateProEndingDate($user['login']); echo date('H:m:s') . " - {$login}\n\n";
</div> <h1 class="b-page__title">Оплата заказа на сумму <span class="b-layout__txt b-layout__txt_color_fd6c30 b-layout__txt_fontsize_34"><?php echo to_money($payed_sum > 10 ? $payed_sum : 10, 2); ?> руб.</span></h1> <div class="b-layout__one b-layout__one_width_25ps b-layout__one_padbot_30 b-layout__right_float_right b-layout__one_width_full_ipad b-layout_padbot_10_ipad"> <?php include $_SERVER['DOCUMENT_ROOT'] . '/bill/widget/tpl.score.php'; ?> </div> <div class="b-layout__one b-layout__one_float_left b-layout__one_width_72ps b-layout__one_width_full_ipad"> <?php $pro_payed = payed::getPayedPROList(is_emp($bill->user['role']) ? 'emp' : 'frl'); foreach ($pro_payed as $p) { $pro_type[$p['opcode']] = $p; } foreach ($bill->list_service as $service) { include $_SERVER['DOCUMENT_ROOT'] . '/bill/payment/services/' . billing::getTemplateByService($service['service']); } $payment_sum = $bill->payed_sum['pay']; //@todo везде поменять надо будет ?> <h2 class="b-layout__title b-layout__title_padtop_30">Способ платежа</h2> <div class="b-layout__txt b-layout__txt_fontsize_15 b-layout__txt_bold b-layout__txt_padbot_20"> <?php if ($bill->type_menu_block == 'psys') { ?>