Beispiel #1
0
 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;
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 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();
     }
 }