Esempio n. 1
0
     $id = rq('id', 2);
     delete_offer($id);
     cache_links_update();
     exit;
     break;
 case 'restore_link':
     $id = rq('id', 2);
     delete_offer($id, 0);
     cache_links_update();
     exit;
     break;
 case 'delete_sale':
     $type = $_REQUEST['type'];
     $click_id = rq('click_id', 2);
     $conversion_id = rq('conversion_id', 2);
     delete_sale($click_id, $conversion_id, $type);
     exit;
     break;
 case 'get_sales':
     $sales = get_sales($_POST['sType'], $_POST['sStart'], $_POST['sEnd']);
     echo json_encode($sales);
     exit;
     break;
 case 'delete_rule':
     $rule_id = $_REQUEST['id'];
     delete_rule($rule_id);
     exit;
     break;
 case 'restore_rule':
     $rule_id = intval($_POST['id']);
     restore_rule($rule_id);
Esempio n. 2
0
 function process_conversion($data)
 {
     $cnt = count($this->params);
     $i = 0;
     $is_lead = isset($data['is_lead']) ? 1 : 0;
     $is_sale = isset($data['is_sale']) ? 1 : 0;
     unset($data['is_lead']);
     unset($data['is_sale']);
     switch ($data['txt_param20']) {
         case 'UAH':
         case 'uah':
             $data['profit'] = convert_to_usd('uah', $data['profit']);
             break;
         case 'USD':
         case 'usd':
             $data['profit'] = convert_to_usd('usd', $data['profit']);
             break;
         default:
             $data['profit'] = convert_to_usd('rub', $data['profit']);
             break;
     }
     // Специальная обработка "статусного постбэка" от сети CTR. В этом случае приходит только статус, связанный с остальными данными через order_id (i3) и нужно поменять статус соостветствующей конвертации.
     // https://uniquedesign.teamworkpm.net/tasks/3679474
     $ctr_order = false;
     // флаг, о том, что некоторые операции (замену логов) выполнять не нужно, так как это не полный запрос, а только статус
     if ($data['network'] == 'CTR' and !empty($data['status'])) {
         $q = 'SELECT * FROM `tbl_conversions` WHERE (`i3` = "' . mysql_real_escape_string($data['i3']) . '" AND `network` = "CTR") LIMIT 1';
         if ($rs = db_query($q) and mysql_num_rows($rs) > 0) {
             $r = mysql_fetch_assoc($rs);
             $data['subid'] = $r['subid'];
         }
         dmp($data);
         foreach ($data as $k => $v) {
             if (!in_array($k, array('network', 'i3', 'status', 'txt_status', 'ak', 'date_add', 'subid'))) {
                 unset($data[$k]);
             }
         }
         $ctr_order = true;
     }
     dmp($data);
     if (isset($data['subid']) && $data['subid'] != '') {
         //to_log('data', $data);
         $subid = $data['subid'];
         // мы скоро обнулим массив data, а subid нам ещё понадобится
         $status = $data['status'];
         $click_info = array();
         // информация о клике
         //Проверяем есть ли клик с этим SibID
         $q = 'SELECT * FROM `tbl_clicks` WHERE `subid` = "' . mysql_real_escape_string($subid) . '"';
         $r = mysql_query($q) or die(mysql_error());
         if (mysql_num_rows($r) > 0) {
             $click_info = mysql_fetch_assoc($r);
             $click_id = $click_info['id'];
             if ($data['profit'] > 0) {
                 $is_lead = $click_info['is_lead'] > 0 ? 1 : 0;
                 $is_sale = 1;
             } else {
                 $is_lead = 1;
                 $is_sale = $click_info['is_sale'] > 0 ? 1 : 0;
             }
             mysql_query('UPDATE `tbl_clicks` SET `is_sale` = ' . $is_sale . ', `is_lead` = ' . intval($is_lead) . ', `conversion_price_main` = "' . mysql_real_escape_string($data['profit']) . '" WHERE `id` = ' . $click_id) or die(mysql_error());
         }
         // ----------------------------
         // Готовим данные для конверсии
         // ----------------------------
         $upd = array();
         // Инициализируем массив для запроса на обновление
         // Дополнительные поля, которых нет в $params, но которые нам нужны в БД
         $additional_fields = array('date_add', 'txt_status', 'status', 'network', 'type');
         foreach ($data as $name => $value) {
             if (array_key_exists($name, $this->params) or in_array($name, $additional_fields)) {
                 $upd[$name] = $value;
                 unset($data[$name]);
             }
         }
         //if (empty($upd['date_add'])) {
         $upd['date_add'] = mysql_now();
         // date('Y-m-d H:i:s');
         //}
         // Проверяем, есть ли уже конверсия с таким SubID
         $q = 'SELECT * FROM `tbl_conversions` WHERE `subid` = "' . mysql_real_escape_string($subid) . '" LIMIT 1';
         $r = db_query($q) or die(mysql_error());
         if (mysql_num_rows($r) > 0) {
             $f = mysql_fetch_assoc($r);
             $upd['id'] = $conv_id = $f['id'];
             $q = updatesql($upd, 'tbl_conversions', 'id');
             db_query($q);
             // Чистим логи
             if (!$ctr_order) {
                 db_query('DELETE FROM `tbl_postback_params` WHERE `conv_id` = ' . $f['id']) or die(mysql_error());
             }
         } else {
             $q = insertsql($upd, 'tbl_conversions');
             db_query($q);
             $conv_id = mysql_insert_id();
         }
         // Нужно ли нам отменить продажу?
         if ($status == 2) {
             delete_sale($click_id, $conv_id, 'sale');
             //return false;
         }
         // S2S сети
         // https://uniquedesign.teamworkpm.net/tasks/4160565
         $q = "select * \n            \tfrom `tbl_adnets` \n            \twhere `status` = '0' \n            \tand `name` = '" . mysql_real_escape_string($data['n']) . "'";
         if ($rs = db_query($q) and mysql_num_rows($rs) > 0) {
             // Подставляем переменные в ссылку
             $replace = array('[SUBID]' => $subid, '[PROFIT_USD]' => $this->source_data['profit'], '[PROFIT_RUB]' => convert_usd_to('rub', $this->source_data['profit']), '[PROFIT_EUR]' => convert_usd_to('eur', $this->source_data['profit']), '[PROFIT_UAH]' => convert_usd_to('uah', $this->source_data['profit']));
             // Добавляем параметры Postback
             foreach ($this->source_data as $name => $value) {
                 $replace['[POSTBACK_' . $name . ']'] = $value;
             }
             // Добавляем параметры перехода
             for ($i = 1; $i <= 15; $i++) {
                 if (!empty($click_info['click_param_name' . $i])) {
                     $replace['[CLICK_' . $click_info['click_param_name' . $i] . ']'] = $click_info['click_param_value' . $i];
                 }
             }
             dmp($replace);
             while ($r = mysql_fetch_assoc($rs)) {
                 $url = $r['url'];
                 // Поставляем все переменные
                 foreach ($replace as $k => $v) {
                     $url = str_ireplace($k, $v, $url);
                 }
                 // Cleaning not used []-params
                 $url = preg_replace('/\\ = (\\[[a-z\\_0-9]+\\])/i', ' = ', $url);
                 $result = send_post_request($url, array());
                 // Сохраняем S2S лог
                 $str = date('Y-m-d H:i:s') . ' SubID: ' . $subid . "\nURL:" . $url . "\\Result:" . $result[1] . "\n\n";
                 dmp(htmlspecialchars($str));
                 file_put_contents(_CACHE_PATH . '/log/' . '.s2s_' . date('Y-m-d'), $str, FILE_APPEND | LOCK_EX);
             }
         }
         // Пишем postback логи
         foreach ($data as $name => $value) {
             if (strpos($name, 'pbsave_') !== false) {
                 $name = str_replace('pbsave_', '', $name);
                 $ins = array('conv_id' => $conv_id, 'name' => $name, 'value' => value);
                 $q = insertsql($ins, 'tbl_postback_params');
                 db_query($q);
             }
         }
     }
 }
