public function getUrlTrack3rd($data) { if (isset($data['ec'])) { if ($data['ec'] == 0) { return array(); } } $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $domain = getWebDomain($referer); $urls = array(); $redis = new RedisBaseModel(env('REDIS_HOST', '127.0.0.1'), env('REDIS_PORT_3', '6379'), false); $cacheKey = "URLTrack3rd"; if ($redis->exist($cacheKey)) { $retval = $redis->get($cacheKey); } else { $retval = DB::table('url_track_3rd')->select('id', 'url', 'website', 'amount', 'run')->where('active', 1)->where('amount', '>', 0)->get(); $redis->set($cacheKey, $retval); } if (!empty($retval)) { foreach ($retval as $value) { $bCheckWeb = false; if ($value->website) { $website = explode("\n", $value->website); foreach ($website as $v) { if (strpos($v, $domain) !== false) { $bCheckWeb = true; break; } } } else { $bCheckWeb = true; } if (!$bCheckWeb) { continue; } $cacheKeyTotal = 'URLTrack3rd.' . $value->id; $cacheKeyTotalDay = $cacheKeyTotal . '.' . date('Ymd'); $cacheKeyTotalGet = $value->run == 'day' ? $cacheKeyTotalDay : $cacheKeyTotal; $total = $redis->get($cacheKeyTotalGet); if ($total < $value->amount) { $bCheckTotal = true; } else { $bCheckTotal = false; } if ($bCheckTotal) { $urls[] = $value->url; $redis->increment($cacheKeyTotal); $redis->increment($cacheKeyTotalDay); } } } pr($urls); return $urls; }
public function setVisitorId($visitorId = '') { if (!$visitorId) { $visitorId = $this->makeVisitorId(); $this->visitor_id = $visitorId; } if (!isset($_COOKIE['uuid'])) { setcookie('uuid', $visitorId, time() + 86400 * 365, '/', getWebDomain(DOMAIN_COOKIE)); } return $visitorId; }
public function getRequestReferer() { return !empty($_SERVER['HTTP_REFERER']) ? getWebDomain($_SERVER['HTTP_REFERER']) : ''; }
public function getVastTag() { $vastTag = Input::get('vast_tag'); $skip = Input::get('skip', 0); $adID = Input::get('aid', 0); $hostReferer = '*'; if (!empty($_SERVER['HTTP_REFERER'])) { $url = $_SERVER['HTTP_REFERER']; $hostReferer = parse_url($url, PHP_URL_SCHEME) . '://' . getWebDomain($url); } $header['Content-Type'] = 'application/xml'; $header['Access-Control-Allow-Origin'] = $hostReferer; $header['Access-Control-Allow-Credentials'] = 'true'; $header['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0'; $header['Cache-Control'] = 'post-check=0, pre-check=0'; $header['Pragma'] = 'no-cache'; if (!empty($vastTag)) { try { $xmlVastTag = $this->getVastAdTagUri($adID, urldecode($vastTag)); if (!empty($xmlVastTag)) { if (!empty($skip)) { $skipoffset = '<Linear ' . 'skipoffset="00:00:' . sprintf('%02d', $skip) . '"' . '>'; $xmlVastTag = str_replace('<Linear>', $skipoffset, $xmlVastTag); } $xml = simplexml_load_string($xmlVastTag); if (!$xml) { return response('<VAST version="2.0"></VAST>', 200, $header); } return response($xml->asXML(), 200, $header); } } catch (\Exception $e) { pr($e); return response('<VAST version="2.0"></VAST>', 200, $header); } } return response('<VAST version="2.0"></VAST>', 200, $header); }
public function trackEvent() { ignore_user_abort(true); $this->layout = null; $response = null; $responseType = ''; $expandFields = array(); $deliveryStatus = ''; $event = strtolower(Input::get('evt', '')); $requestType = Input::get('rt', Delivery::REQUEST_TYPE_TRACKING_BEACON); $checksum = Input::get('cs', ''); $flightWebsiteID = Input::get('fpid', 0); $zoneID = Input::get('zid', 0); $isOverReport = Input::get('ovr'); //custom code for VIB 068 Relaunch form complete tracking if (Input::get('wid') == 48 && $event == 'complete') { $flightWebsiteID = 172; $event = "impression"; } $trackingModel = new Tracking(); $deliveryModel = new Delivery(); //ghi log trước khi xử lý $logPreProcess = $trackingModel->logPreProcess($requestType, Input::get()); if ($logPreProcess) { //kiểm tra referrer $hostReferer = $trackingModel->getRequestReferer(); $responseType = $trackingModel->checkPreProcess($requestType, $hostReferer, $zoneID); if (empty($responseType)) { $adZone = $deliveryModel->getAdzone($zoneID); if ($adZone) { if (isSameDomain($hostReferer, getWebDomain($adZone->site->url)) || isLocal()) { $flightWebsite = $deliveryModel->getFullFlightWebsite($flightWebsiteID); if ($flightWebsite) { //checksum if ($flightWebsite->flight->ad_format_id == Delivery::TRACKING_CODE_ADID) { $responseType = Delivery::RESPONSE_TYPE_TRACKING_BEACON_SUCCESS; } elseif ($trackingModel->isValidTrackingBeacon($checksum, $event)) { $responseType = Delivery::RESPONSE_TYPE_TRACKING_BEACON_SUCCESS; //set cookie for retargeting $trackingModel->rememberRetarget($flightWebsite->flight->campaign_id, $event); } else { $responseType = Delivery::RESPONSE_TYPE_CHECKSUM_ERROR; } } //else invalid } } } if (empty($responseType)) { $responseType = Delivery::RESPONSE_TYPE_INVALID; } elseif ($responseType == Delivery::RESPONSE_TYPE_TRACKING_BEACON_SUCCESS) { $expandFields = array('flight_id' => $flightWebsite->flight_id, 'ad_format_id' => $adZone->ad_format_id, 'ad_id' => $flightWebsite->flight->ad_id, 'campaign_id' => $flightWebsite->flight->campaign_id, 'publisher_ad_zone_id' => $adZone->id, 'flight_website_id' => $flightWebsite->id, 'website_id' => $flightWebsite->website_id); $expandFields['checksum'] = $checksum; $eventChecksum = $event; $trackingModel->setChecksumTrackingEvent($checksum, $event); //udpate inventory //$inventoryMetric = $trackingModel->getTrackingEventType($flightWebsite->flight->cost_type); $inventoryMetric = $trackingModel->getTrackingEventType($flightWebsite->flight->cost_type); if ($event == $inventoryMetric) { $trackingModel->updateInventory($flightWebsite->flight->id, $flightWebsite->id, $inventoryMetric, $isOverReport); } if (isset($flightWebsite->flight->event) && $flightWebsite->flight->event != '') { $flightEvent = $flightWebsite->flight->event; } else { // Truong hop nhung flight truoc day khong co setting event $flightEvent = $inventoryMetric; } if ($event == $flightEvent) { //incre today capped this ad by 1 $trackingModel->incFreCap($flightWebsite->flight); } //update tracking summary $rawTrackingSummary = new RawTrackingSummary(); $rawTrackingSummary->addSummary($event, $flightWebsite->website_id, $adZone->id, $adZone->ad_format_id, $flightWebsite->flight_id, $flightWebsite->id, $flightWebsite->flight->ad_id, $flightWebsite->flight->campaign_id); $uniqueEvent = ''; //unique impression if ($event == 'impression') { $uniqueEvent = 'unique_impression'; $expandFields['unique_impression'] = $trackingModel->isUniqueImpression($flightWebsite->id); } //unique click if ($event == 'click') { $uniqueEvent = 'unique_click'; $expandFields['unique_click'] = $trackingModel->isUniqueClick($flightWebsite->id); } //add summary unique click or impression if (!empty($expandFields[$uniqueEvent])) { $rawTrackingSummary->addSummary($uniqueEvent, $flightWebsite->website_id, $adZone->id, $adZone->ad_format_id, $flightWebsite->flight_id, $flightWebsite->id, $flightWebsite->flight->ad_id, $flightWebsite->flight->campaign_id); } } } //ghi log process $logAfterProcess = $trackingModel->logAfterProcess($responseType, $expandFields, $logPreProcess); //response to client pr($expandFields); pr($responseType, 1); if ($event == 'click' && Input::get('to')) { //redirect to ad's destination url on click event return Redirect::to(urldecode(Input::get('to'))); } else { //return 1x1 transparent GIF $response = $trackingModel->outputTransparentGif(); // exit(); } }