/** * Конструктор класса. * * @param int $uid ИД Пользователя */ public function __construct($uid = null) { global $DB; if ($uid === null) { $uid = get_uid(false); } $this->uid = $uid; $account = new account(); $account->GetInfo($uid, true); $this->account = $account; $this->_db = $DB; $this->initWallet(); }
/** * Основная функция для пополнения. В нее нужно передать POST данны, которые пришли от веб-кошелька. * * @param array массив с данным от webpay * * @return успех */ public function income($data) { global $DB; $this->_fields = array(); $id = $DB->insert('webpay_log', array('request' => serialize($data)), 'id'); if (empty($data['amount']) || empty($data['userid']) || empty($data['userid_extra']) || empty($data['paymentid']) || empty($data['key']) || empty($data['paymode'])) { $this->_error($id, self::ERR_DATA); return false; } $amount = floatval($data['amount']); $login = (string) $data['userid_extra']; $this->_fields['payment_id'] = $paymentid = (string) $data['paymentid']; if ($amount <= 0) { $this->_error($id, self::ERR_AMOUNT); return false; } $this->_fields['amount'] = $amount; if ($data['key'] != md5($data['amount'] . $data['userid'] . $data['paymentid'] . onlinedengi_cards::SECRET)) { $this->_error($id, self::ERR_SECRET); return false; } $user = new users(); $user->GetUser($login); if (empty($user->uid)) { $this->_error($id, self::ERR_USER); return false; } $this->_fields['user_id'] = $user->uid; if ($DB->val('SELECT COUNT(*) FROM webpay_log WHERE payment_id = ?', $paymentid)) { $this->_success($id, true); } else { $account = new account(); $account->GetInfo($user->uid); $comment = 'Пополнение через Веб-кошелек'; if ($account->deposit($op_id, $account->id, $amount, $comment, self::PAYMENT_SYS_CODE, $amount)) { $this->_error($id, self::ERR_DEPOSIT); return false; } $this->_fields['billing_id'] = $op_id; $this->_success($id); } return true; }
function delAttach($id, $login) { $objResponse = new xajaxResponse(); if (!hasPermissions('users')) { $login = $_SESSION['login']; } $user = new users(); $user->GetUser($login); if ($user->uid) { $account = new account(); $account->GetInfo($user->uid); } if (!$account->id) { $err = 'Ошибка'; } //if(!sbr::isFileInReqvHistory($user->uid,$id)) { if (!$account->delAttach($id)) { $err = 'Ошибка'; } //} $objResponse->call('delFinAttach', $id, $login, 1, $err); return $objResponse; }
/** * Конструктор класса, инициализируем аккаунт пользователя и так же данные необходимые для работы страницы. */ public function __construct() { session_start(); $uid = get_uid(); // закрываем доступ на страницу для теста, доступ только админам if (!hasPermissions('users')) { //header("Location: /bill/"); // Если пользователь не админ //exit; } if (!$uid && $_GET['pg'] != '/bill/alphabank/') { header('Location: /fbd.php'); // Если пользователь не авторизован, то посылаем на данную страницу exit; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php'; if (is_emp()) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr.php'; $sbr = sbr_meta::getInstance(); front::og('tpl')->sbr_reserved = $sbr->getReserved(); } $account = new account(); $account->GetInfo(get_uid()); $this->account = $account; $_SESSION['ac_sum'] = $account->sum; $_SESSION['bn_sum'] = $account->bonus_sum; $this->uid = $uid; front::og('tpl')->footer_bill = true; front::og('tpl')->main_css = '/css/bill.css'; front::og('tpl')->uid = $uid; // ИД пользователя front::og('tpl')->account = $account; // Аккаунт для биллинга front::og('tpl')->month_name = array(1 => 'Январь', 2 => 'Февраль', 3 => 'Март', 4 => 'Апрель', 5 => 'Май', 6 => 'Июнь', 7 => 'Июль', 8 => 'Август', 9 => 'Сентябрь', 10 => 'Октябрь', 11 => 'Ноябрь', 12 => 'Декабрь'); front::og('tpl')->name_page = $this->name_page; front::og('tpl')->no_banner = !!is_pro(); front::og('tpl')->g_page_id = '0|27'; }
$exrates = new exrates(); if ($action == 'add') { $sLogin = $_POST['login']; $nSummR = floatval($_POST['summ']); $nStamp = strtotime($_POST['date'] . ' ' . $_POST['time']); $oUser = new users(); $oUser->GetUser($sLogin); if ($oUser->uid) { if ($nSummR > 0) { if (intval($nStamp)) { $nRate = $exrates->GetField(51, $err, 'val'); $nSummFM = round($nSummR, 2); $sAdmin = 'Запись добавил: ' . $_SESSION['login']; $comments = "Безналичный перевод для физ.лиц, логин {$oUser->login}, Альфа-банк"; $sDate = date('c', $nStamp); if ($account->GetInfo($oUser->uid, true) && !($err = $account->depositEx($account->id, $nSummFM, $sAdmin, $comments, 12, $nSummR, 11, $sDate))) { // ВРЕМЕННАЯ АКЦИЯ! ------------- // ВРЕМЕННАЯ ЗАКОМЕНТЕНО! :) ------------- // $account->alphaBankGift( $nSummR, $sDate, $oUser->uid, $oUser->login ); //------------------------------- // обновляем сессию юзера $session = new session(); $session->UpdateProEndingDate($oUser->login); $_SESSION['success'] = 'ok'; $sReferer = $_SERVER['HTTP_REFERER']; $sReferer = preg_match('~siteadmin/alpha~i', $sReferer) ? $sReferer : '/siteadmin/alpha/'; header('Location: ' . $sReferer); exit; } } else { $sError = 'Дата указана не верно';
/** * Сохраняет временный проект в базу. * * @param integer $buyer_id ид. юзера-покупателя проекта. Если указан, то проект будет куплен за его счет (например, для админов). * @param mixed &$proj сюда сохранится информация о проекте после его сохранения * @return integer|string 0 в случае успешной покупки или текст ошибки. */ function saveProject($buyer_id = NULL, &$proj, $promo_codes = array()) { $price = 0; // Если проект новый добаляется, то надо отослать уведомление if (!$this->isEdit()) { $need_send_email = true; } else { $need_send_email = false; } $operations = array(); if ($ammount = $this->getAmmount()) { $buyer_id = $buyer_id ? $buyer_id : $this->_uid; $account = new account(); if (!$account->GetInfo($buyer_id, true)) { return 'Ошибка в получении информации по счету.'; } $is_pro = is_pro(true, $this->_project["user_id"]); $price = $this->getPrice($items); if ($this->isKonkurs()) { if ($items['contest']) { $operations['contest'] = array('op_code' => $is_pro ? self::OPCODE_KON : self::OPCODE_KON_NOPRO, 'op_code_bns' => $is_pro ? self::OPCODE_KON_BNS : self::OPCODE_KON_BNS_NOPRO, 'ammount' => 1, 'comment' => $this->getOperationComment('contest')); } } if ($this->isVacancy()) { if ($items['office']) { $operations['office'] = array('op_code' => $this->getVacancyOpCode(), 'op_code_bns' => self::OPCODE_PAYED_BNS, 'ammount' => 1, 'comment' => $this->getOperationComment('office')); } } $services = array('top', 'logo', 'urgent', 'hide'); foreach ($services as $service) { if ($items[$service]) { $operations[$service] = array('op_code' => self::getOpCodeByService($service), 'ammount' => $items[$service], 'comment' => $this->getOperationComment($service)); } } foreach ($operations as $service => $operation) { $bill_id = 0; $this->_transactionId = $account->start_transaction($buyer_id, $this->_transactionId); if (!isset($operation['op_code_bns'])) { $operation['op_code_bns'] = $operation['op_code']; } $descr = trim($operation['comment'], '&'); if ($this->_project['billing_id']) { $descr .= ' - дополнение к операции #' . $this->_project['billing_id']; } if ($account->bonus_sum >= $price) { $error = $account->BuyFromBonus($bill_id, $this->_transactionId, $operation['op_code_bns'], $buyer_id, "{$descr} за счет подарка", "{$operation['comment']} за счет подарка", $operation['ammount'], true); if ($error) { return $error; } } else { $error = $account->Buy($bill_id, $this->_transactionId, $operation['op_code'], $buyer_id, $descr, $operation['comment'], $operation['ammount'], 0, isset($promo_codes[$service]) ? $promo_codes[$service] : 0); if ($error) { return $error; } } if (!$bill_id) { return 'Не хватает денег. ' . $account->sum . ' из ' . $price; } $this->account_operation_id = $bill_id; $operations[$service]['bill_id'] = $bill_id; } } $prePrj = $this->_preDb($price, $bill_id); $success = $this->isEdit() ? $this->editPrj($this->_project, $this->_attach, array_reverse($this->getCategories())) : $this->addPrj($this->_project, $this->_attach, array_reverse($this->_categories)); if (!$this->isEdit()) { foreach ($operations as $service => $operation) { $account->updateComment($this->getOperationComment($service), $operation['bill_id'], array($operation['op_code'], $operation['op_code_bns'])); } } $proj = $this->_project; if (!$success) { $this->_postDbFailed($prePrj, $bill_id, $buyer_id); return $error ? $error : 'Error'; } $this->SavePayedInfo($items, $this->_project['id'], $bill_id, $topDays ? $topDays : 1); $this->_postDbSuccess(); if (!$_SESSION['quickprjbuy_ok_id']) { $_SESSION['quickprjbuy_ok_id'] = $this->_project['id']; } return 0; }
/** * Информацию по документообороту СБР для админки. * * @param int $scheme тип схем сделок. * @param array $filter фильтр * @param int $page номер страницы * @param string $dir сортировка ASC|DESC * @param int $dir_col поле сортировки. * @param int $page_count вернет всего кол-во строк. * * @return array */ public function getDocsFlow($scheme = sbr::SCHEME_AGNT, $filter = null, $page = 1, $dir = 'DESC', $dir_col = 0, &$page_count = null) { $dir = $dir == 'DESC' ? 'DESC' : 'ASC'; $limit = self::PAGE_SA_SIZE; $offset = ($page - 1) * $limit; $where = $this->_buildFilterPeriod('ss.arch_closed_time', $filter); $page_count = 1; $emp_upload_docs_cond = sbr::DOCS_TYPE_ACT | sbr::DOCS_TYPE_ARB_REP; // документы, после загрузки которых выводим работодателя в док-те. $frl_upload_docs_cond = sbr::DOCS_TYPE_ACT; if ($scheme) { if ($scheme != -1) { $where[] = "ss.arch_closed_time > NOW()::date - interval '6 months'"; $scheme_cond = "AND s.scheme_type = {$scheme}"; if ($scheme == sbr::SCHEME_PDRD || $scheme == sbr::SCHEME_PDRD2) { $scheme_cond = "AND ( s.scheme_type = {$scheme} OR s.scheme_type = " . sbr::SCHEME_PDRD2 . ')'; } } $docs_cond = 'AND su.docs_received = false AND su.is_removed = false'; } else { if ($filter['archive'] == 't') { $where[] = "ss.arch_closed_time < NOW()::date - interval '6 months'"; } if ($filter['archive'] == 'f') { $where[] = "ss.arch_closed_time >= NOW()::date - interval '6 months'"; } } if ($fv = pg_escape_string(trim($filter['contract_num']))) { $where[] = "'СБР-'||ss.sbr_id||'-'||ss.num ILIKE '%{$fv}%'"; } if ($fv = pg_escape_string(trim($filter['user']))) { $where[] = "(u.login ILIKE '%{$fv}%' OR u.uname ILIKE '%{$fv}%' OR u.usurname ILIKE '%{$fv}%')"; } if ($fv = pg_escape_string(trim($filter['name']))) { $where[] = "ss.name ILIKE '%{$fv}%'"; } if ($fv = round((double) str_replace(array(' ', ','), array('', '.'), $filter['act_sum']), 2)) { $where[] = "round(su.act_lcomm+su.act_lintr, 2) = {$fv}"; } if ($fv = (int) $filter['act_sys']) { $where[] = "ss.act_sys = {$fv}"; } if ($fv = $filter['has_docs']) { $where[] = "su.docs_received = '{$fv}'"; } if ($fv = $filter['has_act']) { $where[] = '((su.uploaded_docs & ' . sbr::DOCS_TYPE_COPY_ACT . ") <> 0) = '{$fv}'"; } if ($fv = $filter['has_fct']) { $where[] = '((su.uploaded_docs & ' . sbr::DOCS_TYPE_COPY_FACTURA . ") <> 0) = '{$fv}'"; } if ($fv = $filter['has_reqv']) { $where[] = "COALESCE(sr.is_filled[sr.form_type], false) = '{$fv}'"; } if ($fv = $filter['is_removed']) { $where[] = "su.is_removed = '{$fv}'"; } if ($scheme == 0) { $where[] = ' ( ss.scheme_type <> ' . sbr::SCHEME_LC . ' ) '; // исключаем Аккредитив } if ($where) { $where = 'WHERE ' . implode(' AND ', $where); } $leftPdrd = 'WHERE sp.completed IS NOT NULL OR su.user_id IS NOT NULL'; if ($scheme == SBR::SCHEME_PDRD || $scheme == sbr::SCHEME_PDRD2) { $leftPdrd = "LEFT JOIN \n sbr_stages_users su1 \n ON su1.stage_id = wss.id \n AND su1.user_id = wss.frl_id \n AND (su1.uploaded_docs & {$frl_upload_docs_cond}) <> 0 \n WHERE su1.user_id IS NOT NULL OR su.user_id IS NOT NULL\n "; } $from = "\n FROM (\n WITH w_sbr_stages AS (\n SELECT ss.*, s.emp_id, s.frl_id, s.scheme_id, s.scheme_type, s.cost_sys, \n arb.resolved, arb.frl_percent\n FROM sbr s\n INNER JOIN\n sbr_stages ss\n ON ss.sbr_id = s.id\n LEFT JOIN sbr_stages_arbitrage arb\n ON arb.stage_id = ss.id\n WHERE s.reserved_id IS NOT NULL\n AND s.norisk_id IS NULL\n {$scheme_cond}\n )\n SELECT wss.*, wss.emp_id as user_id, wss.cost_sys as act_sys,\n wss.closed_time as arch_closed_time\n FROM w_sbr_stages wss \n LEFT JOIN\n sbr_stages_payouts sp\n ON sp.stage_id = wss.id\n AND sp.user_id = wss.frl_id\n LEFT JOIN\n sbr_stages_users su\n ON su.stage_id = wss.id\n AND su.user_id = wss.emp_id\n AND (su.uploaded_docs & {$emp_upload_docs_cond}) <> 0\n {$leftPdrd} \n UNION ALL\n SELECT wss.*, wss.frl_id, sp.credit_sys,\n sp.requested as arch_closed_time\n FROM w_sbr_stages wss\n INNER JOIN\n sbr_stages_payouts sp\n ON sp.stage_id = wss.id\n AND sp.user_id = wss.frl_id\n ) as ss\n INNER JOIN\n sbr_stages_users su\n ON su.stage_id = ss.id\n AND su.user_id = ss.user_id\n {$docs_cond}\n INNER JOIN\n users u\n ON u.uid = ss.user_id\n LEFT JOIN\n sbr_reqv sr\n ON sr.user_id = ss.user_id\n "; $sql = "\n SELECT ss.*, sr.*, ss.id as stage_id,\n su.uploaded_docs, su.docs_received, su.act_lcomm, su.act_lintr, su.act_lndfl, su.act_lnp, su.act_lcomm + su.act_lintr as act_sum, su.act_notnp, su.is_removed,\n sp.credit_sys, sp.credit_sum,\n u.login, u.uname, u.usurname, u.role,\n COALESCE(docs.publ_time, ss.arch_closed_time) as act_upload_time\n {$from}\n LEFT JOIN\n sbr_stages_payouts sp\n\n ON sp.stage_id = ss.id\n AND sp.user_id = ss.user_id\n \n --LEFT JOIN sbr_docs docs ON docs.stage_id = ss.id AND docs.access_role IN (1,2) AND docs.type IN (1,8) AND docs.is_deleted = false AND docs.owner_role = 0\n LEFT JOIN (\n SELECT DISTINCT ON (stage_id, access_role) stage_id, d.publ_time, f.modified, d.access_role FROM sbr_docs d\n INNER JOIN file_sbr f ON f.id = d.file_id\n WHERE \n is_deleted = false AND access_role IN (1,2)\n AND owner_role = 0\n ORDER BY stage_id, access_role, publ_time DESC\n ) docs ON docs.stage_id = ss.id AND (docs.access_role = substring(u.role, 1, 1)::integer + 1)\n \n {$where}\n ORDER BY {$this->form_cols['docsflow'][$dir_col][1][$dir]}\n LIMIT {$limit} OFFSET {$offset}\n "; /* LEFT JOIN ( SELECT DISTINCT ON (stage_id) stage_id, d.publ_time, f.modified FROM sbr_docs d INNER JOIN sbr s ON s.id = d.sbr_id INNER JOIN file_sbr f ON f.id = d.file_id WHERE type IN (1,8) --AND status = 4 AND is_deleted = false AND access_role IN (1,2) AND owner_role = 0 ORDER BY stage_id, publ_time DESC ) docs ON docs.stage_id = ss.id */ if ($res = pg_query(self::connect(), $sql)) { if ($ret = pg_fetch_all($res)) { $account = new account(); foreach ($ret as &$row) { if ($row['uploaded_docs']) { $access_role = is_emp($row['role']) ? self::DOCS_ACCESS_EMP : self::DOCS_ACCESS_FRL; if ($docs = sbr_meta::getDocs("WHERE sd.stage_id = '{$row['id']}' AND (sd.access_role & {$access_role}) = {$access_role} AND sd.is_deleted = false", null, true)) { $row['uploaded_docs_a'] = array(); foreach ($docs as $doc) { $row['uploaded_docs_a'][$doc['type']] = $doc; } } } // это потом переделать $account->GetInfo($row['user_id']); $row['attaches'] = $account->getAllAttach(); } $sql = "SELECT COUNT(1) as cnt {$from} {$where}"; $mem = new memBuff(); if ($rows = $mem->getSql($err, $sql, 60)) { $page_count = $rows[0]['cnt']; } } } return $ret; }
/** * Отдает HTML для Редактирование предложения по проектам * * @param object $objResponse xajaxResponse * @param string $rec_id идентификатор записи * @param string $rec_type тип записи * @param array $aParams дополнительные параметры с UID отправителя. остальные - опционально * @return string */ function _admEditPrjOfferParseForm(&$objResponse, $rec_id = '', $rec_type = '', $aParams = array()) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/portfolio.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers_answers.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers_dialogue.php'; $offer = projects_offers::GetPrjOfferById($rec_id); $dialogue = new projects_offers_dialogue(); $user = new users(); $account = new account(); $portfolio = new portfolio(); $professions = professions::GetSelFilProf($offer['user_id']); $professions = $professions ? $professions : array(); $cur_prof = $professions ? $professions[0]['id'] : 0; $op_sum = projects_offers_answers::COLOR_FM_COST; if (!($portf_works = $portfolio->GetPortfProf($offer['user_id'], $cur_prof))) { $portf_works = array(); } $user->GetUserByUID($offer['user_id']); $account->GetInfo($offer['user_id']); $offer['dialogue'] = $dialogue->GetDialogueForOffer($offer['id']); ob_start(); include_once $_SERVER['DOCUMENT_ROOT'] . '/user/adm_edit_tpl/projects_offers.php'; $sHtml = ob_get_contents(); ob_end_clean(); // текст $sOnReady = "if(document.getElementById('adm_edit_descr')) document.getElementById('adm_edit_descr').value = (\$('adm_edit_descr_source')? \$('adm_edit_descr_source').value : null);"; // работы ----------------------------------- $offer['portfolio_work_1_id'] = $offer['portf_id1']; $offer['portfolio_work_2_id'] = $offer['portf_id2']; $offer['portfolio_work_3_id'] = $offer['portf_id3']; $offer['portfolio_work_1'] = $offer['pict1']; $offer['portfolio_work_2'] = $offer['pict2']; $offer['portfolio_work_3'] = $offer['pict3']; $offer['portfolio_work_1_prev_pict'] = $offer['prev_pict1']; $offer['portfolio_work_2_prev_pict'] = $offer['prev_pict2']; $offer['portfolio_work_3_prev_pict'] = $offer['prev_pict3']; $offer['cost_from'] = round($offer['cost_from'], 2); $offer['cost_to'] = round($offer['cost_to'], 2); $use = array(); $sWorks = 'adm_edit_content.works_ids = new Array(); adm_edit_content.works_names = new Array(); adm_edit_content.works_prevs = new Array(); adm_edit_content.works_picts = new Array(); adm_edit_content.works_links = new Array();'; if ($portf_works) { foreach ($portf_works as $key => $value) { $use[$value['id']] = 1; $sWorks .= "adm_edit_content.works_ids[{$value['id']}] = '{$value['id']}';\n adm_edit_content.works_names[{$value['id']}] = '" . htmlspecialchars(addslashes(trim($value['name']))) . "';\n adm_edit_content.works_prevs[{$value['id']}] = '" . trim($value['prev_pict']) . "';\n adm_edit_content.works_picts[{$value['id']}] = '" . trim($value['pict']) . "';\n adm_edit_content.works_links[{$value['id']}] = '" . trim($value['link']) . "';"; } } for ($i = 1; $i < 4; $i++) { if ($user_offer['portf_id' . $i] > 0 && !isset($use[$user_offer['portf_id' . $i]])) { $sId = $user_offer['portf_id' . $i]; $sWorks .= "adm_edit_content.works_ids[{$sId}] = '{$sId}';\n adm_edit_content.works_prevs[{$sId}] = '" . trim($user_offer['prev_pict' . $i]) . "';\n adm_edit_content.works_picts[{$sId}] = '" . trim($user_offer['pict' . $i]) . "';"; } } if ($offer['portfolio_work_1'] != '') { $sWorks .= "adm_edit_content.prjOfferAddWork({$offer['portfolio_work_1_id']}, '{$offer['portfolio_work_1']}', '{$offer['portfolio_work_1_prev_pict']}');"; } if ($offer['portfolio_work_2'] != '') { $sWorks .= "adm_edit_content.prjOfferAddWork({$offer['portfolio_work_2_id']}, '{$offer['portfolio_work_2']}', '{$offer['portfolio_work_2_prev_pict']}');"; } if ($offer['portfolio_work_3'] != '') { $sWorks .= "adm_edit_content.prjOfferAddWork({$offer['portfolio_work_3_id']}, '{$offer['portfolio_work_3']}', '{$offer['portfolio_work_3_prev_pict']}');"; } //------------------------------------------- $objResponse->assign('h4_adm_edit', 'innerHTML', 'Редактировать предложения по проекту'); $objResponse->assign('div_adm_edit', 'innerHTML', $sHtml); $objResponse->script("\$('div_adm_reason').setStyle('display', 'none');"); $objResponse->script("adm_edit_content.editMenuItems = ['', 'Основное', 'Файлы'];"); $objResponse->script('adm_edit_content.edit();'); $objResponse->script("adm_edit_content.userLogin = '******';"); $objResponse->script($sOnReady); $objResponse->script($sWorks); $objResponse->script('xajax_getAdmEditReasons(' . admin_log::ACT_ID_EDIT_PRJ_OFFERS . ');'); }
if (!$error_type && $error['attach']) { $error_type = 'attach'; } if (!$error_type && ($error['win_date'] || $error['end_date'])) { $error_type = 'date'; } if (!$error) { //для пользователя $account_sum = $account->sum; $account_bonus_sum = $account->bonus_sum; //для модератора $view_user_login = ''; if (hasPermissions("projects")) { $uid = $tmpPrj->getAuthorId(); $view_account = new account(); $view_account->GetInfo($uid); $account_sum = $view_account->sum; $account_bonus_sum = $view_account->bonus_sum; $view_user_login = $tmpPrj->getAuthorLogin(); } if ($action == 'save') { $_POST['logo_id'] = $_POST['logo_file_id']; if ($PDA && !$tmpPrj->getCategories()) { $cats = array(); $cats[] = array('category_id' => $project['category'], 'subcategory_id' => $project['subcategory']); $tmpPrj->setCategories($cats); } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/billing.php"; $bill = new billing($uid); $bill->clearOrders();
/** * Зачислить деньги после списания с резерва (или арбитража) (СБР) * * @param integer $fid uid кому зачисляем * @param float $sum сумма * @param integer $money_type тип денег * @param string $descr комменты к операции * @param string $errors возвращает массив ошибок * @param integer $op_code код операции * @param string $comments комменты к операции для юзера. * @return integer id операции в account_operations */ function TransferReserved($fid, $sum, $money_type, $descr, &$errors, $op_code = 38, $comments = NULL) { global $DB; $user_account = new account(); $user_account->GetInfo($fid); //Если в ФМ, то надо пополнять сразу $ammount = $money_type == 0 ? $sum : 0; $frl_accept_id = $DB->insert('account_operations', array('billing_id' => $user_account->id, 'op_code' => $op_code, 'ammount' => $ammount, 'descr' => $descr, 'comments' => $comments ? $comments : NULL, 'payment_sys' => $money_type, 'trs_sum' => $sum), 'id'); // количество операций $_SESSION['account_operations'] = intval($_SESSION['account_operations']) + 1; return $frl_accept_id; }
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancer.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/rating.php"; $stretch_page = true; $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');
/** * Возвращает максимальную сумму покупки, проверив, покупал ли юзер * что-нибудь через Плати потом ранее. * * @param type $bill_id ИД счета * * @return int */ public function getMaxPrice($bill_id = 0) { $maxPrice = self::PRICE_MAX; if ($this->is_pro) { $maxPrice = self::PRICE_MAX_PRO; } else { $uid = get_uid(false); if ($uid > 0) { $memBuff = new memBuff(); if ($maxPriceSaved = $memBuff->get('platipotom_max_price_' . $uid)) { return $maxPriceSaved; } else { if (!$bill_id) { $account = new account(); $account->GetInfo($uid, true); $bill_id = $account->id; } $sql = 'SELECT id FROM account_operations WHERE op_code = 12 AND payment_sys = ?i AND billing_id = ?i'; $operation_id = $this->db()->val($sql, self::PAYMENT_CODE, $bill_id); if ($operation_id) { $maxPrice = self::PRICE_MAX_MORE; } $memBuff->set('platipotom_max_price_' . $uid, $maxPrice); } } } return $maxPrice; }
public function actionIndex() { $limit = 20; $do = __paramInit('string', 'do', 'do', ''); $page = __paramInit('int', 'page', 'page', 1); $filter = array(); $filter_default = array('date' => date('d.m.Y', strtotime('-1 month')) . ' - ' . date('d.m.Y')); switch ($do) { case 'factura_delete': $nums = __paramInit('array', NULL, 'num', null); $this->billInvoicesAdminModel->deleteFactura($nums); break; case 'factura_update': $invoice_id = __paramInit('int', NULL, 'invoice_id', null); $file = $_FILES['new_file']; $this->billInvoicesAdminModel->updateFactura($invoice_id, $file); break; case 'factura': $nums = __paramInit('array', NULL, 'num', null); $dates = __paramInit('array', NULL, 'date', null); $this->billInvoicesAdminModel->addFactura($nums, $dates); break; case 'filter': $filter['do'] = $do; $filter['login'] = __paramInit('string', 'login', 'login', ''); $filter['date'] = __paramInit('string', 'date', 'date', null); break; //Операция зачисления средств по счету //Операция зачисления средств по счету case 'pay': require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php'; $sums = __paramInit('array', NULL, 'sum', null); //@todo: слишком толстый контроллер //все ниже нужно было определить в модель $account = new account(); $user = new users(); if ($sums) { $sAdmin = 'Запись добавил: ' . @$_SESSION['login']; $sDate = date('c'); foreach ($sums as $user_id => $invoices) { $user->GetUserByUID($user_id); if (!$user->uid || !$account->GetInfo($user->uid, true) || empty($invoices)) { continue; } $bill = new billing($user->uid); foreach ($invoices as $invoice_id => $sum) { $account_sum = $account->sum; if (!is_numeric($sum) || $sum <= 0 || $account->sum + $sum < 0) { continue; } $comments = sprintf("Безналичный перевод по счету Б-%06d", $invoice_id); if (!$account->depositEx2($acc_op_id, $account->id, $sum, $sAdmin, $comments, 12, $sum, 4, $sDate)) { $this->billInvoicesAdminModel->update($invoice_id, array('acc_op_id' => $acc_op_id)); //Автоматическая покупка услуги погашения задолженности if ($account_sum < 0) { $payed_sum = abs($account_sum); $option = array('acc_sum' => $payed_sum); $billReserveId = $bill->addServiceAndCheckout(135, $option); if ($billReserveId) { $bill->buyOrder($billReserveId); } } } } } $this->redirect('.'); } break; } $this->billInvoicesAdminModel->setPage($limit, $page); $list = $this->billInvoicesAdminModel->setFilter($filter)->getInvoices(); $count = $this->billInvoicesAdminModel->getInvoicesCnt(); $filter_query = ''; if (empty($filter)) { $filter = $filter_default; } else { $filter_query = http_build_query($filter) . '&'; } $this->render('index', array('list' => $list, 'limit' => $limit, 'page' => $page, 'page_count' => $count, 'filter_query' => $filter_query, 'filter' => $filter)); }
/** * Совершает выплату юзеру по данному этапу СБР. * Выплата -- это отметка, что деньги реально выплачены. * * @param integer $user_id ид. юзера, которому предназначается выплата. * @return boolean успешно? */ function payoutAgnt($user_id, pskb $pskb, pskb_lc $pskb_lc) { setlocale(LC_ALL, 'en_US.UTF-8'); if (!$this->getPayouts($user_id)) { return false; } if ($this->payouts[$user_id]['completed']) { return false; } $account = new account(); $account->GetInfo($user_id); $credit_sys = $this->payouts[$user_id]['credit_sys']; $lc = $pskb->getLC(true); $acc = $user_id == $this->sbr->emp_id ? $lc['accCust'] : $lc['accPerf']; switch ($credit_sys) { case exrates::BANK: $descr = "Безнал на счет: {$acc}"; break; case exrates::YM: $descr = "Яндекс.Деньги на кошелек: {$acc}"; break; case exrates::WMR: $descr = "WMR на кошелек: {$acc}"; break; case exrates::WEBM: $descr = "Вывод на Веб-кошелек"; break; case exrates::CARD: $descr = "Безнал на счет пластиковой карты"; break; default: return !($this->error = 'Неверная валюта'); } $this->sbr->getScheme(); $percent = 1; if ($this->payouts[$user_id]['is_arbitrage'] == 't') { $this->getArbitrage(); $percent = abs((int) ($user_id == $this->sbr->emp_id) - $this->arbitrage['frl_percent']); } $iex = $credit_sys . $this->sbr->cost_sys; if (!$this->exrates) { $this->sbr->getExrates(); } $credit_sum = $this->payouts[$user_id]['credit_sum']; $debit_sum = round($credit_sum * $this->sbr->exrates[$iex], 2); $d_descr = 'Списание ' . ($percent == 1 ? '' : 100 * $percent . '% (арбитраж) ') . "резерва «Безопасной Сделки» (этап #{$this->id})"; $sbr = sbr_meta::getInstanceLocal($user_id); $sbr->initFromId($this->data['sbr_id'], false, false); $comments = sbr_meta::view_cost($credit_sum, $credit_sys) . ', ' . $sbr->getContractNum(); $d_comments = sbr_meta::view_cost($debit_sum, $this->sbr->cost_sys) . ', ' . $sbr->getContractNum(); if (($debit_id = $account->CommitReserved($sbr->emp_id, $this->sbr->reserved_id, $d_descr, sbr::OP_DEBIT, $debit_sum, $d_comments)) && ($credit_id = $account->TransferReserved($user_id, $credit_sum, $credit_sys - 1, $descr, $errors, sbr::OP_CREDIT, $comments))) { $sql = "\n UPDATE sbr_stages_payouts\n SET debit_id = {$debit_id},\n credit_id = {$credit_id},\n completed = now(),\n state = '{$pskb_lc->state}',\n \"stateReason\" = '{$pskb_lc->stateReason}',\n bank_completed = '{$pskb_lc->date}'\n WHERE stage_id = {$this->id}\n AND user_id = {$user_id}\n\n AND completed IS NULL\n RETURNING *\n "; if ($res = pg_query(self::connect(), $sql)) { $this->payoutUpdateState($pskb_lc); $docs = array(); $is_emp_arb = $this->status == sbr_stages::STATUS_ARBITRAGED && $this->arbitrage['resolved'] && floatval($this->arbitrage['frl_percent']) == 0; if ($this->sbr->scheme_type == sbr::SCHEME_LC && !$is_emp_arb) { if ($doc_file = $this->generateEmpAgentReport($doc_err, $rep_num)) { // отчет агента. $docs[] = array('stage_id' => $this->id, 'file_id' => $doc_file->id, 'num' => $rep_num, 'status' => sbr::DOCS_STATUS_PUBL, 'access_role' => sbr::DOCS_ACCESS_EMP, 'owner_role' => 0, 'type' => sbr::DOCS_TYPE_AGENT_REP); if ($doc_file = $this->generateEmpAct($doc_err, $doc_num, $rep_num)) { // акт работодателя по агентской схеме (он же отчет об арбитраже, если был арбитраж). $docs[] = array('stage_id' => $this->id, 'file_id' => $doc_file->id, 'num' => $doc_num, 'status' => sbr::DOCS_STATUS_PUBL, 'access_role' => sbr::DOCS_ACCESS_EMP, 'owner_role' => 0, 'type' => sbr::DOCS_TYPE_ACT); } } } elseif (($this->sbr->scheme_type == sbr::SCHEME_PDRD || $this->sbr->scheme_type == sbr::SCHEME_PDRD2) && !$is_emp_arb) { if ($doc_file = $this->generateArbReportPdrdEmp($doc_err)) { // отчет арбитража по договору подряда для работодателя. $docs[] = array('stage_id' => $this->id, 'file_id' => $doc_file->id, 'status' => sbr::DOCS_STATUS_PUBL, 'access_role' => sbr::DOCS_ACCESS_EMP, 'owner_role' => 0, 'type' => sbr::DOCS_TYPE_ARB_REP); } } if (count($docs)) { foreach ($docs as $doc) { $ok = $this->sbr->addDocR($doc); } } $this->payouts[$user_id] = pg_fetch_assoc($res); return true; } } if ($debit_id && !$credit_id) { $account->Del($user_id, $debit_id); } return false; }
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"; if (is_release()) { exit; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/qiwipay.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/billing.php"; $qiwipay = new qiwipay(get_uid(false)); if (isset($_POST['cancel'])) { $back_url = $_SESSION['referer']; unset($_SESSION['referer']); header("Location: {$back_url}"); exit; } elseif (isset($_POST['success'])) { $sum = $_SESSION['post_payment']['sum']; $account = new account(); $account->GetInfo($qiwipay->uid, true); $bill = $DB->row("SELECT * FROM qiwi_account WHERE account_id = ? order by id desc LIMIT 1", $account->id); $error = $qiwipay->completeBill($error, $bill, $sum); var_dump($error); var_dump($DB->sql); exit; header("Location: /bill/"); exit; } $bill = new billing(get_uid(false)); $bill->test = true; $bill->setPaymentMethod('qiwipurse'); $created = $bill->error; $_SESSION['post_payment'] = $_POST; $_SESSION['referer'] = $_SERVER['HTTP_REFERER']; ?>
// Тестовое оплата услуг через Qiwi require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"; if (is_release()) { exit; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php"; $account = new account(); if (isset($_POST['cancel'])) { $back_url = $_SESSION['referer']; unset($_SESSION['referer']); header("Location: {$back_url}"); exit; } elseif (isset($_POST['success'])) { $sum = $_SESSION['post_payment']['sum']; $account = new account(); $account->GetInfo($_SESSION['post_payment']['ok_f_uid']); //$descr = "OKPAY #".$_SESSION['post_payment']['ok_txn_id']." на кошелек ".$_SESSION['post_payment']['ok_receiver_wallet']." OKPAYID: ".$_SESSION['post_payment']['ok_payer_id']." сумма - ".$_SESSION['post_payment']['ok_item_1_price'].","; //$descr .= " обработан ".$_SESSION['post_payment']['ok_txn_datetime'].", счет - ".$_SESSION['post_payment']['ok_f_bill_id']; $descr = "OKPAY #11 на кошелек OK460571733 OKPAYID: 1111 сумма - " . $_SESSION['post_payment']['ok_item_1_price'] . ","; $descr .= " обработан " . date("Y-m-d H:i:s") . ", счет - " . $_SESSION['post_payment']['ok_f_bill_id']; $account->deposit($op_id, $_SESSION['post_payment']['ok_f_bill_id'], $_SESSION['post_payment']['ok_item_1_price'], $descr, 14, $_SESSION['post_payment']['ok_item_1_price'], 12); header("Location: /bill/"); exit; } $_SESSION['post_payment'] = $_POST; $_SESSION['referer'] = $_SERVER['HTTP_REFERER']; ?> <h2>Тестовая оплата OKPAY</h2> <p> Оплата услуг аккаунт #<?php
/** * Обновляем деньги у пользователя по его логину * * @param string $login Логин пользователя * @return type */ function UpdateAccountSum($login) { if (!$login) { return; } $s = $this->get($login); if ($s) { $session_data = $this->read($s['sid']); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php"; $user = new users(); $user->GetUser($login); $account = new account(); $account->GetInfo($user->uid); $session_data = preg_replace("/ac_sum\\|s:\\d{1,}:\".*\"/U", "ac_sum|s:" . strlen($account->sum) . ":\"{$account->sum}\"", $session_data); $session_data = preg_replace("/ac_sum\\|d:\\d+?;/U", "ac_sum|s:" . strlen($account->sum) . ":\"{$account->sum}\";", $session_data); $session_data = preg_replace("/bn_sum\\|s:\\d{1,}:\".*\"/U", "bn_sum|s:" . strlen($account->bonus_sum) . ":\"{$account->bonus_sum}\"", $session_data); $this->set($s['sid'], $session_data, 7200); } }
/** * Проверить наличие финансовой информации * * @param type $uid * @return boolean */ public function isValidUserReqvs($uid, $is_emp = false) { if (isset($this->is_valids[$uid])) { return $this->is_valids[$uid]; } $reqvs = $this->getUserReqvs($uid); if (!$reqvs || !$reqvs['form_type']) { return false; } $reqv = $reqvs[$reqvs['form_type']]; //@todo: использую существующий метод вместо своего $errors = sbr::checkRequired($reqvs['form_type'], $reqvs['rez_type'], $reqv, $is_emp); $is_valid = empty($errors); //Если фрилансер физик и не резидент //то проверяем есть ли скан паспорта //@todo: это доп.проверка так как на странице финансов это поле обязательно //то возможно данные были заполнены еще до ввода скана в обязаловку //Позже после того как пометим всех нерезидентов у которых нет сканов //как не корректные финансы - проверку можно убрать if ($is_valid && !$is_emp && $reqvs['form_type'] == sbr::FT_PHYS) { require_once ABS_PATH . "/classes/account.php"; $account = new account(); $account->GetInfo($uid, true); $is_valid = $account->isExistAttach(); if (!$is_valid) { session::setFlashMessage(account::MSG_UPLOAD_REQ, 'isValidUserReqvs'); } } //если исполнитель беженец то проверяем действительны ли еще у него документы if ($is_valid && !$is_emp && in_array($reqvs['rez_type'], array(sbr::RT_REFUGEE, sbr::RT_RESIDENCE))) { $is_valid = isset($reqv['idcard_to']) && !empty($reqv['idcard_to']) ? strtotime($reqv['idcard_to']) > strtotime('+ 1 day') : false; if (!$is_valid) { session::setFlashMessage(account::MSG_UPLOAD_OLD, 'isValidUserReqvs'); } } /* $reqv = array_filter($reqv, function($value){ return $value !== null && !empty($value); }); $valid_keys = array_keys($reqv); $req_keys_more = array(); $req_keys = array( 'fio', 'birthday', 'mob_phone' ); switch($reqvs['form_type']) { case sbr::FT_PHYS: $req_keys_more = array( 'idcard_ser', 'idcard', 'idcard_by', 'address_reg', 'address' ); break; case sbr::FT_JURI: $req_keys_more = array( 'full_name', 'address_jry' ); if($reqvs['rez_type'] == sbr::RT_RU) { $req_keys_more[] = 'type'; } break; } $req_keys = array_merge($req_keys, $req_keys_more); $is_valid = (count(array_intersect($req_keys, $valid_keys)) == count($req_keys)); */ $this->is_valids[$uid] = $is_valid; return $is_valid; }
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php'; $uid = get_uid(false); $employer = new employer(); $employer->GetUserByUID($uid); $account = new account(); $account->GetInfo($uid); $_SESSION['ac_sum'] = $account->sum; $_SESSION['ac_sum_rub'] = $account->sum_rub; $_SESSION['bn_sum'] = $account->bonus_sum; //Формируем проект $tmpPrj = new tmp_project('key'); $tmpPrj->setEdit(true); $tmpPrj->setProjectField('kind', 1); $tmpPrj->setProjectField('descr', 'Описание проекта для оплаты с разными op_code'); $tmpPrj->setProjectField('name', 'Проект для оплаты с разными op_code'); $tmpPrj->setProjectField('agreement', 1); $tmpPrj->setProjectField('priceby', 1); $tmpPrj->setProjectField('budget_type', 1); $cats[] = array('category_id' => 12, 'subcategory_id' => 120); $tmpPrj->setCategories($cats); //Добавляем ему купленную опцию Срочный
exit; } $tid = $bill->tid; $reqv = new reqv_ordered(); if ($tid) { $has_reqv = $reqv->GetRow($tid, hasPermissions('bank') && hasPermissions('adm') ? '' : " AND user_id='" . get_uid() . "'"); } if (!$reqv->id) { header("Location: /403.php"); exit; } $sum = $reqv->ammount; //if (is_admin()||is_admin_sm()) { if (get_uid(0) != $reqv->user_id && hasPermissions('bank')) { $acc = new account(); $acc->GetInfo($reqv->user_id); $acc_num = $acc->id; } else { $acc_num = $bill->acc['id']; } $billCode = 'Б-' . $acc_num . '-' . ($reqv->bill_no + 1); if ($reqv->sbr_id) { $sbr = new sbr_emp($reqv->user_id); if ($sbr->initFromId($reqv->sbr_id, false, false, NULL, false)) { $contract_num = $sbr->getContractNum(); $billCode = 'Б-' . $contract_num; $sbr_nds = $sbr->getCommNds($sbr_comm); } } $ord_num = $reqv->id; $sum = round($sum, 2);
} if ($fsocket == true) { $header = 'POST /ipn-verify.html HTTP/1.0' . "\r\n" . 'Host: www.okpay.com' . "\r\n" . 'Content-Type: application/x-www-form-urlencoded' . "\r\n" . 'Content-Length: ' . strlen($request) . "\r\n" . 'Connection: close' . "\r\n\r\n"; @fputs($fp, $header . $request); $string = ''; while (!@feof($fp)) { $res = @fgets($fp, 1024); $string .= $res; if ($res == 'VERIFIED' || $res == 'INVALID' || $res == 'TEST') { $result = $res; break; } } @fclose($fp); } if ($result == 'VERIFIED') { if ($_POST['ok_txn_status'] == 'completed') { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php"; $account = new account(); $account->GetInfo($_POST['ok_f_uid']); $descr = "OKPAY #" . $_POST['ok_txn_id'] . " на кошелек " . $_POST['ok_receiver_wallet'] . " OKPAYID: " . $_POST['ok_payer_id'] . " сумма - " . $_POST['ok_item_1_price'] . ","; $descr .= " обработан " . $_POST['ok_txn_datetime'] . ", счет - " . $_POST['ok_f_bill_id']; $account->deposit($op_id, $_POST['ok_f_bill_id'], $_POST['ok_item_1_price'], $descr, 14, $_POST['ok_item_1_price'], 12); } } elseif ($result == 'INVALID') { } elseif ($result == 'TEST') { } else { header("HTTP/1.0 404 Not Found"); exit; }
} else { if ($sbr->status == sbr::STATUS_PROCESS && $sbr->stages_version == $sbr->frl_stages_version && $sbr->version == $sbr->frl_version && !$sbr->reserved_id) { // !!! проверить. Можно ли резервировать, если фрилансер не согласился с изменениями. // !!! Непонятно с комментами. У фрилансера в доступе всегда, а у заказчика тут только страница с резервацией. $bank = __paramInit('int', 'bank', 'bank'); $inner = $fpath . 'stage-reserve' . ($bank && !$no_reserve ? '-bn' : '') . '.php'; $ndss = 'В том числе НДС - 18% с суммы агентского вознаграждения ООО "Ваан" (' . 100 * $sbr->scheme['taxes'][sbr::EMP][sbr::TAX_EMP_COM]['percent'] . '%)'; // если проект в разработке, то в черновики нельзя if ($action == 'draft' && $sbr->status != sbr::STATUS_PROCESS) { if ($sbr->draft($sbr->id)) { header_location_exit('/norisk2/?site=drafts'); } } $sbr->getReserveSum(); $account = new account(); $account->GetInfo($sbr->uid); $no_reserve = 0; if ($sbr->reserve_sum * $sbr->cost2rur() < sbr_stages::MIN_COST_RUR) { $no_reserve = 1; } if ($action == 'test_reserve' && !$no_reserve) { if ($sbr->testReserve($account)) { header_location_exit("/norisk2/?site=Stage&id={$stage->id}"); } } if ($bank && !$no_reserve) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/num_to_word.php'; $form_type = __paramInit('int', 'ft', 'form_type', $sbr->user_reqvs['form_type']); $reqv_mode = __paramInit('int', 'rm', 'reqv_mode', 1); $save_finance = __paramInit('bool', NULL, 'save_finance'); if ($action == 'invoice') {
/** * Инициализирует все данные в сессии. * * @param users $user инициализирванный объект users. */ public function fillU($user) { if (!$user->uid) { $this->error(EXTERNAL_ERR_USER_NOTFOUND); } if ($user->is_banned) { $this->error(EXTERNAL_ERR_USER_BANNED); } if ($user->active != 't') { $this->error(EXTERNAL_ERR_USER_NOTACTIVE); } $data = get_object_vars($user); unset($user); require_once ABS_PATH . '/classes/sbr.php'; require_once ABS_PATH . '/classes/sbr_meta.php'; require_once ABS_PATH . '/classes/messages.php'; require_once ABS_PATH . '/classes/account.php'; $is_emp = is_emp($data['role']); $data['id'] = md5(self::MEM_GROUP . uniqid($data['uid'])); $data['new_msgs'] = messages::GetNewMsgCount($data['uid']); $data['role'] = (int) $is_emp; $data['is_pro'] = $this->pg2ex($data['is_pro'], EXTERNAL_DT_BOOL); $sbr_cls = $is_emp ? 'sbr_emp' : 'sbr_frl'; $sbr = new $sbr_cls($data['uid'], $data['login']); $data['sbr_count'] = $sbr->getActivesCount(); $data['new_sbr_events'] = sbr_meta::getNewEventCount($data['uid']); $account = new account(); $account->GetInfo($data['uid']); $data['sum'] = $account->sum; foreach ($this->public as $f => $v) { $this->{$f} = $data[$f]; } $this->_uid = $data['uid']; $this->_last_updated = time(); }
$prmd = '&'; $has_hidd = false; break; default: $frm_action = '/projects/'; $frm_action2 = '/'; $prmd = '?'; } } if ($prj_pos === false && !$bPageDefault) { include ABS_PATH . '/404.php'; exit; } $account = new account(); if ($_SESSION['uid']) { $ok = $account->GetInfo($_SESSION['uid'], true); } stat_collector::setStamp(); // stamp //скрытые проекты projects_filters::initClosedProjects(); $rss_file = NULL; switch ($kind) { case 0: case 1: $rss_file = "/rss/projects.xml"; break; case 2: $rss_file = "/rss/competition.xml"; break; case 4:
public function updateTab($uid) { $account = new account(); $account->GetInfo($uid, false); if ($account->sum > 0) { $this->db()->query('DELETE FROM tservices_orders_debt WHERE user_id = ?', $uid); } }
/** * Создание счета @see class qiwipay. * * @param array $request параметры ($_POST). * * @return unknown */ public function createBill($request) { if (!$this->uid) { return 'Пользователь не определен'; } $account = new account(); $account->GetInfo($this->uid, true); if ($error = $this->validate($request, $account->id)) { return $error; } $this->DB->start(); $aData = array('account_id' => $account->id, 'phone' => $this->form['phone'], 'sum' => $this->form['sum']); $id = $this->DB->insert('qiwi_account', $aData, 'id'); if ($id) { $params = new createBill(); $params->login = $this->login; // логин $params->password = $this->passwd; // пароль $params->user = $this->form['phone']; // пользователь, которому выставляется счет $params->amount = $this->form['sum']; // сумма $params->comment = $this->form['comment']; // комментарий $params->txn = $id; // номер заказа $params->lifetime = $this->ltime; // время жизни (если пусто, используется по умолчанию 30 дней) $params->alarm = $this->alarm_sms; if ($this->passwd == 'debug') { $result = 1; } else { $result = $this->service->createBill($params)->createBillResult; } if ($err = $this->_checkResultError($result)) { $error['qiwi'] = $err; $this->DB->rollback(); die; return $error; } unset($aData['sum']); $sCode = substr($aData['phone'], 0, 3); $sNum = substr($aData['phone'], 3); $sOper = $this->DB->val('SELECT COALESCE(operator_id, 0) FROM mobile_operator_codes WHERE code = ? AND ? >= start_num AND ? <= end_num', $sCode, $sNum, $sNum); $aData['operator_id'] = $sOper; $this->DB->insert('qiwi_phone', $aData); $memBuff = new memBuff(); $nStamp = time(); $sKey = 'qiwiPhone' . $account->id . '_' . $aData['phone']; if (!($aData = $memBuff->get($sKey))) { $aData = array('time' => $nStamp, 'cnt' => 0); } $aData['time'] = $aData['time'] + 3600 > $nStamp ? $aData['time'] : $nStamp; $aData['cnt'] = $aData['time'] + 3600 > $nStamp ? $aData['cnt'] + 1 : 1; $memBuff->set($sKey, $aData, 3600); //----------------------------------- } $this->DB->commit(); $this->saveBillForm(); return 0; }
/** * Создает новый счет, отправляет на регистрацию в платежную систему. * * @param integer $uid ид. пользователя. * @param array $request параметры ($_POST). * @return array $error массив ошибок. */ function createBill($request) { if (!$this->uid) { return 'Пользователь не определен'; } $account = new account(); $account->GetInfo($this->uid, true); if ($error = $this->validate($request, $account->id)) { return $error; } $this->DB->start(); $aData = array('account_id' => $account->id, 'phone' => $this->form['phone'], 'sum' => $this->form['sum']); $id = $this->DB->insert("qiwi_account", $aData, "id"); $oper_xml = ''; switch ($request['oper_code']) { case 'megafon': $oper_xml = '<extra name="megafon2-acc">1</extra>'; break; case 'mts': $oper_xml = '<extra name="mts-acc">1</extra>'; break; case 'beeline': $oper_xml = '<extra name="beeline-acc">1</extra>'; break; } if ($id) { $xml = '<?xml version="1.0" encoding="' . $this->encode . '"?>' . '<request>' . '<protocol-version>4.00</protocol-version>' . '<request-type>30</request-type>' . '<extra name="password">' . $this->passwd . '</extra>' . '<terminal-id>' . $this->login . '</terminal-id>' . '<extra name="txn-id">' . $id . '</extra>' . '<extra name="to-account">' . $this->form['phone'] . '</extra>' . '<extra name="amount">' . $this->form['sum'] . '</extra>' . '<extra name="comment">' . $this->form['comment'] . '</extra>' . '<extra name="create-agt">' . $this->create_agt . '</extra>' . '<extra name="ltime">' . $this->ltime . '</extra>' . '<extra name="ALARM_SMS">' . $this->alarm_sms . '</extra>' . '<extra name="ACCEPT_CALL">' . $this->accept_call . '</extra>' . $oper_xml . '</request>'; if ($this->passwd == 'debug') { $result = '<response><result-code fatal="false">0</result-code></response>'; } else { $result = $this->_request($xml); } if ($err = $this->_checkResultError($result)) { $error['qiwi'] = $err; $this->DB->rollback(); die; return $error; } // различные ограничения по телефонному номеру unset($aData['sum']); $sCode = substr($aData['phone'], 0, 3); $sNum = substr($aData['phone'], 3); $sOper = $this->DB->val('SELECT COALESCE(operator_id, 0) FROM mobile_operator_codes WHERE code = ? AND ? >= start_num AND ? <= end_num', $sCode, $sNum, $sNum); $aData['operator_id'] = $sOper; $this->DB->insert('qiwi_phone', $aData); $memBuff = new memBuff(); $nStamp = time(); $sKey = 'qiwiPhone' . $account->id . '_' . $aData['phone']; if (!($aData = $memBuff->get($sKey))) { $aData = array('time' => $nStamp, 'cnt' => 0); } $aData['time'] = $aData['time'] + 3600 > $nStamp ? $aData['time'] : $nStamp; $aData['cnt'] = $aData['time'] + 3600 > $nStamp ? $aData['cnt'] + 1 : 1; $memBuff->set($sKey, $aData, 3600); //----------------------------------- } $this->DB->commit(); $this->saveBillForm(); return 0; }
/** * Инициализация аккаунта пользователя. */ public function initAccount() { if ($this->user['uid']) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php'; $account = new account(); $account->GetInfo($this->user['uid'], true); $this->account = $account; $this->acc = get_object_vars($account); if (get_uid(false) == $this->user['uid']) { $_SESSION['ac_sum'] = $account->sum; $_SESSION['bn_sum'] = $account->bonus_sum; } $this->wallet = WalletTypes::initWalletByType($this->user['uid']); // Берет активный если есть } }
if ($ok) { $filteredTeasers[] = $teaser; } } // количество тизеров $teasersCount = count($filteredTeasers); if (!$teasersCount) { return; } // случайный тизер $teaserKey = mt_rand(0, $teasersCount - 1); $teaser = $filteredTeasers[$teaserKey]['file']; // для "поднять проект" if ($teaser === 'tpl.teaser-up.php' || $teaser === 'tpl.teaser-up-conk.php' || $teaser === 'tpl.teaser-up-top.php') { $account = new account(); $account->GetInfo(get_uid()); $transaction_id = $account->start_transaction(get_uid()); ?> <form action="/users/<?php echo $_SESSION['login']; ?> /setup/" id="upprj" name="frm" method="POST"> <input type="hidden" name="action" value="prj_up"> <input type="hidden" name="transaction_id" value="<?php echo $transaction_id; ?> " /> <input type="hidden" name="prjid" value="<?php echo $prj_id; ?> ">
<?php $rpath = '../'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/present.php'; session_start(); get_uid(); if (get_uid() <= 0) { header('Location: /404.php'); exit; } $id = intval($_GET['id']); if ($id) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $acc = new account(); $acc->GetInfo($_SESSION['uid']); $_SESSION['ac_sum'] = $acc->sum; $_SESSION['ac_sum_rub'] = $acc->sum_rub; $opinfo = present::GetGiftInfo($id); if ($opinfo['to_uid'] != get_uid()) { header('Location: /404.php'); exit; } $pr_txt = $opinfo['op_name']; if ($opinfo['op_code'] == 17) { $pr_txt = 'Первая страница в подарок'; } /* switch ($opinfo['op_code']){ case 16: $pr_txt = "Аккаунт ПРО"; break; case 17: $pr_txt = "Первая страница – 1 неделя"; break;