public function indexAction() { //get the aff_camapaign_id $mysql['use_pixel_payout'] = 0; //see if it has the cookie in the campaign id, then the general match, then do whatever we can to grab SOMETHING to tie this lead to if ($_COOKIE['btclickid']) { $click_pid = $_COOKIE['btclickid']; } else { //ok grab the last click from this ip_id $mysql['ip_address'] = DB::quote($_SERVER['REMOTE_ADDR']); $daysago = time() - 2592000; // 30 days ago $click_sql1 = "\tSELECT \tbt_s_clicks.click_id\n\t\t\t\t\t\t\tFROM \t\tbt_s_clicks\n\t\t\t\t\t\t\tLEFT JOIN\tbt_s_clicks_advanced USING (click_id)\n\t\t\t\t\t\t\tLEFT JOIN \tbt_s_ips USING (ip_id)\n\t\t\t\t\t\t\tWHERE \tbt_s_ips.ip_address='" . $mysql['ip_address'] . "'\n\t\t\t\t\t\t\tAND\t\tbt_s_clicks.time >= '" . $daysago . "'\n\t\t\t\t\t\t\tORDER BY \tbt_s_clicks.click_id DESC\n\t\t\t\t\t\t\tLIMIT \t\t1"; $click_row1 = DB::getRow($click_sql1); $click_pid = base_convert($click_row1['click_id'], 10, 36); $mysql['ad_account_id'] = DB::quote($click_row1['ad_account_id']); } $click = ClickModel::model()->getRow(array('conditions' => array('click_id' => base_convert($click_pid, 36, 10)))); if (!$click) { BTApp::end(); } if ($click->get('ad_account_id')) { if (getArrayVar($_GET, 'amount') && is_numeric($_GET['amount'])) { $mysql['use_pixel_payout'] = 1; } if ($mysql['use_pixel_payout'] == 1) { $click->convert(0, $_GET['amount']); } else { $click->convert(); } if ($click->campaign->option('pixel_type')->value) { $sql = "select v1.var_value as v1, v2.var_value as v2, v3.var_value as v3, v4.var_value as v4 from bt_s_clicks_advanced adv\n\t\t\t\t\tleft join bt_s_variables v1 on (v1.var_id=adv.v1_id)\n\t\t\t\t\tleft join bt_s_variables v2 on (v2.var_id=adv.v2_id)\n\t\t\t\t\tleft join bt_s_variables v3 on (v3.var_id=adv.v3_id)\n\t\t\t\t\tleft join bt_s_variables v4 on (v4.var_id=adv.v4_id)\n\t\t\t\t\twhere adv.click_id=?"; $st = DB::prepare($sql); $st->execute(array($click->id())); $row = $st->fetch(); $data['v1'] = $row['v1']; $data['v2'] = $row['v2']; $data['v3'] = $row['v3']; $data['v4'] = $row['v4']; $data['clickid'] = $click->id(); $data['keyword'] = ''; $data['amount'] = $click->payout; $code = replaceTrackerPlaceholders($click->campaign->option('pixel_code')->value, $data); $code = str_replace('[[amount]]', $data['amount'], $code); switch ($click->campaign->option('pixel_type')->value) { case 1: case 2: case 3: echo $code; break; case 4: $ch = curl_init($code); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 Postback-Bot v1.0'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_exec($ch); break; } } } }
public function afterDataSet() { parent::afterDataSet(); $default = getArrayVar(self::$_defaultOpts, $this->name); if ($this->value == null) { $this->value = $default; } }
function getUrlDomain($url) { if (!$url) { return ''; } $parsed_url = @parse_url($url); $domain_host = getArrayVar($parsed_url, 'host'); $domain_host = str_replace('www.', '', $domain_host); return $domain_host; }
function saveTrackingVariables($campaign) { $mysql = array(); $v1 = DB::quote(getArrayVar($_GET, $campaign->option('var_v1')->value)); $v2 = DB::quote(getArrayVar($_GET, $campaign->option('var_v2')->value)); $v3 = DB::quote(getArrayVar($_GET, $campaign->option('var_v3')->value)); $v4 = DB::quote(getArrayVar($_GET, $campaign->option('var_v4')->value)); if (!$v1) { $v1 = DB::quote(getArrayVar($_GET, 'subid1')); } if (!$v2) { $v2 = DB::quote(getArrayVar($_GET, 'subid2')); } if (!$v3) { $v3 = DB::quote(getArrayVar($_GET, 'subid3')); } if (!$v4) { $v4 = DB::quote(getArrayVar($_GET, 'subid4')); } $v1 = strtolower($v1); $v2 = strtolower($v2); $v3 = strtolower($v3); $v4 = strtolower($v4); $row = DB::getRows("select var_id,LOWER(var_value) as var_value from bt_s_variables where var_value IN ('{$v1}','{$v2}','{$v3}','{$v4}')", 'var_value'); if (!isset($row[$v1])) { DB::query("insert into bt_s_variables set var_value='{$v1}'"); $row[$v1] = array('var_id' => DB::insertId(), 'var_value' => $v1); } if (!isset($row[$v2])) { DB::query("insert into bt_s_variables set var_value='{$v2}'"); $row[$v2] = array('var_id' => DB::insertId(), 'var_value' => $v2); } if (!isset($row[$v3])) { DB::query("insert into bt_s_variables set var_value='{$v3}'"); $row[$v3] = array('var_id' => DB::insertId(), 'var_value' => $v3); } if (!isset($row[$v4])) { DB::query("insert into bt_s_variables set var_value='{$v4}'"); $row[$v4] = array('var_id' => DB::insertId(), 'var_value' => $v4); } $mysql['v1'] = $row[$v1]['var_value']; $mysql['v1_id'] = $row[$v1]['var_id']; $mysql['v2'] = $row[$v2]['var_value']; $mysql['v2_id'] = $row[$v2]['var_id']; $mysql['v3'] = $row[$v3]['var_value']; $mysql['v3_id'] = $row[$v3]['var_id']; $mysql['v4'] = $row[$v4]['var_value']; $mysql['v4_id'] = $row[$v4]['var_id']; return $mysql; }
public function IndexAction() { if (!getArrayVar($_GET, 'clickid')) { BTApp::log("No SubID", 'postback_pixel', BT_SYSLOG_CRITICAL); } $click_pid = getArrayVar($_GET, 'clickid'); $mysql['click_id'] = DB::quote(base_convert($click_pid, 36, 10)); $mysql['pixel_id'] = 0; $mysql['use_pixel_payout'] = 0; if ($click_pid) { if ($_GET['amount'] && is_numeric($_GET['amount'])) { $mysql['use_pixel_payout'] = 1; $mysql['payout'] = DB::quote($_GET['amount']); } $click = ClickModel::model()->getRow(array('conditions' => array('click_id' => $mysql['click_id']))); if (!$click) { BTApp::end(); } if ($mysql['use_pixel_payout'] == 1) { $click->convert(0, $mysql['payout']); } else { $click->convert(); } if ($click->campaign->option('pixel_type')->value == 4) { $data = array(); $sql = "select v1.var_value as v1, v2.var_value as v2, v3.var_value as v3, v4.var_value as v4 from bt_s_clicks_advanced adv\n\t\t\t\t\tleft join bt_s_variables v1 on (v1.var_id=adv.v1_id)\n\t\t\t\t\tleft join bt_s_variables v2 on (v2.var_id=adv.v2_id)\n\t\t\t\t\tleft join bt_s_variables v3 on (v3.var_id=adv.v3_id)\n\t\t\t\t\tleft join bt_s_variables v4 on (v4.var_id=adv.v4_id)\n\t\t\t\t\twhere adv.click_id=?"; $st = DB::prepare($sql); $st->execute(array($click->id())); $row = $st->fetch(); $data['v1'] = $row['v1']; $data['v2'] = $row['v2']; $data['v3'] = $row['v3']; $data['v4'] = $row['v4']; $data['clickid'] = $click->id(); $data['keyword'] = ''; $data['amount'] = $click->payout; $pb_url = replaceTrackerPlaceholders($click->campaign->option('pixel_code')->value, $data); $pb_url = str_replace('[[amount]]', $data['amount'], $pb_url); $ch = curl_init($pb_url); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 Postback-Bot v1.0'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_exec($ch); } } }
function doReportExport($name, $callback, $type, $column_labels) { if ($type != 'csv') { return false; } $file_name = BT_ROOT . '/bt-config/cache/' . $name . '_' . getUserID() . '.' . $type; $fh = fopen($file_name, 'w+'); $page_cnt = 1000; $_GET['iDisplayStart'] = 0; $_GET['iDisplayLength'] = $page_cnt; extract(call_user_func($callback)); fputcsv($fh, explode(',', $column_labels)); if ($data) { do { switch ($type) { case 'csv': foreach ($data as $row) { $real_row = array(); foreach ($cols as $col) { $value = getArrayVar($row, $col); //if it has spaces, for example mobile breakdown $value = str_replace(' ', ' ', $value); $real_row[] = formatColumnValue($col, $value); } fputcsv($fh, $real_row); } } $_GET['iDisplayStart'] += $page_cnt; extract(call_user_func($callback)); } while ($data); } fclose($fh); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $name . '.' . $type); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); $content = file_get_contents($file_name); echo $content; }
public function ajaxAction($command = '', $params = array()) { switch ($command) { case 'data_spending': $start = getArrayVar($_GET, 'iDisplayStart', 0); $limit = getArrayVar($_GET, 'iDisplayLength', 10); $total_spends = SpendingModel::model()->count(); $spends = SpendingModel::model()->getRows(array('order' => ' date desc, campaign_id asc ')); $sEcho = $_GET['sEcho']; $data = array('sEcho' => (int) $sEcho, 'iTotalRecords' => (int) $total_spends, 'iTotalDisplayRecords' => (int) $total_spends, 'aaData' => array()); foreach ($spends as $spend) { $arr = array(); $arr[] = $spend->date; $arr[] = $spend->campaign_id . ' - ' . $spend->campaign->name; $arr[] = $spend->amount; $arr[] = '<input type="hidden" class="spending_id" value="' . $spend->spending_id . '" /> <a href="#" class="delete_spend button small grey tooltip"><i class="icon-remove"></i></a>'; $data['aaData'][] = $arr; } echo json_encode($data); break; } }
public static function logged_in() { $cookie = getArrayVar($_COOKIE, 'bt_auth'); if (!$cookie) { return false; } $split = explode('|', $cookie); if (!is_array($split) || count($split) < 2) { self::set_auth_cookie('', time() - 3600); return false; } $key = DB::quote($split[0]); $user_id = DB::quote($split[1]); $cur_time = DB::quote(date('Y-m-d H:i:s', time())); //$session = DB::getRow("select session_id,expire, fingerprint from bt_s_authsessions where `success`='1' and `user_id`='$user_id' and `key`='$key' and `expire` > '$cur_time' order by session_id desc"); $session = DB::getRow("select session_id,expire, fingerprint from bt_s_authsessions where `success`='1' and `user_id`='{$user_id}' and `key`='{$key}' order by session_id desc"); if (!$session) { self::set_auth_cookie('', time() - 3600); return false; } $fingerprint = sha1($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'] . $key); if ($session['fingerprint'] != $fingerprint) { self::set_auth_cookie('', time() - 3600); return false; } self::$expire = $session['expire']; self::$_authUserId = $split[1]; //extend cookie length if non-ajax request if (!IS_AJAX) { $expire = time() + AUTH_SESSION_LENGTH * 60; $expire_format = DB::quote(date('Y-m-d H:i:s', $expire)); self::set_auth_cookie($_COOKIE['bt_auth'], $expire); DB::query("update bt_s_authsessions set expire='" . $expire_format . "' where session_id='" . DB::quote($session['session_id']) . "'"); } return true; }
/> </td> <td> <input type="text" name="exclude_hostname[]" style="width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;" value="<?php echo getArrayVar($_GET, 'hostname'); ?> " /> </td> <td style="width: 7px; vertical-align: middle;"> <span class="icon icon-double-angle-right"></span> </td> <td> <input type="text" class="exclude_url" name="exclude_hostname_url[]" style="width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;" value="<?php echo getArrayVar($_GET, 'url'); ?> " /> </td> <td> <input type="text" name="exclude_hostname_memo[]" style="width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;" value="<?php echo getArrayVar($_GET, 'memo'); ?> " /> </td> <td style="vertical-align: middle; width: 30px;"> <img src="/theme/img/icons/16x16/delete.png" onclick="deleteDataRow(this);" style="cursor: pointer; width: 16px; height: 16px;" class="delete_hostname" /> </td> </tr>
public function postPrefsAction() { $error = array(); $mysql['campaign_type'] = @$_POST['campaign_type']; $mysql['click_filter'] = @$_POST['click_filter']; $mysql['user_mobile_breakdown_1'] = @$_POST['user_mobile_breakdown_1']; $mysql['user_mobile_breakdown_2'] = @$_POST['user_mobile_breakdown_2']; $mysql['user_mobile_breakdown_3'] = @$_POST['user_mobile_breakdown_3']; $mysql['user_mobile_breakdown_4'] = @$_POST['user_mobile_breakdown_4']; $mysql['traffic_source_id'] = @$_POST['traffic_source_id']; $mysql['breakdown'] = @$_POST['breakdown']; $mysql['campaign_id'] = @$_POST['campaign_id']; //predefined timelimit set, set the options if (@$_POST['time_predefined'] != '') { switch (@$_POST['time_predefined']) { case 'today': case 'yesterday': case 'last7': case 'last14': case 'last30': case 'thismonth': case 'lastmonth': case 'thisyear': case 'lastyear': case 'alltime': $clean['time_predefined'] = @$_POST['time_predefined']; break; } if (!isset($clean['time_predefined'])) { $error['time_predefined'] = '<div class="error">You choose an incorrect time user_preference</div>'; echo $error['time_predefined']; } } else { $from = explode(' ', @$_POST['from']); $from = explode('/', $from[0]); $from_month = trim($from[0]); $from_day = trim($from[1]); $from_year = trim($from[2]); $to = explode(' ', @$_POST['to']); $to = explode('/', $to[0]); $to_month = trim($to[0]); $to_day = trim($to[1]); $to_year = trim($to[2]); //if from or to, validate, and if validated, set it accordingly if ($from != '' and checkdate($from_month, $from_day, $from_year) == false) { $error['date'] = '<div class="error">Wrong date format, you must use the following time format: <strong>mm/dd/yyyy</strong></div>'; echo $error['date']; } else { $clean['time_from'] = mktime(0, 0, 0, $from_month, $from_day, $from_year); } if ($to != '' and checkdate($to_month, $to_day, $to_year) == false) { $error['date'] = '<div class="error">Wrong date format, you must use the following time format: <strong>mm/dd/yyyy</strong></div>'; echo $error['date']; } else { $clean['time_to'] = mktime(23, 59, 59, $to_month, $to_day, $to_year); } if (!$error && $clean['time_to'] < $clean['time_from']) { $error['date'] = '<div class="error">The end date must be <strong>after</strong> the start date.</div>'; echo $error['date']; } } if (!$error) { $mysql['time_predefined'] = getArrayVar($clean, 'time_predefined'); $mysql['time_from'] = getArrayVar($clean, 'time_from'); $mysql['time_to'] = getArrayVar($clean, 'time_to'); $fields = getReportFieldsForPage($_POST['opt_setting']); DB::startTransaction(); //Only add fields that should be on this page, so we don't overwrite other options foreach ($fields as $field => $val) { BTAuth::user()->setPref($field, $mysql[$field]); } DB::commit(); } }
protected function newCampaign() { $this->setupUser(); DB::startTransaction(); $traffic_source_id = getArrayVar($_POST, 'traffic_source_id'); $cloaker_id = getArrayVar($_POST, 'cloaker_id'); $slug = getArrayVar($_POST, 'slug'); $name = getArrayVar($_POST, 'name'); $type = getArrayVar($_POST, 'tracker_type'); if (!$name) { echo json_encode(array('message' => 'Please name your campaign')); DB::rollback(); BTApp::end(); } if (!$traffic_source_id) { echo json_encode(array('message' => "You must select a network account")); DB::rollback(); BTApp::end(); } $campaign = CampaignModel::model(); $campaign->traffic_source_id = $traffic_source_id; $campaign->cloaker_id = $cloaker_id; $campaign->name = $name; if ($cloaker_id) { if (!$slug) { echo json_encode(array('message' => 'Enter a URL slug')); DB::rollback(); BTApp::end(); } $campaign->slug = $slug; } else { $campaign->slug = ''; } $offer_prepend = ''; switch ($type) { case 'lp': $campaign->type = 1; $offer_prepend = 'lp'; break; case 'direct': $campaign->type = 2; break; } $campaign->save(); $position = 0; for ($i = 0, $cnt = count($_POST[$offer_prepend . 'offer_name']); $i < $cnt; $i++) { if ($_POST[$offer_prepend . 'offer_id'][$i]) { $offer = OfferModel::model()->getRowFromPk($_POST[$offer_prepend . 'offer_id'][$i]); } else { $offer = OfferModel::model(); } $offer->aff_network_id = $_POST[$offer_prepend . 'offer_aff_network_id'][$i]; $offer->name = $_POST[$offer_prepend . 'offer_name'][$i]; $offer->url = $_POST[$offer_prepend . 'offer_url'][$i]; $offer->payout = $_POST[$offer_prepend . 'offer_payout'][$i]; if (!$offer->save()) { echo json_encode(array('message' => 'Could not save offers')); DB::rollback(); BTApp::end(); } $campoffer = CampaignOfferModel::model(); $campoffer->campaign_id = $campaign->id(); $campoffer->offer_id = $offer->id(); switch ($type) { case 'lp': //Todo: add in LP offer rotation here. Same position, multiple entries & weights. $campoffer->position = $position; $campoffer->weight = 0; //$lp = LandingPageModel::model(); $position++; break; case 'direct': $campoffer->position = 0; $campoffer->weight = $_POST['offer_weight'][$i]; break; } if (!$campoffer->save()) { echo json_encode(array('message' => 'Could not save campaign offers')); DB::rollback(); BTApp::end(); } } switch ($type) { case 'lp': for ($i = 0, $cnt = count($_POST['lp_name']); $i < $cnt; $i++) { $lp = LandingPageModel::model(); $lp->name = $_POST['lp_name'][$i]; $lp->url = $_POST['lp_url'][$i]; if (!$lp->save()) { echo json_encode(array('message' => 'Could not save LPs')); DB::rollback(); BTApp::end(); } $camp_lp = CampaignLPModel::model(); $camp_lp->campaign_id = $campaign->id(); $camp_lp->landing_page_id = $lp->id(); $camp_lp->weight = $_POST['lp_weight'][$i]; if (!$camp_lp->save()) { echo json_encode(array('message' => 'Could not save campaign LPs')); DB::rollback(); BTApp::end(); } } break; } foreach ($_POST['opt'] as $name => $val) { if (!$campaign->addOption($name, $val)) { DB::rollback(); echo json_encode(array('message' => 'Could not save options')); BTApp::end(); } } for ($j = 0, $cnt = count($_POST['variable_name']); $j < $cnt; $j++) { $name = $_POST['variable_name'][$j]; $pass_lp = $_POST['variable_lp'][$j]; $pass_offer = $_POST['variable_offer'][$j]; $name = 'pass_' . $name; if ($campaign->type == 1) { $val = json_encode(array('lp' => $pass_lp, 'offer' => $pass_offer)); } else { $val = json_encode(array('offer' => '1')); } if (!$campaign->addOption($name, $val)) { DB::rollback(); echo json_encode(array('message' => 'Could not save Variables Passthroughs')); BTApp::end(); } } DB::commit(); echo json_encode(array('message' => '1', 'campaign_id' => $campaign->id())); }
function runBreakdown($user_pref) { //grab time $time = grab_timeframe(); //get breakdown pref $mysql['user_id'] = DB::quote(getUserID()); $filtered = getFilteredCondition(); //breakdown should be hour, day, month, or year. $breakdown = BTAuth::user()->getPref('breakdown'); //first delete old report $breakdown_sql = "\n\t\t\tDELETE\n\t\t\tFROM bt_c_statcache\n\t\t\tWHERE user_id='" . $mysql['user_id'] . "' and type='breakdown'\n\t\t"; DB::query($breakdown_sql); //($breakdown_sql); //find where to start from. $datetype = ''; //breakdown format if ($breakdown == 'day') { $datetype = '%Y-%m-%d'; } else { if ($breakdown == 'month') { $datetype = '%Y-%m'; } else { if ($breakdown == 'year') { $datetype = '%Y'; } } } //BTApp::end(); $start = $time['from']; $end = $time['to']; $spend_from = date("Y-m-d", $start); $spend_to = date("Y-m-d", $end); /****GET SPENDING****/ $sql = "select sum(amount) as cost, FROM_UNIXTIME(UNIX_TIMESTAMP(date),'{$datetype}') as date from bt_u_spending \n\t\t\t\twhere date >= '{$spend_from}' and date <= '{$spend_to}' "; $sql .= getSpendingReportFilters('bt_u_spending', getReportOptionsForPage('overview/breakdown')); $sql .= "group by date"; $spending_data = DB::getRows($sql, 'date'); /****END SPENDING****/ $offset = date('Z'); $bulk = new DB_Bulk_Insert('bt_c_statcache', array('user_id', 'time_from', 'time_to', 'type')); $x = 0; while ($end > $start) { if ($breakdown == 'day') { $yr = date('Y', $start); $mo = date('m', $start); $dy = date('d', $start); $from = mktime(0, 0, 0, $mo, $dy, $yr); $to = mktime(23, 59, 59, $mo, $dy, $yr); $start = $to + 1; } elseif ($breakdown == 'month') { $yr = date('Y', $start); $mo = date('m', $start); $from = mktime(0, 0, 0, $mo, 1, $yr); $to = mktime(23, 59, 59, $mo + 1, 0, $yr); $start = $to + 1; } elseif ($breakdown == 'year') { $yr = date('Y', $start); $from = mktime(0, 0, 0, 1, 1, $yr); $to = mktime(23, 59, 59, 1, 0, $yr + 1); $start = $to + 1; } $bulk->insert(array($mysql['user_id'], "FROM_UNIXTIME('" . $from . "','{$datetype}')", "FROM_UNIXTIME('" . $to . "','{$datetype}')", "'breakdown'")); } $bulk->execute(); $user_id = DB::quote(getUserID()); $start = DB::quote($time['from']); $end = DB::quote($time['to']); $sql = "\n\t\tSELECT COUNT(*) AS clicks, (SUM(click.payout*click.lead) / sum(click.lead)) as payout, SUM(click.lead) AS leads, SUM(click.payout*click.lead) AS income, \n\t\tFROM_UNIXTIME(click.time + {$offset},'{$datetype}') as date\n\n\t\tFROM \n\t\t"; $sql .= getReportFilters('overview/breakdown'); $sql .= "\n\t\tgroup by date\n\t\torder by null\n\t\t"; //echo $sql . "<br>"; //echo $click_sql; $click_rows = DB::getRows($sql); foreach ($click_rows as $click_row) { //get the stats $clicks = 0; $clicks = $click_row['clicks']; $mysql['date'] = $click_row['date']; if ($clicks) { $cost = getArrayVar($spending_data, $click_row['date'], array('cost' => 0)); $cost = $cost['cost']; $avg_cpc = calculate_cpc($clicks, $cost); } else { $avg_cpc = 0; $cost = 0; } //leads $leads = $click_row['leads']; //signup ratio $conv = calculate_conv($clicks, $leads); //were not using payout //current payout $payout = $click_row['payout']; //income $income = 0; $income = $click_row['income']; //grab the EPC $epc = calculate_epc($clicks, $income); //net income $net = 0; $net = $income - $cost; //roi $roi = calculate_roi($income, $cost); //html escape vars $mysql['clicks'] = DB::quote($clicks); $mysql['leads'] = DB::quote($leads); $mysql['conv'] = DB::quote($conv); $mysql['epc'] = DB::quote($epc); $mysql['avg_cpc'] = DB::quote($avg_cpc); $mysql['income'] = DB::quote($income); $mysql['cost'] = DB::quote($cost); $mysql['net'] = DB::quote($net); $mysql['roi'] = DB::quote($roi); $mysql['payout'] = DB::quote($payout); //insert chart $sort_breakdown_sql = "\n\t\t\t\tupdate\n\t\t\t\t\tbt_c_statcache\n\t\t\t\tSET\n\t\t\t\t\tclicks='" . $mysql['clicks'] . "',\n\t\t\t\t\tleads='" . $mysql['leads'] . "',\n\t\t\t\t\tconv='" . $mysql['conv'] . "',\n\t\t\t\t\tpayout='" . $mysql['payout'] . "',\n\t\t\t\t\tepc='" . $mysql['epc'] . "',\n\t\t\t\t\tcpc='" . $mysql['avg_cpc'] . "',\n\t\t\t\t\tincome='" . $mysql['income'] . "',\n\t\t\t\t\tcost='" . $mysql['cost'] . "',\n\t\t\t\t\tnet='" . $mysql['net'] . "',\n\t\t\t\t\troi='" . $mysql['roi'] . "'\n\t\t\t\t\t\n\t\t\t\t\twhere\n\t\t\t\t\t\n\t\t\t\t\ttime_from='" . $mysql['date'] . "' and\n\t\t\t\t\tuser_id='" . $mysql['user_id'] . "' and\n\t\t\t\t\ttype='breakdown'"; DB::query($sort_breakdown_sql); //($sort_breakdown_sql); } }
public static function getBrowserName($id) { $browsers = self::getBrowsers(); return getArrayVar($browsers, $id); }
public function saveData($campaign, $cloaked = 0, $outbound_url = '') { $offer_id = 0; $landing_page_id = 0; if ($campaign->type == 2) { $campoffer = rotateDirectCampaign($campaign); if (!$campoffer) { BTApp::log("Direct Link: Invalid Offers For Tracker: " . $campaign->id(), 'direct', BT_SYSLOG_CRITICAL); } $payout = $campoffer->offer->payout; $offer_id = $campoffer->offer->id(); } else { if ($campaign->type == 1) { $camplp = rotateLPCampaign($campaign); $payout = 0; $landing_page = $camplp->landing_page; $landing_page_id = $landing_page->id(); if (!$landing_page) { BTApp::log("Landing Page: Invalid Landing Page ID: " . $landing_page_id . " For Tracker: " . $campaign->id(), 'direct', BT_SYSLOG_CRITICAL); } } } $ip_id = INDEXES::get_ip_id($_SERVER['REMOTE_ADDR']); $click = new ClickModel(); $click->offer_id = $offer_id; $click->landing_page_id = $landing_page_id; $click->traffic_source_id = $campaign->traffic_source_id; $click->payout = $payout; $click->filtered = FILTER::startFilter($ip_id); $click->user_id = $campaign->user_id; $click->cloaked = $cloaked; $click->campaign_id = $campaign->id(); $click->useRuleSet("track"); $click->save(); $vars = saveTrackingVariables($campaign); //if behind cloaker scripts, we use $_POST. Otherwise (normally) use HTTP_REFERER $referer = isset($_POST['referer']) ? $_POST['referer'] : getArrayVar($_SERVER, 'HTTP_REFERER'); $keyword = getArrayVar($_GET, $campaign->option('var_kw')->value); if (!$keyword) { $keyword = getArrayVar($_GET, 'kw'); if (!$keyword) { $keyword = getArrayVar($_GET, 'keyword'); } } $keyword_id = INDEXES::get_keyword_id($keyword); $platform = INDEXES::get_platform_and_browser_id(); $organization_id = 0; $geo_block_id = 0; $device_id = 0; require BT_ROOT . '/private/includes/traffic/devices_detect_inc.php'; $adv = new ClickAdvancedModel(); $adv->click_id = $click->id(); $adv->keyword_id = $keyword_id; $adv->ip_id = $ip_id; $adv->platform_id = $platform['platform']; $adv->browser_id = $platform['browser']; $adv->org_id = $organization_id; $adv->device_id = $device_id; $adv->v1_id = $vars['v1_id']; $adv->v2_id = $vars['v2_id']; $adv->v3_id = $vars['v3_id']; $adv->v4_id = $vars['v4_id']; $adv->location_id = $geo_block_id; $adv->campaign_id = $campaign->id(); $adv->useRuleSet('track'); $adv->save(); $data = $vars; $data['keyword'] = $keyword; $data['clickid'] = base_convert($click->click_id, 10, 36); if ($offer_id) { if ($outbound_url) { $redirect_url = $outbound_url; } else { $redirect_url = $campoffer->offer->url; $redirect_url = replaceTrackerPlaceholders($redirect_url, $data); } $landing_url = ''; } else { $redirect_url = ''; if ($outbound_url) { $landing_url = $outbound_url; } else { $landing_url = $landing_page->url; } } //set the cookie setClickIdCookie(base_convert($click->click_id, 10, 36)); $site = new ClickSiteModel(); $site->click_id = $click->id(); $site->referer_url = $referer; $site->referer_domain = getUrlDomain($referer); $site->offer_url = $redirect_url; $site->landing_url = $landing_url; $site->useRuleSet('track'); $site->save(); $pass_vars = array(); $to_append = ''; if ($landing_page_id) { $type = 'lp'; } else { $type = 'offer'; } foreach ($campaign->options as $option) { if (strpos($option->name, 'pass_') === 0) { $var_name = substr($option->name, 5); $val = getArrayVar($_GET, $var_name, ''); $pass = new ClickPassthroughModel(); $pass->click_id = $click->click_id; $pass->name = $var_name; $pass->value = $val; $pass->useRuleSet('track'); $pass->save(); $pass_vars[$var_name] = $pass; } } $to_append = http_build_query($this->getPassthroughsToAppend($campaign, $pass_vars, $type)); if ($offer_id) { //direct return appendQueryString($redirect_url, $to_append); } else { //lp return appendQueryString($landing_url, $to_append); } }
public function get($val) { return getArrayVar($this->_data, $val); }
public function affNetworksAction() { $this->useActionAsCurrentNav(); $add_success = false; $delete_success = false; $error = ''; if (isset($_POST['name'])) { if (isset($_POST['aff_network_id']) && $_POST['aff_network_id']) { $network = AffNetworkModel::model()->getRow(array('conditions' => array('aff_network_id' => $_POST['aff_network_id']))); $network->useRuleSet("edit"); } else { $network = AffNetworkModel::model(); $network->useRuleSet("new"); } $network->name = $_POST['name']; if ($network->save()) { $this->setVar("success", "Network Saved"); } else { $this->setVar('error', $network->getErrors()); } } else { if (isset($_GET['delete_aff_network_id'])) { $network = AffNetworkModel::model()->getRow(array('conditions' => array('aff_network_id' => $_GET['delete_aff_network_id']))); if ($network) { $network->delete(); $this->setVar("success", "Network Deleted"); } } } $id = getArrayVar($_GET, 'aff_network_id', 0); if (!($network = AffNetworkModel::model()->getRowFromPk($id))) { $network = AffNetworkModel::model(); } $this->setVar("title", "Affiliate Networks"); $aff_networks = AffNetworkModel::model()->getRows(array('order' => 'name asc')); $this->setVar('network', $network); $this->setVar('aff_networks', $aff_networks); $this->render("offers/aff_networks"); }
public function cloakerAction() { if (!($ip = $_POST['ip'])) { echo '0'; exit; } if (!($slug = $_POST['slug'])) { echo '0'; exit; } $row = DB::getRow("select * from bt_u_campaigns camp left join bt_u_cloakers cloak on cloak.cloaker_id=camp.cloaker_id\nwhere ((cloak.slug > '' and concat('/',cloak.slug,'/',camp.slug)='" . DB::quote($slug) . "')\nor (cloak.slug = '' and concat('/',camp.slug)='" . DB::quote($slug) . "'))"); $campaign = CampaignModel::model()->getRowFromPk($row['campaign_id']); $cloaker = $campaign->cloaker; if (!$campaign) { echo '0'; exit; } $ip_id = INDEXES::get_ip_id($ip); $referer = isset($_POST['referer']) ? $_POST['referer'] : ''; $user_agent = isset($_POST['user_agent']) ? $_POST['user_agent'] : ''; $hostname = gethostbyaddr($ip); $_SERVER['REMOTE_ADDR'] = $ip; $_SERVER['HTTP_REFERER'] = $referer; $_SERVER['HTTP_USER_AGENT'] = $user_agent; $_GET = array(); parse_str($_POST['query'], $_GET); $paused_redir = false; if ($campaign->option('advanced_redirect_status')->value) { $num_prev_visits = ClickAdvancedModel::getNumPreviousClicks($campaign->id(), $ip_id); $options = $cloaker->options; foreach ($options as $opt) { $opts[$opt->name] = $opt->value; } $opts = array_merge(CloakerOptionModel::defaultOptions(), $opts); $url = ''; //Check 1: blank referer? /*if(!trim($referer)) { $url = $opts['exclude_url']; }*/ $ip = DB::quote(ip2long($ip)); $referer = DB::quote($referer); $user_agent = DB::quote($user_agent); $hostname = DB::quote($hostname); $cloaker_id = DB::quote($cloaker->cloaker_id); if (!$url) { if (!($row = DB::getRow("select url from bt_u_cloaker_ips where cloaker_id='{$cloaker_id}' and ip_from <= '{$ip}' and ip_to >= '{$ip}'", null))) { if (!($row = DB::getRow("select url from bt_u_cloaker_referers where cloaker_id='{$cloaker_id}' and '{$referer}' REGEXP referer", null))) { if (!($row = DB::getRow("select url from bt_u_cloaker_hostnames where cloaker_id='{$cloaker_id}' and '{$hostname}' REGEXP hostname", null))) { $row = DB::getRow("select url from bt_u_cloaker_user_agents where cloaker_id='{$cloaker_id}' and '{$user_agent}' REGEXP user_agent", null); } } } } /******** ORG CHECK ***********/ // We always check the server too, in case the visitor is a known super-bad guy who should be // avoided, at all costs. if (!isset($opts['organizations'])) { $opts['organizations'] = '[]'; } $orgs_data = json_decode($opts['organizations']); $orgs = array(); foreach ($orgs_data as $data) { $orgs[] = $data[0]; } //CHECK BALLISTIC API SERVER $payload = array('ip' => getArrayVar($_POST, 'ip'), 'user_agent' => getArrayVar($_POST, 'user_agent'), 'orgs' => implode(',', $orgs), 'has_referer' => $_SERVER['HTTP_REFERER'] ? '1' : '0', 'version' => '1.0'); $ch = curl_init(API_SERVER . '/check.php?' . http_build_query($payload)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ret = curl_exec($ch); $org_url = ''; if ($ret != 0) { foreach ($orgs_data as $data) { if ($data[0] == $ret) { $org_url = $data[1]; } } if (!$org_url) { $org_url = $opts['exclude_url']; } } /****** END ORG CHECK *********/ if (!$url) { if (!$row) { //only use org url if it did not match any filtets locally $url = $org_url; } else { // found local match $url = $row['url'] ? $row['url'] : $opts['exclude_url']; } } //handle expiration first if (!$url && $campaign->option('adv_redir_clicks')->value < $opts['expiration']) { $is_cloaked = 1; $url = $opts['exclude_url']; } elseif (!$url && ($opts['clickfrequency'] && $num_prev_visits >= $opts['clickfrequency'])) { $is_cloaked = 1; $url = $opts['exclude_url']; } elseif (!isset($url) || !$url) { //redirect to offer, no cloak $is_cloaked = 0; $url = ''; } else { $is_cloaked = 1; } //Uptick click count, regardless of cloak status $clicks = $campaign->option('adv_redir_clicks'); $clicks->value = $clicks->value + 1; $clicks->save(); } else { $options = $cloaker->options; foreach ($options as $opt) { $opts[$opt->name] = $opt->value; } $opts = array_merge(CloakerOptionModel::defaultOptions(), $opts); //if the adv. redirect is paused $is_cloaked = 0; $url = $opts['exclude_url']; $paused_redir = true; } //save click data, this will also set the clickid cookie :) $tracker_controller = new TrackerController(); $url = $tracker_controller->saveData($campaign, $is_cloaked, $url); if (!$is_cloaked && !$paused_redir) { //record uncloaked (normal) visitors. First we redirect through the tracking system $click_id = $_COOKIE['btclickid']; $type = $campaign->option('redirect_method')->value; echo getBTUrl() . "/tracker/advRedirect/?click_id={$click_id}&t={$type}"; } else { if (!$is_cloaked && $paused_redir) { echo $url; } else { echo $url; } } exit; }
function getDatatablesReportJson($report_data, $total_entries, $cols) { $sEcho = $_GET['sEcho']; $data = array('sEcho' => (int) $sEcho, 'iTotalRecords' => $total_entries, 'iTotalDisplayRecords' => $total_entries, 'aaData' => array()); foreach ($report_data as $row) { $html = array(); foreach ($cols as $col) { $value = getArrayVar($row, $col, null); if ($value === null) { $html[] = ''; } else { switch ($col) { case 'label': case 'actions': $html[] = formatColumnValue($col, $value); break; default: $html[] = BTHtml::encode(formatColumnValue($col, $value)); break; } } } $data['aaData'][] = $html; } return json_encode($data); }