Esempio n. 3
0
 function process_conversion($data)
 {
     // Default account currency id: 16; RUB
     $main_currency_id = 16;
     $cnt = count($this->params);
     $i = 0;
     $is_lead = isset($data['is_lead']) ? 1 : 0;
     $is_sale = isset($data['is_sale']) ? 1 : 0;
     unset($data['is_lead']);
     unset($data['is_sale']);
     $arr_currencies = get_active_currencies();
     $conversion_currency_code = strtoupper($data['txt_param20']);
     if ($conversion_currency_code == 'RUB') {
         $conversion_currency_code = 'RUR';
     }
     $conversion_currency_id = 0;
     foreach ($arr_currencies as $id => $cur) {
         if ($cur['code'] == $conversion_currency_code) {
             $conversion_currency_id = $id;
         }
     }
     // Currency is not found in active, use default currency
     if ($conversion_currency_id == 0) {
         $conversion_currency_id = $main_currency_id;
     }
     if ($conversion_currency_id == $main_currency_id) {
         $conversion_profit = $data['profit'];
     } else {
         $conversion_profit = convert_currency($data['profit'], $conversion_currency_id, $main_currency_id, date('Y-m-d'));
     }
     $conversion_profit_currency = $data['profit'];
     // Специальная обработка "статусного постбэка" от сети CTR.
     // В этом случае приходит только статус, связанный с остальными данными через order_id (i3)
     // и нужно поменять статус соостветствующей конвертации.
     $ctr_order = false;
     // флаг, о том, что некоторые операции (замену логов) выполнять не нужно,
     // так как это не полный запрос, а только статус
     if ($data['network'] == 'CTR' and !empty($data['status'])) {
         $q = 'SELECT * FROM `tbl_conversions` WHERE (`i3` = "' . mysql_real_escape_string($data['i3']) . '"
         AND `network` = "CTR") LIMIT 1';
         if ($rs = db_query($q) and mysql_num_rows($rs) > 0) {
             $r = mysql_fetch_assoc($rs);
             $data['subid'] = $r['subid'];
         }
         dmp($data);
         foreach ($data as $k => $v) {
             if (!in_array($k, array('network', 'i3', 'status', 'txt_status', 'ak', 'date_add', 'subid'))) {
                 unset($data[$k]);
             }
         }
         $ctr_order = true;
     }
     if (isset($data['subid']) && $data['subid'] != '') {
         $table = 'tbl_clicks';
         $subid = $data['subid'];
         // мы скоро обнулим массив data, а subid нам ещё понадобится
         $status = $data['status'];
         // Проверяем есть ли клик с этим SibID
         $q = 'SELECT `id`, `is_sale`, `is_lead` FROM `' . $table . '` WHERE `subid` = "' . mysql_real_escape_string($subid) . '"';
         $r = mysql_query($q) or die($q . '<br />' . mysql_error());
         if (mysql_num_rows($r) > 0) {
             $f = mysql_fetch_assoc($r);
             $click_id = $f['id'];
             if ($data['profit'] > 0) {
                 $is_lead = $f['is_lead'] > 0 ? 1 : 0;
                 $is_sale = 1;
             } else {
                 $is_lead = 1;
                 $is_sale = $f['is_sale'] > 0 ? 1 : 0;
             }
             $q = "UPDATE `" . $table . "` SET\n                `is_sale` = " . intval($is_sale) . ",\n                `is_lead` = " . intval($is_lead) . ",\n                `conversion_currency_sum` = '" . mysql_real_escape_string($conversion_profit_currency) . "',\n                `conversion_currency_id` = '" . mysql_real_escape_string($conversion_currency_id) . "',\n                `conversion_price_main` = '" . mysql_real_escape_string($conversion_profit) . "'\n                WHERE `id` = '" . mysql_real_escape_string($click_id) . "'";
             mysql_query($q) or die(mysql_error());
         }
         // ----------------------------
         // Готовим данные для конверсии
         // ----------------------------
         $upd = array();
         // Инициализируем массив для запроса на обновление
         // Дополнительные поля, которых нет в $params, но которые нам нужны в БД
         $additional_fields = array('date_add', 'txt_status', 'status', 'network', 'type');
         foreach ($data as $name => $value) {
             if (array_key_exists($name, $this->params) or in_array($name, $additional_fields)) {
                 $upd[$name] = $value;
                 unset($data[$name]);
             }
         }
         $upd['date_add'] = mysql_now();
         // date('Y-m-d H:i:s');
         $upd['profit'] = $conversion_profit;
         $upd['currency_id'] = $conversion_currency_id;
         $upd['profit_currency'] = $conversion_profit_currency;
         // Проверяем, есть ли уже конверсия с таким SubID
         $q = "SELECT * FROM `tbl_conversions` WHERE `subid` = '" . mysql_real_escape_string($subid) . "' LIMIT 1";
         $r = db_query($q) or die(mysql_error());
         if (mysql_num_rows($r) > 0) {
             $f = mysql_fetch_assoc($r);
             $upd['id'] = $conv_id = $f['id'];
             $q = updatesql($upd, 'tbl_conversions', 'id');
             db_query($q);
             // Чистим логи
             if (!$ctr_order) {
                 db_query('DELETE FROM `tbl_postback_params` WHERE `conv_id` = ' . $f['id']) or die(mysql_error());
             }
         } else {
             $q = insertsql($upd, 'tbl_conversions');
             db_query($q);
             $conv_id = mysql_insert_id();
         }
         // Нужно ли нам отменить продажу?
         if ($status == 2) {
             delete_sale($click_id, $conv_id, 'sale');
         }
         // Пишем postback логи
         foreach ($data as $name => $value) {
             if (strpos($name, 'pbsave_') !== false) {
                 $name = str_replace('pbsave_', '', $name);
                 $ins = array('conv_id' => $conv_id, 'name' => $name, 'value' => value);
                 $q = insertsql($ins, 'tbl_postback_params');
                 db_query($q);
             }
         }
     }
 }
function delete_sale_by_id($conversion_id)
{
    $sql = "select type, subid from tbl_conversions where id='" . _str($conversion_id) . "' limit 1";
    $result = mysql_query($sql);
    $row = mysql_fetch_assoc($result);
    $type = $row['type'];
    $subid = $row['subid'];
    $sql = "select id from tbl_clicks where subid='" . _str($subid) . "' limit 1";
    $result = mysql_query($sql);
    $row = mysql_fetch_assoc($result);
    $click_id = $row['id'];
    delete_sale($click_id, $conversion_id, $type);
    return;
}