function quickMASGetYandexKassaLink($frm, $payment, $promo_code) { $objResponse = new xajaxResponse(); if (is_emp()) { global $DB, $host; $masssending = new masssending(); //@todo: не используюутся? //$countries = country::GetCountries(TRUE); //$prof_groups = professions::GetAllGroupsLite(TRUE); //$professions = professions::GetProfList(); //$exrates = project_exrates::GetAll(); $uid = get_uid(false); //$params['msg'] = stripslashes($frm['msg']); $params['msg'] = "Здравствуйте!\n\nПриглашаю ознакомиться с проектом '" . change_q_x(stripslashes($frm['title']), false, false, 'b|i|p|ul|li|s|h[1-6]{1}', false, false) . "' " . str_replace('www.n.fl.ru', 'n.fl.ru', $host) . $frm['link'] . " \n\n\n" . LenghtFormatEx(change_q_x(stripslashes($frm['msg']), false, false, 'b|i|p|ul|li|s|h[1-6]{1}', false, false), 300); $params['max_users'] = intval($frm['max_users']); $params['max_cost'] = intval($frm['max_cost']); $params['is_pro'] = stripslashes($frm['pro']); $params['favorites'] = stripslashes($frm['favorites']); $params['free'] = stripslashes($frm['free']); $params['sbr'] = stripslashes($frm['bs']); $params['portfolio'] = stripslashes($frm['withworks']); $params['inoffice'] = stripslashes($frm['office']); $params['opi_is_verify'] = stripslashes($frm['ver']); $tmp = array(); if ($frm['mass_location_columns'][0] != '0' || $frm['mass_location_columns'][1] != '0') { $tmp[] = intval($frm['mass_location_columns'][0]) . ':' . intval($frm['mass_location_columns'][1]); $params['locations'] = $tmp; } if ($frm['f_cats']) { $frm['f_cats'] = preg_replace('/,$/', '', $frm['f_cats']); $acats = explode(',', $frm['f_cats']); $cats_data = array(); foreach ($acats as $v) { $v = preg_replace('/^mass_cat_span_/', '', $v); $c = explode('_', $v); if ($c[1] == 0) { $sql = 'SELECT prof_group FROM professions WHERE id=?i'; $p = $DB->val($sql, $c[0]); $cats_data[] = $p . ':' . $c[0]; } else { $cats_data[] = $c[0] . ':0'; } } } $params['professions'] = $cats_data; if ($calc = $masssending->Add($uid, $params)) { $masssending->ClearTempFiles(session_id()); //Допустимо использование промокодов $masssending->billing->setPromoCodes('SERVICE_MASSSENDING', $promo_code); $billReserveId = $masssending->Accept($calc['massid'], false); if ($billReserveId) { $_SESSION['quickmas_is_begin'] = 1; $_SESSION['quickmas_count_u'] = $calc['count']; $_SESSION['referer'] = $_SERVER['HTTP_REFERER']; $sum = $masssending->billing->getRealPayedSum(); $yandex_kassa = new yandex_kassa(); $html_form = $yandex_kassa->render($sum, $masssending->billing->account->id, $payment, $billReserveId); $html_form = preg_replace('/^[^\\/]+\\/\\*!?/', '', $html_form); $html_form = preg_replace('/\\*\\/[^\\/]+$/', '', $html_form); $objResponse->script('$("quick_mas_div_wait").set("html", \'' . $html_form . '\');'); $objResponse->script("\$('quick_mas_div_wait').getElements('form')[0].submit();"); } } } return $objResponse; }
/** * Оплата через яндекс кассу. * * @param type $type - тип оплаты * @param type $data - данные по параметрам покупаемой услуги * * @return \xajaxResponse */ function quickPaymentMasssendingYandexKassa($type, $data) { $is_error = true; $uid = get_uid(false); $objResponse =& new xajaxResponse(); $send_id = (int) $data['send_id']; $promo_code = (string) @$data['promo']; $pay_methods = array(quickPaymentPopup::PAYMENT_TYPE_CARD => yandex_kassa::PAYMENT_AC, quickPaymentPopup::PAYMENT_TYPE_YA => yandex_kassa::PAYMENT_YD, quickPaymentPopup::PAYMENT_TYPE_WM => yandex_kassa::PAYMENT_WM, quickPaymentPopup::PAYMENT_TYPE_ALFACLICK => yandex_kassa::PAYMENT_AB, quickPaymentPopup::PAYMENT_TYPE_SBERBANK => yandex_kassa::PAYMENT_SB); if (!isset($pay_methods[$type])) { return $objResponse; } $masssending = new masssending(); $params = $masssending->getAccepted($send_id, $uid); if ($params) { $is_error = false; $bill = new billing(get_uid(false)); //Допустимо использование промокодов $bill->setPromoCodes('SERVICE_MASSSENDING', $promo_code); $option = array('amount' => $params['pre_sum'], 'masssending_id' => $params['id']); //Формируем заказ $billReserveId = $bill->addServiceAndCheckout(masssending::OPER_CODE, $option); $payed_sum = $bill->getRealPayedSum(); $payment = $pay_methods[$type]; $yandex_kassa = new yandex_kassa(); $html_form = $yandex_kassa->render($payed_sum, $bill->account->id, $payment, $billReserveId); $objResponse->script("\n var qp_form_wrapper = \$\$('#quick_payment_masssending .__quick_payment_form');\n if(qp_form_wrapper){ \n qp_form_wrapper.set('html','{$html_form}');\n qp_form_wrapper.getElement('form')[0].submit();\n }\n "); //сохранаем в сессию куда перейти при успешной покупке $_SESSION[quickPaymentPopup::QPP_REDIRECT] = '/bill/history/?period=3'; } // Показываем предупреждение в случае ошибки if ($is_error) { $objResponse->script("\n var qp = window.quick_payment_factory.getQuickPayment('masssending');\n if(qp) qp.show_error('Возникла ошибка при оплате рассылки!');\n "); } return $objResponse; }
<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/masssending.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php'; session_start(); if (!($uid = get_uid())) { header('Location: /fbd.php'); exit; } $masssending = new masssending(); $countries = country::GetCountries(true); $prof_groups = professions::GetAllGroupsLite(true); $professions = professions::GetProfList(); $exrates = project_exrates::GetAll(); if (!empty($_POST)) { $frm = $_POST; //$params['msg'] = stripslashes($frm['msg']); $params['msg'] = "Здравствуйте!\n\nПриглашаю ознакомиться с проектом '" . change_q_x(stripslashes($frm['title']), false, false, 'b|i|p|ul|li|s|h[1-6]{1}', false, false) . "' " . str_replace('www.n.fl.ru', 'n.fl.ru', $host) . $frm['link'] . " \n\n\n" . LenghtFormatEx(change_q_x(stripslashes($frm['msg']), false, false, 'b|i|p|ul|li|s|h[1-6]{1}', false, false), 300); $params['max_users'] = intval($_POST['max_users']); $params['max_cost'] = intval($_POST['max_cost']); $params['is_pro'] = stripslashes($frm['pro']); $params['favorites'] = stripslashes($frm['favorites']); $params['free'] = stripslashes($frm['free']); $params['sbr'] = stripslashes($frm['bs']); $params['portfolio'] = stripslashes($frm['withworks']); $params['inoffice'] = stripslashes($frm['office']); $params['opi_is_verify'] = stripslashes($frm['ver']);
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/masssending.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/quick_payment/quickPaymentPopupMasssending.php'; session_start(); $id = __paramInit('int', 'id'); //Должен быть id рассылки if (!$id) { include ABS_PATH . '/404.php'; exit; } $uid = get_uid(false); if (!$uid) { include ABS_PATH . '/404.php'; exit; } $masssending = new masssending(); $params = $masssending->getAccepted($id, $uid); if (!$params) { //должна существовать одобренная неоплаченная рассылка, принадлежащая текущему пользователю. include ABS_PATH . '/404.php'; exit; } $text = reformat($params['msgtext'], 1000, false, true); $calc = $masssending->Calculate(get_uid(false), array($params)); //print_r($calc);exit; quickPaymentPopupMasssending::getInstance()->init(array('count' => $params['all_count'], 'count_pro' => $params['pro_count'], 'price' => $params['pre_sum'], 'send_id' => $id)); $stretch_page = true; $header = '../header.php'; $footer = '../footer.html'; $content = 'tpl.masssending_pay.php'; include '../template2.php';
} //------------------------------------------------------------------------------ //$string_query = @$_GET['find']; //$string_query = iconv('UTF-8','CP1251', $string_query); //------------------------------------------------------------------------------ function Masssending_test($user_id, $masssending_id, $text, $posted_time, $skip_mail = false) { $master = new DB('master'); $plproxy = new DB('plproxy'); $error = ''; $files = $master->col("SELECT file.id FROM mass_sending_files m INNER JOIN file ON m.fid = file.id WHERE mass_sending_id = ? ORDER BY m.pos", $masssending_id); $ignors = $plproxy->col("SELECT user_id FROM ignor_me(?)", $user_id); array_push($ignors, $user_id); //print_r($ignors);exit; $sql = $master->parse("\n SELECT \n m.uid \n FROM \n mass_sending_users m \n INNER JOIN \n users u ON m.uid = u.uid AND u.is_banned = B'0' \n WHERE \n mid = ?i AND m.uid NOT IN (?l)\n ", $masssending_id, $ignors); /*$msgid = $plproxy->val("SELECT masssend(?, ?, ?a, ?)", $user_id, $text, $files, ($skip_mail? '': 'SpamFromMasssending')); if ( $msgid ) { $plproxy->query("SELECT masssend_sql(?, ?, ?)", $msgid, $user_id, $sql); }*/ $msgid = $plproxy->val('SELECT masssend(?, ?, ?a, ?, ?, ?, ?)', $user_id, $text, $files, $masssending_id, $posted_time, $skip_mail ? '' : 'SpamFromMasssending', $sql); //print_r($msgid);exit; // TODO: отдельным тикетом //$master->query("DELETE FROM mass_sending_users WHERE mid = ?", $masssending_id); return empty($plproxy->error); } $masssending = masssending::Get(7485); $masssending = $masssending[0]; //$success = (bool)messages::Masssending($masssending['user_id'], $masssending['id'], $masssending['msgtext'], $masssending['posted_time']); $success = (bool) Masssending_test($masssending['user_id'], $masssending['id'], $masssending['msgtext'], $masssending['posted_time']); print_r($success); exit;
function mass_Calc($frm) { global $DB; $objResponse = new xajaxResponse(); $uid = get_uid(false); if ($uid <= 0 || !is_emp()) { return $objResponse; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/masssending.php'; $masssending = new masssending(); $params['savetime'] = mktime(); $params['msg'] = stripslashes($frm['msg']); $params['is_pro'] = stripslashes($frm['pro']); $params['favorites'] = stripslashes($frm['favorites']); $params['free'] = stripslashes($frm['free']); $params['sbr'] = stripslashes($frm['bs']); $params['portfolio'] = stripslashes($frm['withworks']); $params['inoffice'] = stripslashes($frm['office']); $params['opi_is_verify'] = stripslashes($frm['ver']); $tmp = array(); if ($frm['mass_location_columns'][0] != '0' || $frm['mass_location_columns'][1] != '0') { $tmp[] = intval($frm['mass_location_columns'][0]) . ':' . intval($frm['mass_location_columns'][1]); $params['locations'] = $tmp; } if ($frm['f_cats']) { $frm['f_cats'] = preg_replace('/,$/', '', $frm['f_cats']); $acats = explode(',', $frm['f_cats']); $cats_data = array(); foreach ($acats as $v) { $v = preg_replace('/^mass_cat_span_/', '', $v); $c = explode('_', $v); if ($c[1] == 0) { $sql = 'SELECT prof_group FROM professions WHERE id=?i'; $p = $DB->val($sql, $c[0]); $cats_data[] = $p . ':' . $c[0]; } else { $cats_data[] = $c[0] . ':0'; } } } $params['professions'] = $cats_data; //Помимо основного общего расчета нам отдельно нужно кол-во ПРО остальные способы расчета отключаются $calc = $masssending->setCalcMethods('pro')->Calculate($uid, $params); $objResponse->assign('mass_find_count', 'innerHTML', $calc['count']); $objResponse->assign('mass_f_users', 'value', $calc['count']); $objResponse->assign('mass_f_cost', 'value', $calc['cost']); $objResponse->assign('mass_max_users', 'value', $calc['count']); $objResponse->assign('mass_max_cost', 'value', $calc['cost']); $objResponse->assign('mass_find_cost', 'innerHTML', $calc['cost']); $objResponse->script("\$('mass_sendit').removeClass('b-button_disable');"); $objResponse->script('mass_spam.busy = 0;'); $objResponse->script("try { \$('quickmas_f_mas_u_count_pro').set('html', '" . $calc['pro']['count'] . "'); } catch(e) { }"); return $objResponse; }
} return $a; } session_start(); $uid = get_uid(); if (isset($_GET['unset'])) { setcookie('mass-files'); unset($_SESSION['masssending']); } $fromSearch = __paramInit('int', 'from_search', null, 0); // если пришли сюда из поиска пользователей if ($fromSearch === 2) { // количество найденых $searchCount = __paramInit('int', 'search_count', 'search_count', false); } $masssending = new masssending(); $countries = country::GetCountries(TRUE); $prof_groups = professions::GetAllGroupsLite(TRUE); $professions = professions::GetProfList(); $exrates = project_exrates::GetAll(); //print_r($_POST); //die; $dc = 0; if (!empty($_GET['g'])) { if (preg_match("/^([0-9]+)\\:([0-9]+)\$/", $_GET['g'], $o)) { $dc = $_GET['g']; $dcg = $o[1]; $dcp = $o[2]; } else { if (preg_match("/^[0-9]+\$/", $_GET['g'])) { $dc = "{$_GET['g']}:0";
/** * Оплата услуг. * * @param array $order Данные по оплачивоемой услуге * * @return bool */ public function paymentOrder($order) { $_op_code = self::getOpCodeByDiscount($order['op_code']); switch ($_op_code) { // Верификация банковской картой через ЯКассу case 191: $error = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment']); if (!$error) { $success = true; //Устанавливаем флаг верификации require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Verification.php'; $verify = new Verification(); $verify->cardYK($this->user['uid']); //Обновляем сессию //@todo: эта штука не работает! $session = new session(); $session->UpdateVerification($this->user['login']); //Обновляем имя и фамилию $fio = mb_unserialize($order['option']); if (isset($fio['uname']) && isset($fio['usurname'])) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $u = new users(); $u->GetUserByUID($this->user['uid']); $u->uname = $fio['uname']; $u->usurname = $fio['usurname']; $u->Update($this->user['uid'], $db_errors); } //Назначаем возврат require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing/BillPayback.php'; BillPayback::getInstance()->requestPayback($order['id'], $this->paymentSysParams['invoiceId'], $order['ammount']); } break; //------------------------------------------------------------------ // Верификация через FF //------------------------------------------------------------------ // Верификация через FF case 117: require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Verification.php'; $error = $this->account->Buy($account_operation_id, $this->transaction, Verification::FF_OP_CODE, $this->user['uid'], $order['comment'], $order['descr'], 1, 0); $verify = new Verification(); $verify->data = unserialize($order['option']); $this->_db->query('UPDATE verify_ff SET is_pro = ?, bill_id = ? WHERE id = ?', false, $account_operation_id, $order['src_id']); if ($verify->verify($this->user['uid'])) { $this->_db->query('UPDATE verify_ff SET result = TRUE WHERE id = ?', $order['src_id']); $success = true; } break; //------------------------------------------------------------------ // Конкурс //------------------------------------------------------------------ // Конкурс case 9: case 106: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case 128: case 129: case 130: // Платный конкурс // Платный конкурс case 86: // Платный проект (вакансия, устаревший опкод) // Платный проект (вакансия, устаревший опкод) case 53: //Покупка вакансии //Покупка вакансии case 113: //пользователь не PRO //пользователь не PRO case 192: //пользователь PRO //Платные услуги проектов //пользователь PRO //Платные услуги проектов case 138: case 139: case 140: case 141: require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/uploader/uploader.php'; // Публикуем платный проект if ($order['parent_table'] == 'draft_projects') { $draft_id = $order['parent_id']; $this->project_key = md5(uniqid($this->user['uid'])); $tmpPrj = new tmp_project($this->project_key); $tmpPrj->initFromDraft($draft_id, $this->user['uid']); $tproject = $tmpPrj->getProject(); $isMovedToVacancy = false; // Нет конкурса значит его уже опубликовали и оплатили, оставляем деньги на личном счете if ((int) $tproject['prj_id'] <= 0) { // Не тратим деньги на такой конкурс if ($tmpPrj->isKonkurs() && strtotime($tproject['end_date']) <= time()) { $success = true; break; } $error = $tmpPrj->saveProject($this->user['uid'], $proj, $this->ordersPromoCodes); $success = !$error; // Отработали все по конкурсу удаляем его чтобы не мешал (после отработки всех операций) $this->setAfterQuery($this->_db->parse('DELETE FROM draft_projects WHERE id = ? AND uid = ?', $draft_id, $this->user['uid']), $order['parent_id']); $sql = 'UPDATE draft_projects SET prj_id = ? WHERE id = ? AND uid = ?'; $this->_db->query($sql, $proj['id'], $draft_id, $this->user['uid']); } else { $success = true; } } elseif ($order['parent_table'] == 'projects') { $prj_id = $order['parent_id']; $this->project_key = md5(uniqid($this->user['uid'])); $tmpPrj = new tmp_project($this->project_key); $tmpPrj->setInitFromDB($prj_id); $tproject = $tmpPrj->getProject(); $isMovedToVacancy = $tmpPrj->isStateMovedToVacancy(); // Если закрыт или заблокирован не тратим деньги if ($tproject['closed'] == 't' || $tproject['is_blocked'] == 't') { $success = true; break; } switch ($order['option']) { case 'top': $tmpPrj->setAddedTopDays($order['op_count']); break; case 'logo': $LogoFile = new CFile($order['src_id']); $tmpPrj->initLogo($LogoFile, $order['descr']); break; case 'urgent': $tmpPrj->setProjectField('urgent', 't'); break; case 'hide': $tmpPrj->setProjectField('hide', 't'); break; case 'office': $tmpPrj->setProjectField('old_state', $tproject['state']); $tmpPrj->setProjectField('state', projects::STATE_PUBLIC); //Если оплачивается не перемещенная вакансия //то работаем как обычно и подымаем вверх if ($tproject['state'] != projects::STATE_MOVED_TO_VACANCY) { $tmpPrj->setProjectField('post_now', true); } break; } $error = $tmpPrj->saveProject($this->user['uid'], $proj, $this->ordersPromoCodes); $success = !$error; if ($success) { if (isset($tmpPrj->account_operation_id) && $tmpPrj->account_operation_id > 0) { $account_operation_id = $tmpPrj->account_operation_id; } switch ($order['option']) { case 'office': if ($tproject['state'] == projects::STATE_MOVED_TO_VACANCY) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $smail->sendMovedToVacancySuccessPayed($tproject); require_once $_SERVER['DOCUMENT_ROOT'] . '/guest/models/GuestInviteModel.php'; $guestInviteModel = new GuestInviteModel(); $guestInviteModel->updateDatePublicBySrc($prj_id, array(GuestConst::TYPE_PROJECT, GuestConst::TYPE_VACANCY)); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/autoresponse.php'; $autoresponse = new autoresponse(); $autoresponse->reduceByProject($prj_id); } break; } } } //Сохраняем, чтобы показать попап юзеру $memBuff = new memBuff(); $memBuff->add('bill_ok_project_' . $this->user['uid'], $proj['id']); //Если это оплата вакансии или конкусра то предлагаем еще купить платные опции if (in_array($order['option'], array('office', 'contest')) && !$isMovedToVacancy) { $memBuff->add('bill_ok_project_payed_' . $this->user['uid'], true); } break; //------------------------------------------------------------------ // Платное место в карусели //------------------------------------------------------------------ // Платное место в карусели case 65: // На главной странице $catalog = 0; case 73: // В каталоге require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pay_place.php'; $payPlace = new pay_place(isset($catalog) ? $catalog : 1); $buyMain = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['comment'], $order['descr'], $order['op_count'], 0, $order['promo_code']); if ($buyMain === 0) { $options = unserialize($order['option']); if (isset($options['adHead'])) { //поддержка старого режима $success = $payPlace->addUser($this->user['uid'], $options['adHead'], $options['adText'], $options['adImg']); } else { $success = $payPlace->addUserRequest($this->user['uid'], $options); } } break; //------------------------------------------------------------------ // ПРО аккаунт фрилансеры //------------------------------------------------------------------ // ПРО аккаунт фрилансеры case 47: // Тестовый ПРО на 1 неделю if (payed::IsUserWasPro($this->user['uid'])) { return false; break; } case 15: // Про на 1 месяц (emp) // Про на 1 месяц (emp) case 48: // Про на 1 месяц (frl) // Про на 1 месяц (frl) case 118: // Про на 3 месяца (emp) // Про на 3 месяца (emp) case 49: // Про на 3 месяца (frl) // Про на 3 месяца (frl) case 119: // Про на 6 месяцeв (emp) // Про на 6 месяцeв (emp) case 50: // Про на 6 месяцев (frl) // Про на 6 месяцев (frl) case 120: // Про на 1 год (emp) // Про на 1 год (emp) case 51: // Про на 1 год (frl) // Про на 1 год (frl) case 132: // Про на 1 день (frl) // Про на 1 день (frl) case 131: // Про на 1 неделю (frl) // Про на 1 неделю (frl) case 163: // Тестовый ПРО на месяц // Тестовый ПРО на месяц case 164: // PROFI на 1 месяц require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php'; $payed = new payed(); $user = is_emp($this->user['role']) ? new employer() : new freelancer(); $success = $payed->SetOrderedTarif($this->user['uid'], $this->transaction, $order['op_count'], $order['comment'], $order['op_code'], $order['promo_code'], $error); if ($success) { if (isset($payed->account_operation_id) && $payed->account_operation_id > 0) { $account_operation_id = $payed->account_operation_id; } // Обновим сессию сразу! if (get_uid(false) == $this->user['uid']) { $_SESSION['pro_last'] = payed::ProLast($this->user['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['is_freezed'] ? false : $_SESSION['pro_last']['cnt']; if ($_SESSION['pro_last']['is_freezed']) { $_SESSION['payed_to'] = $_SESSION['pro_last']['cnt']; } } else { $membuff = new memBuff(); $membuff->set('is_changed_pro_' . $this->user['uid'], true); //Этот подход не работает //$session = new session(); //$session->UpdateProEndingDate($this->user['login']); } if ($order['auto'] == 't') { $user->setPROAutoProlong('on', $this->user['uid']); } else { $user->setPROAutoProlong('off', $this->user['uid']); } //Опубликовать перемещенные вакансии при покупке ПРО //@todo: Теперь вакансии для всех платные разница лишь в цене для ПРО дешевле //поэтому отключаем публикацию после покупки ПРО //https://beta.free-lance.ru/mantis/view.php?id=28579 /* if (is_emp($this->user['role'])) { require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"); $project = new projects(); $project->publishedMovedToVacancy($this->user); }*/ //Чистим кеш каталога PROFI пользователей if ($order['op_code'] == 164) { freelancer::clearCacheProfiCatalog(); } } break; //------------------------------------------------------------------ //------------------------------------------------------------------ case 45: // рассылка по каталогу require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/masssending.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; $masssending = masssending::Get($order['parent_id']); $masssending = $masssending[0]; $error = $this->account->Buy($account_operation_id, $this->transaction, masssending::OPER_CODE, $this->user['uid'], $order['descr'], $order['comment'], $masssending['pre_sum'], 0, $order['promo_code']); if ($error) { break; } masssending::UpdateAcOpID($order['parent_id'], $account_operation_id); $success = (bool) messages::Masssending($masssending['user_id'], $masssending['id'], $masssending['msgtext'], $masssending['posted_time']); break; //------------------------------------------------------------------ /* * Погашение задолженности */ //------------------------------------------------------------------ /* * Погашение задолженности */ case 135: $error = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], 1, 1, 0, 0, $order['ammount']); if (!$error) { $success = true; //Начисление погашенной комиссии и удаление блокировки ТУ require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceOrderModel.php'; TServiceOrderModel::model()->clearDebt($this->user['uid']); } break; //------------------------------------------------------------------- /* * Операции над бизнес логикой резерва средств * при успешном зачислении денег */ //------------------------------------------------------------------- /* * Операции над бизнес логикой резерва средств * при успешном зачислении денег */ case 136: $success = false; $data = @$this->list_service[$order['id']]['info']; if (!$data) { break; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reserves/ReservesModelFactory.php'; $reserveInstance = ReservesModelFactory::getInstance($data['type']); //Уже была зарезервирована или нет нужный параметров то //ничего не покупаем деньги остаются на ЛС if (!$reserveInstance || !isset($this->paymentSysParams['invoiceId'])) { break; } //Невозможно сменить статус сделки выходим $reserveInstance->setReserveData($data); if (!$reserveInstance->allowChangeStatus(ReservesModel::STATUS_RESERVE)) { break; } $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], $order['ammount']); if ($ret === 0) { //Успешно купили услугу и теперь меняем статус резерва $data['invoice_id'] = $this->paymentSysParams['invoiceId']; $data['acc_op_id'] = $account_operation_id; $reserveInstance->setReserveData($data); $success = $reserveInstance->changeStatus(ReservesModel::STATUS_RESERVE); } break; //------------------------------------------------------------------ /* * Завершение покупки автоответов. */ //------------------------------------------------------------------ /* * Завершение покупки автоответов. */ case 137: $success = false; $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], $order['ammount'], 1, $order['promo_code']); if ($ret === 0 && isset($order['parent_id']) && intval($order['parent_id'])) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/autoresponse.php'; autoresponse::$db = $GLOBALS['DB']; // Активация покупки услуги автоответа if ($autoresponse = autoresponse::get($order['parent_id'])) { $autoresponse->activate(); $success = true; } } break; //------------------------------------------------------------------ // Закрепление в каталоге фрилансеров //------------------------------------------------------------------ // Закрепление в каталоге фрилансеров case 142: // В корневом разделе // В корневом разделе case 143: // В разделе $is_spec = false; case 144: // В подразделе if (!isset($is_spec)) { $is_spec = true; } $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php'; $freelancer_binds = new freelancer_binds(); $freelancer_binds->prepare($this->user['uid'], $order['src_id'], $is_spec, $order['op_count']); $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], $freelancer_binds->bind_info['comment'], $order['ammount'], 1, $order['promo_code']); if ($ret === 0) { $success = $freelancer_binds->create(); } break; //------------------------------------------------------------------ // Продление закрепления в каталоге фрилансеров //------------------------------------------------------------------ // Продление закрепления в каталоге фрилансеров case 148: // В корневом разделе // В корневом разделе case 149: // В разделе $is_spec = false; case 150: // В подразделе if (!isset($is_spec)) { $is_spec = true; } $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php'; $freelancer_binds = new freelancer_binds(); $bind_id = $freelancer_binds->isUserBinded($this->user['uid'], $order['src_id'], $is_spec); $ret = true; if ($bind_id) { $freelancer_binds->getProlongInfo($this->user['uid'], $order['src_id'], $is_spec, $order['op_count']); $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], $freelancer_binds->bind_info['comment'], $order['ammount']); } if ($ret === 0) { $success = $freelancer_binds->prolong($bind_id, $order['op_count'], $order['src_id'], $is_spec); } break; //------------------------------------------------------------------ // Поднятие закрепления в каталоге фрилансеров //------------------------------------------------------------------ // Поднятие закрепления в каталоге фрилансеров case 151: // В корневом разделе // В корневом разделе case 152: // В разделе $is_spec = false; case 153: // В подразделе // В подразделе case 194: //Оплата из буфера if (!isset($is_spec)) { $is_spec = $order['src_id'] > 0; } $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php'; $freelancer_binds = new freelancer_binds(); $bind_id = $freelancer_binds->isUserBinded($this->user['uid'], $order['src_id'], $is_spec); if ($bind_id) { $freelancer_binds->getUpInfo($this->user['uid'], $order['src_id'], $is_spec); $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], '', $order['ammount']); if ($ret === 0) { $success = $freelancer_binds->up($bind_id, $order['src_id'], $is_spec); } } break; //------------------------------------------------------------------ // Закрепление/продление в каталоге услуг //------------------------------------------------------------------ // Закрепление/продление в каталоге услуг case 155: // В лендинге // В лендинге case 156: // В корневом разделе // В корневом разделе case 157: // В разделе // В разделе case 158: // В подразделе $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices_binds.php'; $tservices_binds = new tservices_binds(tservices_binds::KIND_LANDING); $tservices_binds->setKindByOpCode($_op_code); $option = unserialize($order['option']); $tservice_id = isset($option['tservice_id']) ? $option['tservice_id'] : $order['option']; $is_prolong = isset($option['is_prolong']) ? $option['is_prolong'] : false; $tservices_binds->prepare($this->user['uid'], $tservice_id, $order['src_id'], $order['op_count'], $is_prolong); if ($tservices_binds->bind_info) { $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $tservices_binds->bind_info['descr'], $tservices_binds->bind_info['comment'], $order['ammount']); if ($ret === 0) { $success = $is_prolong ? $tservices_binds->update() : $tservices_binds->create(); } } break; //------------------------------------------------------------------ // Поднятие закрепления в каталоге услуг //------------------------------------------------------------------ // Поднятие закрепления в каталоге услуг case 159: // В лендинге // В лендинге case 160: // В корневом разделе // В корневом разделе case 161: // В разделе // В разделе case 162: // В подразделе // В подразделе case 193: //Оплата из буфера $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices_binds.php'; $tservices_binds = new tservices_binds(tservices_binds::KIND_LANDING); $tservices_binds->setKindByOpCode($_op_code); $bind = $tservices_binds->getItemById($order['src_id']); $tservices_binds->makeUpInfo($bind); if ($tservices_binds->bind_info) { $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $tservices_binds->bind_info['descr'], $tservices_binds->bind_info['comment'], $order['ammount']); if ($ret === 0) { $success = $tservices_binds->update(); } } break; } if ($success) { $update = array('status' => self::STATUS_COMPLETE); $this->update($order['id'], $update); $memBuff = new memBuff(); $memBuff->delete('last_operation_' . $order['uid'] . '_' . $order['service']); //Если только что была оплата из яндекс.кассы if ($this->paymentSysParams['invoiceId']) { //Фиксируем ID транзакции $label = op_codes::getLabel($order['op_code']); if (isset($account_operation_id) && $account_operation_id > 0) { $label = (empty($label) ? '' : "{$label},") . "trans_{$account_operation_id}"; } // Посылаем данные о покупке в google analytics $this->_db->query("SELECT pgq.insert_event('statistic', 'service_payed', ?)", http_build_query(array('is_emp' => is_emp($this->user['role']), 'label' => $label, 'ammount' => floatval($order['ammount']), 'cid' => $this->getCid()))); } } return $success; }
<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/masssending.php'; session_start(); $masssending = new masssending(); if (empty($_SESSION['masssending_total_filesize'])) { $_SESSION['masssending_total_filesize'] = 0; } if (empty($_SESSION['masssending']['files'])) { $_SESSION['masssending']['files'] = array(); } if (count($_SESSION['masssending']['files']) >= masssending::MAX_FILES) { $error = 'Максимальное кол-во прикрепленных файлов - ' . masssending::MAX_FILES; } else { if ($_SESSION['masssending_total_filesize'] + $_FILES['attach']['size'] > masssending::MAX_FILE_SIZE) { $error = 'Максимальный объем прикрепленных файлов - ' . masssending::MAX_FILE_SIZE / (1024 * 1024) . ' Mб'; } else { if ($uid = get_uid(false)) { $login = get_login($uid); $file = new CFile($_FILES['attach']); $file->table = 'file'; $file->max_size = masssending::MAX_FILE_SIZE; $filename = $file->MoveUploadedFile("{$login}/contacts"); $filetype = $file->getext(); $error = $file->error; } else { $error = 'Вы не авторизованы'; } if (!$file->id && !$error) { $error = 'Ошибка при загрузке файла. Пожалуйста, попробуйте еще раз.';
<?php // !!! нумерация подсветки пунктов меню: заняты номера 1-24 и 100 if (!defined('IS_SITE_ADMIN')) { header('Location: /404.php'); exit; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/masssending.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/paid_advices.php"; $paid_advice = new paid_advices(); $stat_advice = $paid_advice->getStatAdvices(); $mass_sending_new_cnt = masssending::GetCount(masssending::OM_NEW); $s = 'style="color: #666;"'; $c = 'class="blue"'; // количество жалоб о спаме require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages_spam.php'; $nMessagesSpamCount = messages_spam::getSpamCount(); // количество жалоб на проекты if (!isset($nComplainProjectsCount)) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; $nComplainProjectsCount = projects::GetComplainPrjsCount(); } ?> <div class="admin-menu"> <h3>Модераторская</h3> <?php if (!isset($aPermissions)) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/permissions.php"; $aPermissions = permissions::getUserPermissions(get_uid(false));
<?php define('IS_SITE_ADMIN', 1); $no_banner = 1; $rpath = '../../'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/masssending.php'; session_start(); get_uid(); if (!(hasPermissions('adm') && hasPermissions('masssending'))) { header('Location: /404.php'); exit; } $masssending = new masssending(); $error = ''; $alert = NULL; $action = __paramInit('string', 'action', 'action'); $om = __paramInit('string', 'om', 'om', masssending::OM_NEW); $page = __paramInit('int', 'page', 'page', 1); $per_page = 10; $denied_reason = ''; $tariff = masssending::GetTariff(); switch ($action) { case 'Change.tariff': $pro = __paramInit('float', NULL, 'pro', 0); $no_pro = __paramInit('float', NULL, 'no_pro', 0); //break; if (masssending::SetTariff($pro, $no_pro)) { header("Location: /siteadmin/masssending/?om={$om}&result=success"); exit; }
$cur_folder_name = 'Платные рассылки'; $sSuff = 'mass/'; break; case -7: $cur_folder_name = 'Непрочитанные'; $sSuff = 'unread/'; break; default: $cur_folder_name = 'Все'; $sSuff = ''; break; } } } else { $aCurrFolder = messages::pmAutoFolderGetById(get_uid(), $pm_folder); $aMassSend = masssending::Get($aCurrFolder['mass_send_id']); $cur_folder_name = $aCurrFolder['name']; } // \ Определение названия текущей папки. $arr_logins = array(); $users_folders = $msgs->GetUsersInFolders(get_uid()); if ($contacts) { $i = 0; foreach ($contacts as $contact) { if (!$predefined_count) { if ($i++ < ($page - 1) * $blogspp) { continue; } if ($i > $page * $blogspp) { break; }
header('Location: /404.php'); exit; } if (!hasPermissions('adm') && hasPermissions('masssending')) { exit; } require_once $_SERVER['DOCUMENT_ROOT'] . '/xajax/masssending.common.php'; $xajax->printJavascript('/xajax/'); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; $stop_words = new stop_words(true); if (!($pss = masssending::Get(null, $om, ($page - 1) * $per_page, $per_page))) { $pss = array(); } $newCnt = masssending::GetCount(masssending::OM_NEW); $acceptedCnt = masssending::GetCount(masssending::OM_ACCEPTED); $deniedCnt = masssending::GetCount(masssending::OM_DENIED); $pages = 1; if ($om == masssending::OM_NEW) { $pages = ceil($newCnt / $per_page); } elseif ($om == masssending::OM_ACCEPTED) { $pages = ceil($acceptedCnt / $per_page); } elseif ($om == masssending::OM_DENIED) { $pages = ceil($deniedCnt / $per_page); } function chel($num) { return 'человек' . ($num % 100 >= 11 && $num % 100 <= 14 || $num % 10 > 4 || !($num % 10) || $num % 10 == 1 ? '' : 'а'); } /* function __prntUsrInfo( $user,
/** * подсчет получателей при переходе из поиска пользователей. * * @param string $query строка параметров из URL */ function CalculateFromSearch($query) { $response = new xajaxResponse(); session_start(); // парсим строку параметров из URL parse_str($query, $param); $uid = get_uid(false); // стоимость рассылки require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/masssending.php'; $masssending = new masssending(); $calc = $masssending->CalculateFromSearch($uid, $param); $response->script("\n\t\tspam.calc = { count: {$calc['count']}, cost: {$calc['cost']} };\n\t\tspam.calc.pro = { count: {$calc['pro']['count']}, cost: {$calc['pro']['cost']} };\n\t\tspam.recalculation();\n\t"); return $response; }
<?php if ($project['login'] == $_SESSION["login"]) { $baners = array('image' => array('b-banner__sbr.png'), 'title' => array("Работайте безопасно"), 'alt' => array("«Безопасная Сделка»"), 'link' => array('/' . sbr::NEW_TEMPLATE_SBR . '/')); $index = 0; ?> <br><br> <?php if ($projectObject->isAllowShowOffers()) { if ($project['is_blocked'] != 't') { ?> <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/masssending.php"; $masssending = new masssending(); $calc = $masssending->setCalcMethods('pro')->Calculate(get_uid(false), array()); $tariff = masssending::GetTariff(); ?> <?php if (!($project["closed"] == 't') || !$project['is_blocked']) { ?> <div class="b-layout"> <h2 class="b-layout__title">Пригласить фрилансеров в проект</h2> <section class="b-frm-filtr b-frm-filtr_pad_15 b-layout_bord_c6"> <form id="mass_frm" action="/masssending/add.php" method="POST"> <input type="hidden" name="msg" value="<?php echo str_replace('"', """, $project['descr']); ?> ">