Exemplo n.º 1
0
if ($uid > 0) {
    global $DB;
    //Есть ли такой незабаненый не про, заходивший в проследний раз более года назад?
    $targetUser = users::userWasInOldYear($uid);
    if (is_array($targetUser)) {
        //Даем про на неделю
        $account = new account();
        $payed = new payed();
        $op_code = 115;
        // 52
        $tr_id = $account->start_transaction($admin);
        $interval = "7 days";
        if ($targetUser["role"][0] == 1) {
            $interval = "1 month";
        }
        $success = $payed->GiftOrderedTarif($bill_id, $gift_id, $uid, $admin, $tr_id, $interval, "Аккаунт PRO в подарок", $op_code);
        if (!$success) {
            $rpath = "./";
            if (!$fpath) {
                $fpath = "";
            }
            $header = ABS_PATH . "/header.new.php";
            $footer = ABS_PATH . "/footer.new.html";
            $content = ABS_PATH . "/gift_pro_week_error.php";
            $page_title = "Ошибка при активации подарка";
            include "template3.php";
            exit;
        }
        $sql = "UPDATE week_pro_action SET ts = NOW() WHERE uid = {$uid}";
        $DB->query($sql);
        header("location: /login/");
Exemplo n.º 2
0
 /**
  * Вывод страницы /gift/ "Подарок".
  */
 public function giftAction()
 {
     include $_SERVER['DOCUMENT_ROOT'] . '/404.php';
     exit;
     /*
      * @deprecated Все что ниже пока не используется
      */
     front::og('tpl')->page = 'gift';
     self::isBlockMoney();
     /**
      * Подключаем AJAX для страницы.
      */
     require_once $_SERVER['DOCUMENT_ROOT'] . '/xajax/bill.common.php';
     front::og('tpl')->script = '/scripts/bill2.js';
     front::og('tpl')->xajax = $xajax;
     front::og('tpl')->mnth = 1;
     // Месяцев оплаты по умолчанию
     $val = $this->uri[0];
     switch ($val) {
         case 'pro':
             // Вывод подстраницы "Аккаунт «PRO»"
             /*
              * Обработка события "Подарить"
              */
             if ($_POST['act']) {
                 $mnth = intval(trim($_POST['mnth']));
                 // месяцев
                 $login = trim(strip_tags($_POST['login']));
                 // логин пользователя
                 $msg = change_q_x(__paramInit('string', null, 'msg', null, 300));
                 $usertype = trim(strip_tags($_POST['usertype']));
                 /**
                  * Подключаем класс для оплаты подарка.
                  */
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
                 $prof = new payed();
                 $tr_id = $_REQUEST['transaction_id'];
                 if (!$tr_id) {
                     $this->account->view_error('Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.');
                 }
                 front::og('tpl')->tr_id = $tr_id;
                 front::og('tpl')->login = $login;
                 front::og('tpl')->msg = $msg;
                 front::og('tpl')->mnth = $mnth;
                 /*
                  * Если нет ошибок выводим
                  */
                 if ($mnth > 0 && $login) {
                     // Класс для работы с пользователем
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
                     $user = new users();
                     $gid = $user->GetUid($error, $login);
                     $user->GetUser($login);
                     if (!$gid) {
                         $alert['login'] = '******';
                     }
                     if ($gid == get_uid()) {
                         $alert['login'] = '******';
                     }
                     if (defined('SPEC_USER') && get_uid() == SPEC_USER) {
                         $alert['login'] = '******';
                     }
                     if (!$alert) {
                         $role = $user->GetRole($login, $error);
                         /*
                          * Высчитываем тариф для обработки. Тариф зависит от количества месяцев (Действуют специальные скидки)
                          */
                         if (substr($role, 0, 1) != '0') {
                             $tarif = 16;
                         } else {
                             $tarif = 52;
                             if ($mnth == 3) {
                                 $tarif = 66;
                             }
                             if ($mnth == 6) {
                                 $tarif = 67;
                             }
                             if ($mnth == 12) {
                                 $tarif = 68;
                             }
                         }
                         $ok = $prof->GiftOrderedTarif($bill_id, $gift_id, $gid, get_uid(), $tr_id, $mnth, $msg, $tarif);
                         // Оплата подарка
                         if ($ok) {
                             // Посылаем уведомление о подарке и переносим на страницу успешной оплаты
                             $sm = new smail();
                             $sm->NewGift($_SESSION['login'], $login, $msg, $gift_id);
                             $_SESSION['success_aid'] = $bill_id;
                             header("Location: /{$this->name_page}/success/");
                             exit;
                         }
                         unset($msg);
                     }
                 } else {
                     $alert['login'] = '******';
                 }
                 front::og('tpl')->error = $alert;
             }
             front::og('tpl')->display('bill/bill_gift_pro.tpl');
             break;
         case 'main':
             // Вывод подстраницы "Платное размещение в разделе"
             front::og('tpl')->type = 1;
             // Типа размещения = неделя
             /*
              * Обработка события "Подарить" - при нажатии кнопки подарить
              */
             if ($_POST['act']) {
                 $type = intval(trim($_POST['type']));
                 // Сколько недель
                 $login = trim(strip_tags($_POST['login']));
                 $msg = change_q_x(__paramInit('string', null, 'msg', null, 300));
                 /**
                  * Класс для обработки оплаты и взаимодействия механизма вывода.
                  */
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/firstpage.php';
                 $prof = new firstpage();
                 $tr_id = $_REQUEST['transaction_id'];
                 if (!$tr_id) {
                     $this->account->view_error('Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.');
                 }
                 front::og('tpl')->tr_id = $tr_id;
                 front::og('tpl')->login = $login;
                 front::og('tpl')->msg = $msg;
                 front::og('tpl')->type = $type;
                 if (!$type) {
                     $alert['type'] = 'Не выбрано количество недель.';
                 } else {
                     $d_time = "{$type} неделя";
                     $intv = "{$type} weeks";
                     if ($login) {
                         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
                         $user = new users();
                         $gid = $user->GetUid($error, $login);
                         $user->GetUser($login);
                         if (!$gid) {
                             $alert['login'] = '******';
                         }
                         if (is_emp($user->role)) {
                             $alert['login'] = '******';
                         }
                         if ($gid == get_uid()) {
                             $alert['login'] = '******';
                         }
                         if (defined('SPEC_USER') && get_uid() == SPEC_USER) {
                             $alert['login'] = '******';
                         }
                         if (!$alert) {
                             $order_id = $prof->Gift($bill_id, $gift_id, $gid, get_uid(), $tr_id, $intv, 17, $msg, $type);
                             if (!$order_id) {
                                 header('Location: /bill/fail/');
                                 // Если оплата не прошла
                                 exit;
                             } else {
                                 // Уведомление на почту
                                 $sm = new smail();
                                 $sm->NewGift($_SESSION['login'], $login, $msg, $gift_id);
                                 $_SESSION['success_aid'] = $bill_id;
                                 header("Location: /{$this->name_page}/success/");
                                 // Если все прошло успешно переносим на страницу - Успешно
                                 exit;
                             }
                         }
                     } else {
                         $alert['login'] = '******';
                     }
                 }
                 front::og('tpl')->error = $alert;
             }
             front::og('tpl')->display('bill/bill_gift_main.tpl');
             break;
         case 'fronttop':
             // Обработка подстраницы "Платные места наверху главной страницы"
             // Событие нажатия кнопки "Подарить"
             if ($_POST['act']) {
                 $login = trim(strip_tags($_POST['login']));
                 // Логин
                 $msg = change_q_x(__paramInit('string', null, 'msg', null, 300));
                 $tr_id = $_REQUEST['transaction_id'];
                 if (!$tr_id) {
                     $this->account->view_error('Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.');
                 }
                 front::og('tpl')->tr_id = $tr_id;
                 front::og('tpl')->login = $login;
                 front::og('tpl')->msg = $msg;
                 if ($login) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
                     $user = new users();
                     $gid = $user->GetUid($error, $login);
                     $user->GetUser($login);
                     if (is_emp($user->role)) {
                         $alert['login'] = '******';
                     }
                     if ($gid == get_uid()) {
                         $alert['login'] = '******';
                     }
                     if (defined('SPEC_USER') && get_uid() == SPEC_USER) {
                         $alert['login'] = '******';
                     }
                     if (!$gid) {
                         $alert['login'] = '******';
                     }
                     if (!$alert) {
                         /**
                          * Класс для работы с оплатой подарка.
                          */
                         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pay_place.php';
                         $place = new pay_place();
                         $tarif = 69;
                         $profs = $place->gift($bill_id, $gift_id, $tr_id, $gid, get_uid(), $msg, $tarif);
                         // Оплачиваем подарок
                         if ($profs) {
                             $_SESSION['success_aid'] = $bill_id;
                             header("Location: /{$this->name_page}/success/");
                             // Все прошло успешно
                             exit;
                         }
                     }
                 } else {
                     $alert['login'] = '******';
                 }
                 front::og('tpl')->error = @$alert;
                 // Переменная ошибок
             }
             front::og('tpl')->display('bill/bill_gift_fronttop.tpl');
             break;
         case 'cattop':
             // Обработка подстраницы "Платные места наверху каталога"
             // Событие нажатия кнопки "Подарить"
             if ($_POST['act']) {
                 $login = trim(strip_tags($_POST['login']));
                 // Логин
                 $msg = change_q_x(__paramInit('string', null, 'msg', null, 300));
                 $tr_id = $_REQUEST['transaction_id'];
                 if (!$tr_id) {
                     $this->account->view_error('Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.');
                 }
                 front::og('tpl')->tr_id = $tr_id;
                 front::og('tpl')->login = $login;
                 front::og('tpl')->msg = $msg;
                 if ($login) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
                     $user = new users();
                     $gid = $user->GetUid($error, $login);
                     $user->GetUser($login);
                     if (!$gid) {
                         $alert['login'] = '******';
                     }
                     if (is_emp($user->role)) {
                         $alert['login'] = '******';
                     }
                     if ($gid == get_uid()) {
                         $alert['login'] = '******';
                     }
                     if (defined('SPEC_USER') && get_uid() == SPEC_USER) {
                         $alert['login'] = '******';
                     }
                     if (!$alert) {
                         /**
                          * Класс для работы с оплатой подарка.
                          */
                         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pay_place.php';
                         $place = new pay_place(1);
                         $tarif = 83;
                         $profs = $place->gift($bill_id, $gift_id, $tr_id, $gid, get_uid(), $msg, $tarif);
                         // Оплачиваем подарок
                         if ($profs) {
                             $_SESSION['success_aid'] = $bill_id;
                             header("Location: /{$this->name_page}/success/");
                             // Все прошло успешно
                             exit;
                         }
                     }
                 } else {
                     $alert['login'] = '******';
                 }
                 front::og('tpl')->error = @$alert;
                 // Переменная ошибок
             }
             front::og('tpl')->display('bill/bill_gift_cattop.tpl');
             break;
         case 'catalog':
             // Обработка подстраницы "Платные места в каталоге в подарок"
             // Событие нажатия кнопки "Подарить"
             front::og('tpl')->filter_categories = professions::GetAllGroupsLite(true);
             front::og('tpl')->filter_subcategories = professions::GetAllProfessions(1);
             $x = new op_codes();
             $x->GetRow(84);
             $top_p = $x->sum;
             $x->GetRow(85);
             $inside_p = $x->sum;
             front::og('tpl')->price_top = $top_p;
             front::og('tpl')->price_inside = $inside_p;
             if ($_POST['act']) {
                 $login = trim(strip_tags($_POST['login']));
                 // Логин
                 $msg = change_q_x(__paramInit('string', null, 'msg', null, 300));
                 $pf_category = __paramInit('int', null, 'pf_category', 0);
                 $pf_subcategory = __paramInit('int', null, 'pf_subcategory', 0);
                 //echo '<pre>'; print_r($_POST); exit('</pre>');
                 $tr_id = $_REQUEST['transaction_id'];
                 if (!$tr_id) {
                     $this->account->view_error('Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.');
                 }
                 front::og('tpl')->tr_id = $tr_id;
                 front::og('tpl')->login = $login;
                 front::og('tpl')->msg = $msg;
                 front::og('tpl')->pf_category = $pf_category;
                 front::og('tpl')->pf_subcategory = $pf_subcategory;
                 if ($login) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
                     $user = new users();
                     $gid = $user->GetUid($error, $login);
                     $user->GetUser($login);
                     if (!$gid) {
                         $alert['login'] = '******';
                     }
                     if (is_emp($user->role)) {
                         $alert['login'] = '******';
                     }
                     if ($gid == get_uid()) {
                         $alert['login'] = '******';
                     }
                     if (defined('SPEC_USER') && get_uid() == SPEC_USER) {
                         $alert['login'] = '******';
                     }
                     $weeks = (int) $_POST['weeks'];
                     if (!$weeks) {
                         $alert['week'] = 'Данное поле является обязательным';
                     }
                     if (!$alert) {
                         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/firstpage.php';
                         $prof = new firstpage();
                         $pf_category = (int) $_POST['pf_category'];
                         $pf_subcategory = (int) $_POST['pf_subcategory'];
                         $page = !$pf_subcategory ? 0 : $pf_subcategory;
                         $place_info = array($page => $weeks);
                         $op_code = $page ? 85 : 84;
                         //                                                                               require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/account.php");
                         //                                                                                $account = new account();
                         //                                                                                $account ->/ view_error("Невозможно завершить транзакцию. Попробуйте повторить операцию с самого начала.");
                         $account = new account();
                         if ($prof->GiftOrderedCat($bill_id, $gift_id, $gid, get_uid(), $tr_id, $page, (int) $weeks, $op_code, $msg)) {
                             $_SESSION['success_aid'] = $bill_id;
                             header("Location: /{$this->name_page}/success/");
                             // Все прошло успешно
                             exit;
                         }
                     }
                 } else {
                     $alert['login'] = '******';
                 }
                 front::og('tpl')->error = @$alert;
                 // Переменная ошибок
             }
             front::og('tpl')->display('bill/bill_gift_catalog.tpl');
             break;
         default:
             /*
              * По умолчанию выводим главную страницу раздела "Подарки"
              */
             front::og('tpl')->display('bill/bill_gift.tpl');
             break;
     }
 }
