$binded_to = $freelancer_binds->getBindDateStop($uid, $prof_use, $is_spec); if ($allow_frl_bind || $binded_to) { quickPaymentPopupFrlbind::getInstance()->init(array('prof_id' => $prof_id, 'prof_group_id' => $prof_group_id, 'prof_use' => $prof_use, 'is_spec' => $is_spec, 'ammount' => $freelancer_binds->getPrice($prof_use, $is_spec, (bool) $binded_to, $uid), 'date_stop' => $binded_to, 'autoshow' => $popup == 'bind_prolong', 'addprof' => $is_spec && $freelancer_binds->needAddProf($uid, $prof_use))); } $is_bind_first = $freelancer_binds->isBindFirst($uid, $prof_use, $is_spec); if ($binded_to && !$is_bind_first) { quickPaymentPopupFrlbindup::getInstance()->init(array('prof_id' => $prof_use, 'is_spec' => $is_spec, 'ammount' => $freelancer_binds->getPriceUp($prof_use, $is_spec, $uid), 'autoshow' => $popup == 'bind_up')); } $is_binded_hide = $binded_to && !$freelancer_binds->isAllowBind($uid, $prof_use, $is_spec, false); //------------------------------------------------------------------------------ unset($_SESSION['payed_frl_' . md5($_SERVER['REQUEST_URI'])]); $first_pages = array(); if ($prof_group_id) { $first_pages = firstpage::GetAll($prof_group_id, array(), true); } else { $first_pages = firstpage::GetAll($prof_id ?: -1, array()); } $_SESSION['payed_frl_' . md5($_SERVER['REQUEST_URI'])] = $first_pages ?: array(); $_SESSION['payed_frl_prof_id'] = $prof_group_id ? 0 : ($prof_id ?: -1); $_SESSION['payed_frl_prof_group_id'] = $prof_group_id; if ($popup == 'firstpage_prolong') { $_SESSION['firstpage_popup'] = 'prolong'; } elseif ($popup == 'firstpage_up') { $_SESSION['firstpage_popup'] = 'up'; } else { $_SESSION['firstpage_popup'] = ''; } $header = "../header.php"; $footer = "../footer.html"; $js_file[] = '/css/block/b-text/b-text.js'; $js_file[] = '/css/block/b-popup/b-popup.js';
} ?> <p> Чтобы имитировать окончание Платного размещения используйте такую ссылку beta.free-lance.ru/test/test-payed.php?fflogin=login&attempt=1<br/> <pre> fflogin - Логин пользователя которому необходимо автопродление attempt - Попытка автопродления (1 или 2) </pre> </p> <hr> <?php if ($_GET['fflogin']) { if (intval($_GET['attempt']) == 1) { firstpage::autoPayedReminder(1, 'days', $_GET['fflogin']); } else { firstpage::autoPayedReminder(1, 'hour', $_GET['fflogin']); } echo "<strong style='color:green'>Имитация окончания Платного размещения</strong>"; } //if ($_GET['firstpage'] == 1) { // firstpage::autoPayedReminder($_GET['firstpage'], 'days', true); //} // //if ($_GET['firstpage'] == 1 && isset($_GET['hour'])) { // firstpage::autoPayedReminder($_GET['firstpage'], 'hour', true); //} // ?> <!--<p>Чтобы проверить резервы вручную используйте ссылку beta.free-lance.ru/test/test-payed.php?check_reserve=1</p>--><?php // //if ($_GET['check_reserve']) {
<?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'; $users = $DB->rows("\n SELECT\n DISTINCT from_id, login\n FROM\n orders\n INNER JOIN\n users ON orders.from_id = users.uid\n WHERE\n (from_date <= '2011-05-27 00:00:00') AND (from_date + to_date >= '2011-05-23 00:00:00')\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['from_id']); $payed->AdminAddPRO($user['from_id'], $transaction_id, '3 days'); $session->UpdateProEndingDate($user['login']); } $users = $DB->rows("\nSELECT\n\tDISTINCT user_id, profession\nFROM\n\tusers_first_page\nWHERE\n\t(from_date <= '2011-05-27 00:00:00') AND (from_date + to_date >= '2011-05-23 00:00:00')\n"); echo "Execute recovery pay places for " . count($users) . " users.\n"; $fp = new firstpage(); foreach ($users as $user) { $transaction_id = account::start_transaction($user['user_id']); $fp->AdminAddFP($user['user_id'], $transaction_id, $user['profession'], '3 days'); }
/** * Вывод страницы /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; } }
/** * Начисление неначисленных подарков). */ public function failedGifts() { $db = new DB('master'); $sql = 'SELECT * FROM __tmp_failed_gifts WHERE processed = 0 order by billing_id, op_id'; $res = $db->rows($sql); $admin_uid = 103; // $admin_uid = 1; foreach ($res as $row) { $op_code = $row['op_code']; $payment_sys = $row['payment_sys']; $trs_sum = $row['trs_sum']; $gid = $row['uid']; $dep_id = $row['billing_id']; $is_emp = $row['is_emp']; // акция с Webmoney --------------------- if ($op_code == 12) { if ($payment_sys == 10 || $payment_sys == 2) { // WMR if (!$is_emp) { // подарок фрилансеру if ($trs_sum >= 2000 && $trs_sum < 5000) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; $payed = new payed(); $bill_id = $gift_id = 0; $tr_id = $this->start_transaction($admin_uid); $payed->GiftOrderedTarif($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1', 'Аккаунт PRO в подарок при пополнении счета с помощью WebMoney', 91); } elseif ($trs_sum >= 5000) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/firstpage.php'; $bill_id = $gift_id = 0; $tr_id = $this->start_transaction($admin_uid); $payed = new firstpage(); $payed->GiftOrdered($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1 week', 93, 'Первая страница в подарок при пополнении счета с помощью WebMoney', 'Первая страница в подарок при пополнении счета с помощью WebMoney'); } } else { // подарок работодателю if ($trs_sum >= 1000 && $trs_sum < 5000) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; $payed = new payed(); $bill_id = $gift_id = 0; $tr_id = $this->start_transaction($admin_uid); $payed->GiftOrderedTarif($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1', 'Аккаунт PRO в подарок при пополнении счета с помощью WebMoney', 92); } elseif ($trs_sum >= 5000) { $bill_id = $gift_id = 0; $tr_id = $this->start_transaction($admin_uid); $error = $this->Gift($bill_id, $gift_id, $tr_id, 93, $admin_uid, $gid, 'Платный проект в подарок при пополнении счета с помощью WebMoney', ''); if ($error === 0) { // Добавляем подарочное бабло на бонусный счет. $this->depositBonusEx($dep_id, 85, 'Начисление денег на платный проект в подарок', '', 40); } } } } else { // WMZ - пока нет } } //акция банк/сбер if ($op_code == 12 && ($payment_sys == 4 || $payment_sys == 5)) { $_opstr = $payment_sys == 5 ? 'через квитанцию Сбербанка' : 'через безналичный расчет'; if (!$is_emp) { // подарок фрилансеру if ($trs_sum >= 2000 && $trs_sum < 5000) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; $_opcode = $payment_sys == 5 ? 95 : 99; $payed = new payed(); $bill_id = $gift_id = 0; $tr_id = $this->start_transaction($admin_uid); $payed->GiftOrderedTarif($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1', "Аккаунт PRO в подарок при пополнении счета {$_opstr}", $_opcode); } elseif ($trs_sum >= 5000) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/firstpage.php'; $_opcode = $payment_sys == 5 ? 97 : 101; $bill_id = $gift_id = 0; $tr_id = $this->start_transaction($admin_uid); $payed = new firstpage(); $payed->GiftOrdered($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1 week', $_opcode, "Первая страница в подарок при пополнении счета {$_opstr}", "Первая страница в подарок при пополнении счета {$_opstr}"); } } else { // подарок работодателю if ($trs_sum >= 1000 && $trs_sum < 5000) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; $_opcode = $payment_sys == 5 ? 96 : 100; $payed = new payed(); $bill_id = $gift_id = 0; $tr_id = $this->start_transaction($admin_uid); $payed->GiftOrderedTarif($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1', "Аккаунт PRO в подарок при пополнении счета {$_opstr}", $_opcode); } elseif ($trs_sum >= 5000) { $bill_id = $gift_id = 0; $tr_id = $this->start_transaction($admin_uid); $_opcode = $payment_sys == 5 ? 97 : 101; $error = $this->Gift($bill_id, $gift_id, $tr_id, $_opcode, $admin_uid, $gid, "Платный проект в подарок при пополнении счета {$_opstr}", "Платный проект в подарок при пополнении счета {$_opstr}"); if ($error === 0) { // Добавляем подарочное бабло на бонусный счет. $this->depositBonusEx($dep_id, 85, 'Начисление денег на платный проект в подарок', '', 40); } } } } var_dump($row['op_id']); $db->update('__tmp_failed_gifts', array('processed' => 1), 'op_id = ?', $row['op_id']); } }
text-decoration:underline; display:inline !important; float:none !important; font-size:10px !important; } #menu_active .prf-this{ color: #039 !important; } #menu_active .prf-this span{ color: #039 !important; } </style> <h2 class="fl2_header" style="margin-bottom:5px">Каталог</h2> <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/firstpage.php"; $pUStat = firstpage::ShowStats(); ?> <span style="color: #333; font-family: Tahoma, sans-serif;"> <b style="color:#6BB24B"><?php echo $pUStat['u']['count']; ?> </b> <?php echo $pUStat['u']['phrase']; ?> <br/></span> <?php if (!$_SESSION['uid'] || is_emp() && !$_SESSION['anti_uid']) { ?> <div class="fl2_register_to_do"> <a href="/registration/?type=frl" class="org">Зарегистрироваться</a> как фрилансер </div> <?php
/** * Информация о успешно прошедшей операции * * @param array $data - Информация об операции * @return array информация */ function getSuccessInfo($data) { global $DB; if (in_array($data['op_code'], array(17, 84, 85))) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/present.php"; $present = new present(); return $present->getSuccessInfo($data); } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/professions.php"; $uid = get_uid(false); $sql = "SELECT o.*, u.login FROM users u, users_first_page o WHERE u.uid = ?i AND o.user_id = u.uid AND o.billing_id = ?i"; $asc = $DB->row($sql, $uid, $data['id']); $profs[] = $asc['profession']; $prof_info = professions::GetProfessions($profs); $poss = firstpage::GetPositions($uid, $profs); $is_up = $poss[$asc['profession']] > 1; $login_pp = "{$asc['login']}_pp"; $linktopage = "/freelancers/#{$login_pp}"; if ($prof_info[$profs[0]]["id"] == -1) { $linktopage = "/#{$login_pp}"; } elseif ($prof_info[$profs[0]]["id"]) { $linktopage = "/freelancers/{$prof_info[$profs[0]]["link"]}/#{$login_pp}"; } $name = "Платные места в разделах (<a class=\"b-layout__link b-layout__link_bold\" href=\"{$linktopage}\">{$prof_info[$asc['profession']]['name']}</a> — {$poss[$asc['profession']]}-е место" . ($is_up ? " <a class=\"b-layout__link b-layout__link_bold\" href=\"/firstpage/position.php?cur_prof={$asc['profession']}\">подняться выше</a>?)" : ")"); $data['ammount'] = abs($data['ammount']); $suc = array("date" => $data['op_date'], "name" => $name, "descr" => "", "sum" => "{$data['ammount']} руб."); return $suc; }
<?php /** * get * http://***?type=firstpage&page=1&pagesize=10 */ require_once 'Controllers/firstpage.class.php'; require_once 'Controllers/defaultpage.class.php'; require_once 'libs/Response.class.php'; // route $type = isset($_GET['type']) ? $_GET['type'] : 'default'; switch ($type) { case 'firstpage': $firstpage = new firstpage(); return $firstpage->get(); break; default: $res = new response(); return response::getEncode(200, 'request type error', ''); break; }
/** * Покупка места на главной или в каталоге для для произвольного пользователя. * */ private function setCatalogOrFpPlace() { global $DB; $uid = (int) $_POST['uid']; $role = $DB->val("SELECT role FROM users WHERE uid = {$uid}"); $role = $role[0]; if ($role !== '0') { $this->jsonError('Пользователь не найден или является работодателем'); } $date = $_POST['date']; $f = preg_match("#[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}#", $date, $m); if (!$f) { $date = false; } $count = (int) $_POST['weeks']; if (!$count) { $this->jsonError('Некорректное значение недель'); } if ($uid) { $sIds = $_POST['ids']; $aIds = explode(',', $sIds); $fp_request = array(); $valid = false; for ($i = 0; $i < count($aIds); ++$i) { $id = str_replace('-', '', $aIds[$i]); if (!preg_match("#[\\D]#", $id, $m) && !($aIds[$i][0] == '0' && strlen($aIds[$i]) > 1)) { $valid = true; } $fp_request[$aIds[$i]] = $count; } if (!$valid) { $this->jsonError('Некорректное значение специальности в списке'); } $sProlong = $_POST['a']; $aProlong = explode(',', $sProlong); $valid = true; if (strlen($sProlong) > 0) { for ($i = 0; $i < count($aProlong); ++$i) { $id = str_replace('-', '', $aProlong[$i]); if (preg_match("#[\\D]#", $id, $m) || $aProlong[$i][0] == '0' && strlen($aProlong[$i]) > 1) { $valid = false; } } if (!$valid) { $this->jsonError('Некорректное значение специальности в списке автопродлеваемых'); } } else { $valid = false; } $account = new account(); $transaction_id = $account->start_transaction($uid, $tr_id); $prof = new firstpage(); foreach ($aIds as $prof_id) { $prof->delAutoPayed($uid, $prof_id); } $rewriteFromDate = false; if ($date && $date != date('Y-m-d')) { $date .= ' ' . date('H:i:s'); //.".".date("u"); $query = "DELETE FROM users_first_page \n WHERE user_id = {$uid} \n AND from_date > '{$date}'\n AND profession IN ({$sIds})\n "; $res = $DB->query($query); $num = pg_affected_rows($res); if ($num) { $rewriteFromDate = true; } } $st = $prof->SetOrdered($uid, $transaction_id, $fp_request, $null, $err); if ($st == 0) { $this->jsonError($err); } if ($rewriteFromDate) { $recs = array(); foreach ($aIds as $id) { $query = "SELECT id FROM users_first_page WHERE user_id = {$uid} AND first_post = \n (SELECT max(first_post) FROM users_first_page WHERE user_id = {$uid} AND profession = {$id})"; $recId = $DB->val($query); if ($recId) { $recs[] = $recId; } } if (count($recs)) { $r = implode(',', $recs); $query = "UPDATE users_first_page SET from_date = '{$date}' WHERE id IN ({$r})"; $DB->query($query); } } if ($valid) { foreach ($aProlong as $prof_id) { $prof->setAutoPayed($uid, $prof_id); } } $this->jsonOk(); } }