コード例 #1
0
 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;
             }
         }
     }
 }
コード例 #2
0
 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");
 }
コード例 #3
0
 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();
 }
コード例 #4
0
 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);
         }
     }
 }
コード例 #5
0
 public function offerAction($params = array())
 {
     $campaign_id = getArrayVar($params, 0, 0);
     $offer_id = getArrayVar($params, 1, 0);
     //just one param
     if (!$offer_id) {
         if (!($campoffer = CampaignOfferModel::model()->getRowFromPk($campaign_id))) {
             echo "Error 0: Invalid offer ID";
             exit;
         }
         $campaign_id = $campoffer->campaign_id;
         $offer_id = $campoffer->offer_id;
     }
     //two params
     if (!($campaign = CampaignModel::model()->getRowFromPk($campaign_id))) {
         echo "Error 1: Invalid offer ID";
         exit;
     }
     if (!($offer = OfferModel::model()->getRowFromPk($offer_id))) {
         echo "Error 3: Invalid offer ID";
         exit;
     }
     //no LP id set, direct link?
     if ($campaign->type != 1) {
         echo "Error 2: Invalid LP ID";
         exit;
     }
     if ($_COOKIE['btclickid']) {
         $click = ClickModel::model()->getRow(array('conditions' => array('click_id' => base_convert($_COOKIE['btclickid'], 36, 10))));
         if (!$click) {
             echo "Error 4: Invalid click";
             exit;
         } else {
             if (!$click->landing_page_id) {
                 echo "Error 8: Invalid click";
                 exit;
             } else {
                 if ($click->offer_id) {
                     //new click (offer already set). Use old data
                     $new_click = clone $click;
                     $new_click->offer_id = 0;
                     $new_click->filtered = 2;
                     //always filter as repeat visitor
                     $new_click->lead = 0;
                     $new_click->useRuleSet('track');
                     $new_click->save(false, true);
                     $id = $new_click->id();
                     $new_adv = clone $click->advanced;
                     $new_adv->click_id = $id;
                     $new_adv->save(false, true);
                     $new_site = clone $click->site;
                     $new_site->click_id = $id;
                     $new_site->save(false, true);
                     $passes = array();
                     foreach ($click->passthroughs as $pass) {
                         $new_pass = clone $pass;
                         $new_pass->click_id = $id;
                         $new_pass->name = $pass->name;
                         $new_pass->save(false, true);
                         $passes[$new_pass->name] = $new_pass;
                     }
                     $click = $new_click;
                     $click->addJoinedModel('advanced', $new_adv);
                     $click->addJoinedModel('site', $new_site);
                     $click->addJoinedModel('passthroughs', $passes);
                     setClickIdCookie(base_convert($click->click_id, 10, 36));
                 }
             }
         }
     } else {
         //if no cookie, generate new click
         $this->saveData($campaign, 0, '');
         if (!$_COOKIE['btclickid']) {
             echo "Error 2: Database Error";
             exit;
         }
         $click = ClickModel::model()->getRow(array('conditions' => array('click_id' => base_convert($_COOKIE['btclickid'], 36, 10))));
     }
     if (!$click) {
         echo "Error 6: Invalid click";
         exit;
     }
     $data = $click->advanced->getAdvPlaceholderData();
     $data['clickid'] = base_convert($click->click_id, 10, 36);
     //set campaign id
     $click->offer_id = $offer->id();
     $click->payout = $offer->payout;
     $click->useRuleSet('lpoffer');
     $click->save();
     //set offer urls
     $redirect_url = $offer->url;
     $redirect_url = replaceTrackerPlaceholders($redirect_url, $data);
     $click->site->offer_url = $redirect_url;
     $click->site->useRuleSet('lpoffer');
     $click->site->save();
     $append = array();
     foreach ($click->passthroughs as $pass) {
         $opt = json_decode($campaign->options['pass_' . $pass->name]->value);
         if ($opt->offer) {
             $append[$pass->name] = $pass->value;
         }
     }
     $_GET = array();
     $_GET['url'] = appendQueryString($redirect_url, http_build_query($append));
     $_GET['c'] = 0;
     $_GET['t'] = $campaign->options['redirect_method']->value;
     $this->redirectAction();
 }