예제 #1
0
 /**
  * Поднять проект в закрепленных - обновить 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;
 }
예제 #2
0
파일: buy.php 프로젝트: Nikitian/fl-ru-damp
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');