/** * Поднять проект в закрепленных - обновить top_from * * @param int $id ID проекта * @param int $uid UID работодателя * @param array $error возвращает сообщения об ошибках * @return bool true - успех, false - провал */ function topPublicProject($id, $uid, &$error) { global $DB; $error = NULL; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php"; $account = new account(); $tr_id = $account->start_transaction($uid); if (!$tr_id) { $account->view_error("Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала."); $error['noxact'] = 1; return false; } $account->GetInfo($uid, true); $kind = self::GetField($id, 'kind'); $is_konkurs = self::isKonkurs($kind); $descr = 'Поднятие закрепленного ' . ($is_konkurs ? 'конкурса' : 'проекта') . " #{$id}"; $price = self::getPriceByCode(is_pro() ? self::OPCODE_TOP : self::OPCODE_TOP_NOPRO); // Оплата с бонусного счета, если достаточно средств if ($account->bonus_sum > $price) { $descr .= ' (покупка с бонусного счета)'; if (!($error['buy'] = $account->BuyFromBonus($bill_id, $tr_id, is_pro() ? self::OPCODE_TOP : self::OPCODE_TOP_NOPRO, $uid, $descr, $descr))) { $sql = "UPDATE projects SET top_from = now() WHERE id = ?i"; if ($DB->query($sql, $id)) { return true; } } return false; } // оплата с обычного счета, если достаточно средств if ($account->sum < $price) { $error['nomoney'] = $price - $account->sum; return false; } if (!($error['buy'] = $account->Buy($bill_id, $tr_id, is_pro() ? self::OPCODE_TOP : self::OPCODE_TOP_NOPRO, $uid, $descr, $descr))) { $sql = "UPDATE projects SET top_from = now() WHERE id = {$id}"; if ($DB->query($sql, $id)) { return true; } } return false; }
exit; $action = trim($_POST['action']); $mnth = intval(trim($_POST['mnth'])); if ($_POST['oppro'] == 76) { header("Location: ./"); exit; } if (!$action || !$mnth) { header("Location: ./"); exit; } $prof = new payed(); $tr_id = $_REQUEST['transaction_id']; if (!$tr_id) { $account = new account(); $account->view_error("Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала."); } if ($mnth > 0) { $oppro = intval(trim($_POST['oppro'])); if ($oppro <= 0) { $oppro = is_emp() ? 15 : 48; } $ok = $prof->SetOrderedTarif($user_id, $tr_id, $mnth, "Аккаунт PRO", $oppro, $error); } if (!$ok) { $_SESSION['bill.GET']['error'] = $error; header('Location: /bill/fail/'); exit; } else { $content = "content.php"; $js_file = array('payed.js');