Exemplo n.º 3
0
 /**
  * ВРЕМЕННАЯ
  * 
  * Акция Альфа-банк: первые 50 юзеров пополнившие на 1000 и более рублей счет, получают ПРО в подарок
  * 
  * @param float $nSummR
  * @param integer $sUid
  */
 function alphaBankGift($nSummR = 0, $sDate = '', $sUid = 0, $sLogin = '')
 {
     global $DB;
     if ($nSummR >= 1000 && $sDate < date('c', strtotime('2011-06-06'))) {
         // если сумма больше 1000
         /*
                 	$nCount = $DB->val('SELECT COUNT(DISTINCT u.uid) FROM users u 
                         LEFT JOIN account a ON u.uid = a.uid 
                         LEFT JOIN account_operations o ON a.id = o.billing_id 
                         WHERE o.op_code = 89 AND o.trs_sum >= 1000');
                 	
                 	if ( $nCount < 50 ) { // если юзер из числа первых 50
         $nCount = $DB->val('SELECT COUNT(o.billing_id) FROM users u 
                             LEFT JOIN account a ON u.uid = a.uid 
                             LEFT JOIN account_operations o ON a.id = o.billing_id 
                             WHERE u.uid = ?i AND o.op_code = 89 AND o.trs_sum >= 1000', $sUid );
         
         if ( $nCount == 1 ) { // если юзер еще не получал этот бонус (первое пополнение на 1000+)
         */
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
         $payed = new payed();
         $bill_id = $gift_id = 0;
         $tr_id = $this->start_transaction(103);
         $payed->GiftOrderedTarif($bill_id, $gift_id, $sUid, 103, $tr_id, '1', '', 90);
         // уведомление о подарке
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php';
         $sm = new smail();
         $sm->NewGift('admin', $sLogin, '', $gift_id);
         /*
             }
         }
         */
     }
 }
