예제 #1
0
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;
}
예제 #3
0
파일: add.php 프로젝트: kapai69/fl-ru-damp
<?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']);
예제 #4
0
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';
예제 #5
0
}
//------------------------------------------------------------------------------
//$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;
예제 #6
0
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;
}
예제 #7
0
    }
    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";
예제 #8
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;
 }
예제 #9
0
<?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 = 'Ошибка при загрузке файла. Пожалуйста, попробуйте еще раз.';
예제 #10
0
<?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));
예제 #11
0
<?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;
        }
예제 #12
0
                 $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;
             }
예제 #13
0
    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,
예제 #14
0
/**
 * подсчет получателей при переходе из поиска пользователей.
 *
 * @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;
}
예제 #15
0
<?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('"', "&quot;", $project['descr']);
                ?>
">