コード例 #1
0
    public function inputProduct()
    {
        $cam = new CampaignModel();
        $arrCam = $cam->getAll();
        $prod = new ProdModel();
        $arrProd = $prod->getAll();
        $_SESSION['arrProd'] = $arrProd;
        ?>
<div class="input-group">
      
      <span class="input-group-addon" id="basic-addon1">Select Campaign :</span>
      <select class="form-control" onchange="getMatrix();" id="camp_select">
        <option value=""></option>
        <?php 
        foreach ($arrCam as $c) {
            ?>
        <option value="<?php 
            echo $c->camp_id;
            ?>
"><?php 
            echo $c->camp_name;
            ?>
</option>
        <?php 
        }
        ?>
    </select>
</div><!-- /input-group -->
    
 

<div id="camp_matrix" style="padding-top: 20px;">
    
</div>

<script>
function getMatrix(){
    var slc = $("#camp_select").val();
    if(slc!="")
    $("#camp_matrix").load("<?php 
        echo _SPPATH;
        ?>
CampaignWeb/getMatrix?cid="+slc);
}
</script>
<style>
    .productcamp{
        background-color: #dedede;
        margin: 5px;
        padding: 5px;
    }
    
</style>
        <?php 
        //pr($arrProd);
    }
コード例 #2
0
 function latest_deal()
 {
     $camp = new CampaignModel();
     $arr2 = $camp->getWhere("camp_active = 1 ORDER BY camp_pos_x ASC,camp_size DESC");
     //pr($arr);
     foreach ($arr2 as $cp) {
         $arrNachRow[$cp->camp_pos_x][] = $cp;
         $arrNachSize[$cp->camp_size][] = $cp;
     }
     $arr['arrNachRow'] = $arrNachRow;
     $arr['arrNachSize'] = $arrNachSize;
     $arr['camp'] = $camp;
     $layout_id = "eComm_latestdeal";
     $file = Layout::getFile($layout_id);
     //        echo "Pages/".$layout_id."/".$file;
     Mold::theme("Pages/" . $layout_id . "/" . $file, $arr);
 }
コード例 #3
0
 public function delete($bit = 0)
 {
     if (!$bit || $bit == DELETE_BIT_SELF) {
         $this->deleted = 1;
         $this->useRuleSet('delete');
         $this->save();
         BTApp::importModel('CampaignModel');
         CampaignModel::model()->deleteAll(array('traffic_source_id' => $this->id()), DELETE_BIT_TRAFFIC_SOURCE);
     }
     return true;
 }
コード例 #4
0
 public function indexAction()
 {
     $success = false;
     $error = array();
     if (isset($_POST['amount'])) {
         $spend = SpendingModel::model();
         $spend->date = date('Y-m-d', strtotime($_POST['date']));
         $spend->campaign_id = $_POST['campaign_id'];
         $spend->amount = $_POST['amount'];
         $spend->useRuleSet('new');
         if ($spend->save()) {
             $success = "Spend saved";
         } else {
             $error = $spend->getErrors();
         }
     }
     $campaigns = CampaignModel::model()->getRows(array('order' => '`campaign_id` ASC'));
     $this->setVar("campaigns", $campaigns);
     $this->setVar("title", "Update Spending");
     $this->setVar("error", $error);
     $this->setVar("success", $success);
     $this->render("spending/spending");
 }
コード例 #5
0
			<label class="tooltip"title="MM/DD/YYYY">End Date:</label> <input class="date" onchange="unset_time_predefined();" type="text" name="to" id="to" value="<?php 
echo $html['to'];
?>
"  />	
		</div>
	</div>
	
	<?php 
if ($show_options['show_campaign']) {
    ?>
		<div class="grid_2">
			<div class="box">
				<label>Campaign</label>

				<?php 
    BTForm::createSelect('campaign_id', CampaignModel::model()->getRows(), BTAuth::user()->getPref('campaign_id'), 'campaign_id', '', 'name', 'campaign_id', 'Show All');
    ?>
			</div>
		</div>
	<?php 
}
?>
	
	<?php 
if ($show_options['show_type']) {
    ?>
		<div class="grid_2">
			<div class="box">
				<label>Type</label>

				<?php 
コード例 #6
0
 public function p($arg)
 {
     list($id, $judul) = $arg;
     $arrkirim = array();
     if ($id < 1 || $id == "") {
         die("NO ID");
     }
     $_SESSION['hist_prod'] = array("id" => $id, "judul" => $judul);
     $_SESSION['hist_url'] = _LANGPATH . "pwa/p/{$id}/" . urlencode($judul);
     $p = new ProdModel();
     $p->getByID($id);
     if ($p->prod_active < 1) {
         header("Location:" . _LANGPATH . "p404");
         exit;
     }
     global $template;
     $template->title = $p->prod_name;
     $src = self::getMainPic($p);
     if ($p->prod_diskon > 0) {
         $hrgbaru = ceil((100 - $p->prod_diskon) / 100 * $p->prod_price);
     } else {
         $hrgbaru = $p->prod_price;
     }
     $cp = new CampaignProdMatrix();
     $arr = $cp->getWhere("cm_prod_id = '{$id}'");
     $cp_id = $arr[0]->cm_camp_id;
     $cp = new CampaignModel();
     $cp->getByID($cp_id);
     $cw = new Cw();
     //		$cw->campaign_header($cp_id, $cp);
     //process image
     $exp = explode(",", $p->prod_pic);
     $sudah = array();
     $arrImg = array();
     if (count($exp) > 1) {
         $if = new InputFileModel();
         foreach ($exp as $num => $img) {
             if (!in_array($img, $sudah)) {
                 $sudah[] = $img;
                 $srcs = _SPPATH . $if->upload_url . "thumbnail/" . $img;
                 $srcs_big = _SPPATH . $if->upload_url . $img;
                 $cl = 'class="nonaktif"';
                 if ($src["thumbs"] == $srcs) {
                     $cl = 'class="aktif"';
                 }
                 //                    $id = base64_encode($srcs);
                 $arrImg[$num] = array($srcs, $srcs_big, $cl);
             }
         }
     }
     //process category
     $cat = new ProdCat();
     $cat->getByID($p->prod_cat_id);
     $arrParent = array();
     $arrpp = ProdCat::getAllParents($cat->cat_parent_id, $arrParent);
     //pr($arrpp);
     $arrpp2 = array_reverse($arrpp);
     foreach ($arrpp2 as $bc) {
         $str[] = $bc->cat_name;
     }
     $str[] = $cat->cat_name;
     //        $str2 = "<a href='" . _LANGPATH . "pwa/category/" . urlencode($cat->cat_name) . "'>".$cat->cat_name . "</a>";
     //bypass roy
     //$str2 = $cat->cat_name;
     $arrCat = $str;
     $arrkirim['p'] = $p;
     $arrkirim['id'] = $id;
     $arrkirim['cp'] = $cp;
     $arrkirim['arrImg'] = $arrImg;
     $arrkirim['arrCat'] = $arrCat;
     $arrkirim['hargaafterdiskon'] = $hrgbaru;
     $arrkirim['src'] = $src;
     $layout_id = "eComm_product";
     $file = Layout::getFile($layout_id);
     //        echo "Pages/".$layout_id."/".$file;
     Mold::theme("Pages/" . $layout_id . "/" . $file, $arrkirim);
 }
コード例 #7
0
 public function copyCampaignAction()
 {
     if ($_POST['campaign_id']) {
         CampaignModel::model()->duplicate($_POST['campaign_id']);
     }
 }
コード例 #8
0
 function campaign($args)
 {
     list($id, $title, $page) = $args;
     $pc = new CampaignProdMatrix();
     //pagination
     if ($page < 1 || $page == "") {
         $page = 1;
     }
     $limit = 21;
     $begin = ($page - 1) * $limit;
     $link = _SPPATH . "cw/campaign/{$id}/" . urlencode($title) . "/|x|";
     $jml = $pc->getJumlah("cm_camp_id = '{$cp->camp_id}'");
     $_SESSION['hist_url'] = _LANGPATH . "cw/campaign/{$id}/" . urlencode($title) . "/|x|";
     //end pagination
     $cp = new CampaignModel();
     $cp->getByID($id);
     //        $this->campaign_header($id,$cp);
     //pr($cp);
     $arr2 = $pc->getWhereFromMultipleTable("cm_camp_id = '{$id}' AND cm_prod_id = prod_id AND prod_active = 1 ORDER BY cm_latest_added DESC LIMIT {$begin},{$limit}", array("ProdModel"));
     $arr['cp'] = $cp;
     $arr['page'] = $page;
     $arr['jml'] = $jml;
     $arr['prods'] = $arr2;
     $arr['limit'] = $limit;
     $arr['link'] = $link;
     $layout_id = "eComm_campaign";
     $file = Layout::getFile($layout_id);
     //        echo "Pages/".$layout_id."/".$file;
     Mold::theme("Pages/" . $layout_id . "/" . $file, $arr);
 }
コード例 #9
0
 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;
 }
コード例 #10
0
 protected function editCampaign()
 {
     DB::startTransaction();
     if (!($campaign = CampaignModel::model()->getRowFromPk($_POST['campaign_id']))) {
         echo json_encode(array('message' => 'Could not save: invalid campaign ID'));
         DB::rollback();
         BTApp::end();
     }
     $campaign->name = $_POST['name'];
     $campaign->cloaker_id = $_POST['cloaker_id'];
     $campaign->slug = $_POST['slug'];
     $campaign->save();
     switch ($campaign->type) {
         case 1:
             foreach ($campaign->offers as $offer) {
                 if (!in_array($offer->id(), $_POST['campaign_lpoffer_id'])) {
                     $offer->delete();
                 }
             }
             for ($i = 0, $cnt = count($_POST['campaign_lpoffer_id']); $i < $cnt; $i++) {
                 $id = $_POST['campaign_lpoffer_id'][$i];
                 if (!$id) {
                     //new
                     $offer = OfferModel::model();
                     $offer->aff_network_id = $_POST['lpoffer_aff_network_id'][$i];
                     $offer->name = $_POST['lpoffer_name'][$i];
                     $offer->url = $_POST['lpoffer_url'][$i];
                     $offer->payout = $_POST['lpoffer_payout'][$i];
                     if (!$offer->save()) {
                         echo json_encode(array('message' => 'Could not add offers'));
                         DB::rollback();
                         BTApp::end();
                     }
                     $campoffer = CampaignOfferModel::model();
                     $campoffer->campaign_id = $campaign->id();
                     $campoffer->position = 0;
                     $campoffer->weight = 0;
                     $campoffer->offer_id = $offer->id();
                     if (!$campoffer->save()) {
                         echo json_encode(array('message' => 'Could not add campaign offers'));
                         DB::rollback();
                         BTApp::end();
                     }
                 } else {
                     //edit
                     $campoffer = CampaignOfferModel::model()->getRowFRomPk($id);
                     $offer = $campoffer->offer;
                     $offer->aff_network_id = $_POST['lpoffer_aff_network_id'][$i];
                     $offer->name = $_POST['lpoffer_name'][$i];
                     $offer->url = $_POST['lpoffer_url'][$i];
                     $offer->payout = $_POST['lpoffer_payout'][$i];
                     if (!$offer->save()) {
                         echo json_encode(array('message' => 'Could not save offers'));
                         DB::rollback();
                         BTApp::end();
                     }
                 }
             }
             foreach ($campaign->landing_pages as $lp) {
                 if (!in_array($lp->id(), $_POST['campaign_lp_id'])) {
                     $lp->delete();
                 }
             }
             for ($i = 0, $cnt = count($_POST['campaign_lp_id']); $i < $cnt; $i++) {
                 $id = $_POST['campaign_lp_id'][$i];
                 if (!$id) {
                     //new
                     $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 add 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 add campaign LPs'));
                         DB::rollback();
                         BTApp::end();
                     }
                 } else {
                     //edit
                     $camp_lp = CampaignLPModel::model()->getRowFromPk($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();
                     }
                     $lp = $camp_lp->landing_page;
                     $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();
                     }
                 }
             }
             break;
         case 2:
             foreach ($campaign->offers as $offer) {
                 if (!in_array($offer->id(), $_POST['campaign_offer_id'])) {
                     $offer->delete();
                 }
             }
             for ($i = 0, $cnt = count($_POST['campaign_offer_id']); $i < $cnt; $i++) {
                 $id = $_POST['campaign_offer_id'][$i];
                 if (!$id) {
                     //new
                     $offer = OfferModel::model();
                     $offer->aff_network_id = $_POST['offer_aff_network_id'][$i];
                     $offer->name = $_POST['offer_name'][$i];
                     $offer->url = $_POST['offer_url'][$i];
                     $offer->payout = $_POST['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->position = 0;
                     $campoffer->weight = $_POST['offer_weight'][$i];
                     $campoffer->offer_id = $offer->id();
                     if (!$campoffer->save()) {
                         echo json_encode(array('message' => 'Could not save offers'));
                         DB::rollback();
                         BTApp::end();
                     }
                 } else {
                     //edit
                     $campoffer = CampaignOfferModel::model()->getRowFRomPk($id);
                     $campoffer->weight = $_POST['offer_weight'][$i];
                     if (!$campoffer->save()) {
                         echo json_encode(array('message' => 'Could not save offers'));
                         DB::rollback();
                         BTApp::end();
                     }
                     $offer = $campoffer->offer;
                     $offer->name = $_POST['offer_name'][$i];
                     $offer->aff_network_id = $_POST['offer_aff_network_id'][$i];
                     $offer->url = $_POST['offer_url'][$i];
                     $offer->payout = $_POST['offer_payout'][$i];
                     if (!$offer->save()) {
                         echo json_encode(array('message' => 'Could not save offers'));
                         DB::rollback();
                         BTApp::end();
                     }
                 }
             }
             break;
     }
     foreach ($_POST['opt'] as $name => $val) {
         $opt = $campaign->options[$name];
         $opt->value = $val;
         if (!$opt->save()) {
             DB::rollback();
             echo json_encode(array('message' => 'Could not save options'));
             BTApp::end();
         }
     }
     foreach ($campaign->options as $option) {
         if (strpos($option->name, 'pass_') === 0) {
             $option->delete();
         }
     }
     for ($j = 0, $cnt = count($_POST['variable_name']); $j < $cnt; $j++) {
         $name = $_POST['variable_name'][$j];
         $name = 'pass_' . $name;
         if ($campaign->type == 1) {
             $pass_lp = $_POST['variable_lp'][$j];
             $pass_offer = $_POST['variable_offer'][$j];
             $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' => '2', 'campaign_id' => $campaign->id()));
 }
コード例 #11
0
ファイル: code.php プロジェクト: sakibanda/ballistic-tracking
                </table>
            </div>
        </div>
    </div>
	
	<div class="grid_12">
		<div class="box">
			<div class="header">
				<h2>3rd Party Pixel</h2>
			</div>
			<div class="content">
				<div class="row">
					<label>Pixel Type</label>
					<div>
						<?php 
BTForm::createSelect('opt[pixel_type]', CampaignModel::getPixelTypes(), $campaign->option('pixel_type')->value, '', '', 'label', 'value');
?>
					</div>
				</div>
				<div class="row">
					<label>Code</label>
					<div>
						<textarea name="opt[pixel_code]"><?php 
echo $campaign->option('pixel_code')->value;
?>
</textarea>
					</div>
				</div>
			</div>
		</div>
	</div>
コード例 #12
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();
 }