Exemplo n.º 4
0
 /**
  * Начисление неначисленных подарков).
  */
 public function failedGifts()
 {
     $db = new DB('master');
     $sql = 'SELECT * FROM __tmp_failed_gifts WHERE processed = 0 order by billing_id, op_id';
     $res = $db->rows($sql);
     $admin_uid = 103;
     //        $admin_uid = 1;
     foreach ($res as $row) {
         $op_code = $row['op_code'];
         $payment_sys = $row['payment_sys'];
         $trs_sum = $row['trs_sum'];
         $gid = $row['uid'];
         $dep_id = $row['billing_id'];
         $is_emp = $row['is_emp'];
         // акция с Webmoney ---------------------
         if ($op_code == 12) {
             if ($payment_sys == 10 || $payment_sys == 2) {
                 // WMR
                 if (!$is_emp) {
                     // подарок фрилансеру
                     if ($trs_sum >= 2000 && $trs_sum < 5000) {
                         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
                         $payed = new payed();
                         $bill_id = $gift_id = 0;
                         $tr_id = $this->start_transaction($admin_uid);
                         $payed->GiftOrderedTarif($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1', 'Аккаунт PRO в подарок при пополнении счета с помощью WebMoney', 91);
                     } elseif ($trs_sum >= 5000) {
                         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/firstpage.php';
                         $bill_id = $gift_id = 0;
                         $tr_id = $this->start_transaction($admin_uid);
                         $payed = new firstpage();
                         $payed->GiftOrdered($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1 week', 93, 'Первая страница в подарок при пополнении счета с помощью WebMoney', 'Первая страница в подарок при пополнении счета с помощью WebMoney');
                     }
                 } else {
                     // подарок работодателю
                     if ($trs_sum >= 1000 && $trs_sum < 5000) {
                         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
                         $payed = new payed();
                         $bill_id = $gift_id = 0;
                         $tr_id = $this->start_transaction($admin_uid);
                         $payed->GiftOrderedTarif($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1', 'Аккаунт PRO в подарок при пополнении счета с помощью WebMoney', 92);
                     } elseif ($trs_sum >= 5000) {
                         $bill_id = $gift_id = 0;
                         $tr_id = $this->start_transaction($admin_uid);
                         $error = $this->Gift($bill_id, $gift_id, $tr_id, 93, $admin_uid, $gid, 'Платный проект в подарок при пополнении счета с помощью WebMoney', '');
                         if ($error === 0) {
                             // Добавляем подарочное бабло на бонусный счет.
                             $this->depositBonusEx($dep_id, 85, 'Начисление денег на платный проект в подарок', '', 40);
                         }
                     }
                 }
             } else {
                 // WMZ - пока нет
             }
         }
         //акция банк/сбер
         if ($op_code == 12 && ($payment_sys == 4 || $payment_sys == 5)) {
             $_opstr = $payment_sys == 5 ? 'через квитанцию Сбербанка' : 'через безналичный расчет';
             if (!$is_emp) {
                 // подарок фрилансеру
                 if ($trs_sum >= 2000 && $trs_sum < 5000) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
                     $_opcode = $payment_sys == 5 ? 95 : 99;
                     $payed = new payed();
                     $bill_id = $gift_id = 0;
                     $tr_id = $this->start_transaction($admin_uid);
                     $payed->GiftOrderedTarif($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1', "Аккаунт PRO в подарок при пополнении счета {$_opstr}", $_opcode);
                 } elseif ($trs_sum >= 5000) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/firstpage.php';
                     $_opcode = $payment_sys == 5 ? 97 : 101;
                     $bill_id = $gift_id = 0;
                     $tr_id = $this->start_transaction($admin_uid);
                     $payed = new firstpage();
                     $payed->GiftOrdered($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1 week', $_opcode, "Первая страница в подарок при пополнении счета {$_opstr}", "Первая страница в подарок при пополнении счета {$_opstr}");
                 }
             } else {
                 // подарок работодателю
                 if ($trs_sum >= 1000 && $trs_sum < 5000) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
                     $_opcode = $payment_sys == 5 ? 96 : 100;
                     $payed = new payed();
                     $bill_id = $gift_id = 0;
                     $tr_id = $this->start_transaction($admin_uid);
                     $payed->GiftOrderedTarif($bill_id, $gift_id, $gid, $admin_uid, $tr_id, '1', "Аккаунт PRO в подарок при пополнении счета {$_opstr}", $_opcode);
                 } elseif ($trs_sum >= 5000) {
                     $bill_id = $gift_id = 0;
                     $tr_id = $this->start_transaction($admin_uid);
                     $_opcode = $payment_sys == 5 ? 97 : 101;
                     $error = $this->Gift($bill_id, $gift_id, $tr_id, $_opcode, $admin_uid, $gid, "Платный проект в подарок при пополнении счета {$_opstr}", "Платный проект в подарок при пополнении счета {$_opstr}");
                     if ($error === 0) {
                         // Добавляем подарочное бабло на бонусный счет.
                         $this->depositBonusEx($dep_id, 85, 'Начисление денег на платный проект в подарок', '', 40);
                     }
                 }
             }
         }
         var_dump($row['op_id']);
         $db->update('__tmp_failed_gifts', array('processed' => 1), 'op_id = ?', $row['op_id']);
     }
 }