public function indexAction()
 {
     $this->loadModel("ClickModel");
     $model = new ClickModel();
     $top_stats = $model->dashboardTopStats(getUserId());
     $this->setVar("title", "Dashboard");
     $this->setVar("top_stats", $top_stats);
     $this->render("dashboard/dashboard");
 }
 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 indexAction()
 {
     $success = false;
     if (isset($_POST['clickids'])) {
         if ($clickids = $_POST['clickids']) {
             $clickids = trim($clickids);
             $clickids = explode("\n", $clickids);
             $clickids = str_replace("\r", '', $clickids);
             foreach ($clickids as $sid) {
                 $click = ClickModel::model()->getRow(array('conditions' => array('click_id' => base_convert($sid, 36, 10))));
                 if ($click) {
                     if ($_POST['update_type'] == 1) {
                         $click->convert(1);
                     } else {
                         $click->clearConversion();
                     }
                 }
             }
             $_POST['clickids'] = '';
             $success = true;
         }
     } else {
         $_POST['clickids'] = '';
     }
     $this->setVar("clickids", $_POST['clickids']);
     $this->setVar("title", "Update Clicks");
     $this->setVar("success", $success);
     $this->render("updateclick/index");
 }
 public function clearDataAction()
 {
     BTApp::importModel("ClickModel");
     BTApp::importModel("ClickSiteModel");
     BTApp::importModel("ClickAdvancedModel");
     BTApp::importModel("ClickPassthroughModel");
     ClickSiteModel::model()->deleteOldData();
     ClickAdvancedModel::model()->deleteOldData();
     ClickModel::model()->deleteOldData();
     ClickPassthroughModel::model()->deleteOldData();
 }
 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);
         }
     }
 }
 public function dataAction()
 {
     $this->loadModel("ClickModel");
     $model = new ClickModel();
     $data = $model->clickSpy(getUserId(), $_GET['iDisplayStart'], $_GET['iDisplayLength']);
     $cnt = $data['count'];
     $click_rows = $data['click_rows'];
     $sEcho = $_GET['sEcho'];
     $data = array('sEcho' => (int) $sEcho, 'iTotalRecords' => $cnt, 'iTotalDisplayRecords' => $cnt, 'aaData' => array());
     foreach ($click_rows as $click_row) {
         $html['referer'] = BTHtml::encode($click_row['referer_url_address']);
         $html['referer_host'] = BTHtml::encode($click_row['referer_domain_host']);
         $html['redirect'] = BTHtml::encode($click_row['redirect_url_address']);
         $html['click_pid'] = BTHtml::encode(base_convert($click_row['click_id'], 10, 36));
         $html['time'] = date('m/d/y g:ia', $click_row['time']);
         $html['ts.name'] = BTHtml::encode($click_row['ts.name']);
         $html['ip_address'] = BTHtml::encode($click_row['ip_address']);
         $html['keyword'] = BTHtml::encode($click_row['keyword']);
         $html['lead'] = BTHtml::encode($click_row['lead']);
         $html['filtered'] = BTHtml::encode($click_row['filtered']);
         $html['landing'] = BTHtml::encode($click_row['landing']);
         $html['name'] = BTHtml::encode($click_row['name']);
         $html['browser_id'] = '';
         if ($click_row['browser_id']) {
             $html['browser_id'] = '<img width="16" height="16" class="tooltip" title="' . Browser::getBrowserName($click_row['browser_id']) . '" src="/theme/img/icons/browsers/' . $click_row['browser_id'] . '.png"/>';
         }
         $html['platform_id'] = '';
         if ($click_row['platform_id']) {
             $html['platform_id'] = '<img width="16" height="16" class="tooltip" title="' . Browser::getPlatformName($click_row['platform_id']) . '" src="/theme/img/icons/platforms/' . $click_row['platform_id'] . '.png"/>';
         }
         $data_array = array();
         $data_array[] = strtoupper($html['click_pid']);
         $admin_image = '';
         // if a click happened from the admin use user.png
         if ($click_row['filtered'] == 1) {
             // check if logged in user clicked
             $admin_image = '<img width="16" height="16" class="tooltip" src="/theme/img/icons/packs/iconsweets2/16x16/user.png" alt="Affiliate Click" title="Affiliate Click"/>';
         }
         $filt = '';
         $landingpage_image = '';
         $offer_image = '';
         $repeated_user = '';
         if ($click_row['lead'] == '1') {
             $alt = 'Converted Click';
             $filt = '<img width="16" height="16" class="tooltip" src="/theme/img/icons/16x16/money_dollar.png" alt="' . $alt . '" title="' . $alt . '" width="16px" height="16px"/>';
         }
         // if a link is going to an offer directly use the bended arrow right.png
         $offer_image = $html['redirect'] ? sprintf('<a href="%s" target="_new"><img width="16" height="16" class="tooltip" src="/theme/img/icons/packs/iconsweets2/16x16/bended-arrow-right.png" alt="Offer Click" title="Offer Click"/></a>', $html['redirect']) : '';
         if (!$offer_image) {
             // if the click happens on a landing page, they icon should be the document.png
             $landingpage_image = $html['landing'] ? sprintf('<a href="%s" target="_new"><img width="16" height="16" class="tooltip" src="/theme/img/icons/packs/iconsweets2/16x16/document.png" alt="Landing"  title="Landing Page"/></a>', $html['landing']) : '';
         }
         // if a click happened from a repeated user use footprint.png
         if ($click_row['filtered'] == 2) {
             // check if repeated user
             $repeated_user = '******';
         }
         $cloaked_icon = '';
         if ($click_row['cloaked']) {
             $cloaked_icon = '<img width="16" height="16" class="tooltip" src="/theme/img/icons/packs/iconsweets2/16x16/bulls-eye.png" alt="Safe Page" title="Visitor Was Filtered By An Advanced Redirect."/>';
         }
         if ($filt) {
             $data_array[] = $filt . $admin_image . $repeated_user . $cloaked_icon;
         } else {
             $data_array[] = $filt . $landingpage_image . $offer_image . $admin_image . $repeated_user . $cloaked_icon;
         }
         $data_array[] = $html['time'];
         $data_array[] = '<span title="' . $html['keyword'] . '">' . $html['keyword'] . '</span>';
         $data_array[] = $html['name'];
         $data_array[] = sprintf('<a href="%s" target="_new" title="Referer" class="tablelink">%s</a> ', $html['referer'], $html['referer_host']);
         $data_array[] = sprintf('<a target="_new"  href="http://whois.arin.net/rest/ip/%s" class="tablelink">%s</a>', $html['ip_address'], $html['ip_address']);
         $data_array[] = $html['browser_id'] . ' ' . $html['platform_id'];
         $data['aaData'][] = $data_array;
     }
     echo json_encode($data);
 }
 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);
     }
 }