Example #1
0
 public function renderVast()
 {
     $adID = Input::get('aid', 0);
     $flightWebsiteID = Input::get('fpid', 0);
     $publisherAdZoneID = Input::get('zid', 0);
     $checksum = Input::get('cs');
     $isOverReport = Input::get('ovr', '');
     $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';
     $ad = (new Delivery())->getAd($adID);
     if ($ad) {
         $eventArr = ['impression', 'start', 'firstQuartile', 'midpoint', 'thirdQuartile', 'complete', 'mute', 'unmute', 'pause', 'fullscreen'];
         try {
             $path = "http://static.yomedia.vn/xml/{$ad->campaign_id}/";
             $xml_filename = str_replace(' ', '_', strtolower($ad->name)) . '.xml';
             $xml_file = file_get_contents("{$path}{$xml_filename}");
             if (!empty($xml_file)) {
                 foreach ($eventArr as $event) {
                     $check_key = "[yomedia_{$event}_url]";
                     if (strpos($xml_file, $check_key) !== FALSE) {
                         $url = '<![CDATA[' . urlTracking($event, $ad->id, $flightWebsiteID, $publisherAdZoneID, $checksum, '', $isOverReport) . ']]>';
                         $xml_file = str_replace($check_key, $url, $xml_file);
                     }
                 }
                 if (strpos($xml_file, '[yomedia_third_party_url]') !== FALSE) {
                     $thirdTrackingEvents = json_decode($ad->third_party_tracking);
                     if (!empty($thirdTrackingEvents)) {
                         $tag = '';
                         foreach ($thirdTrackingEvents as $trackingEvent) {
                             if (!empty($trackingEvent->event) && !empty($trackingEvent->url)) {
                                 $tag .= "<Tracking event=\"" . $trackingEvent->event . "\"><![CDATA[" . $this->replaceParam($trackingEvent->url) . "]]></Tracking>";
                             }
                         }
                         $xml_file = str_replace('<Tracking>[yomedia_third_party_url]</Tracking>', $tag, $xml_file);
                     }
                 }
                 if (strpos($xml_file, '[yomedia_click_url]') !== FALSE) {
                     $url = '<![CDATA[' . urlTracking('click', $ad->id, $flightWebsiteID, $publisherAdZoneID, $checksum, $ad->destination_url, $isOverReport) . ']]>';
                     $xml_file = str_replace('[yomedia_click_url]', $url, $xml_file);
                 }
                 if (strpos($xml_file, '[yomedia_third_impression_url]') !== FALSE) {
                     if ($ad->third_impression_track != '') {
                         $thirdImpressionTrackArr = explode("\n", $ad->third_impression_track);
                         if (!empty($thirdImpressionTrackArr)) {
                             $tag = '';
                             foreach ($thirdImpressionTrackArr as $item) {
                                 $tag .= '<Impression><![CDATA[' . $this->replaceParam($item) . ']]></Impression>';
                             }
                             $xml_file = str_replace('<Impression>[yomedia_third_impression_url]</Impression>', $tag, $xml_file);
                         }
                     }
                 }
                 if (strpos($xml_file, '[yomedia_third_click_url]') !== FALSE) {
                     $tag = '';
                     if ($ad->third_click_track != '') {
                         $thirdClickTrackArr = explode("\n", $ad->third_click_track);
                         if (!empty($thirdClickTrackArr)) {
                             foreach ($thirdClickTrackArr as $item) {
                                 $tag .= "<ClickTracking><![CDATA[" . $this->replaceParam($item) . "]]></ClickTracking>";
                             }
                             $xml_file = str_replace('<ClickTracking>[yomedia_third_click_url]</ClickTracking>', $tag, $xml_file);
                         }
                     }
                 }
                 if (strpos($xml_file, '[yomedia_ad_id]') !== FALSE) {
                     $xml_file = str_replace('[yomedia_ad_id]', $ad->id, $xml_file);
                 }
                 if (strpos($xml_file, '[yomedia_ga_campaign_url]') !== FALSE) {
                     $trackingModel = new Tracking();
                     $deliverModel = new Delivery();
                     $adFormat = $deliverModel->getAdFormat($ad->ad_format_id);
                     $ad_format_name = isset($adFormat->name) ? str_replace(' ', '_', $adFormat->name) : '';
                     $name = isset($ad->name) ? str_replace(' ', '_', $ad->name) : '';
                     $publisher_domain = $trackingModel->getRequestReferer();
                     $campaignInfo = $deliverModel->getCamPaignInfoByPublisher($publisherAdZoneID, $flightWebsiteID, $ad->ad_format_id);
                     if ($campaignInfo) {
                         $flight_name = isset($campaignInfo['flight_name']) ? $campaignInfo['flight_name'] : '';
                         $category_name = isset($campaignInfo['category_name']) ? $campaignInfo['category_name'] : '';
                     }
                     $url = '<![CDATA[http://static.yomedia.vn/campaigns.html?utm_medium=' . $ad_format_name . '&utm_content=' . $name . '&utm_campaign=' . $flight_name . '&utm_term=Video&utm_source=' . $publisher_domain . '&rd=' . str_random(40) . ']]>';
                     $xml_file = str_replace('[yomedia_ga_campaign_url]', $url, $xml_file);
                 }
             }
             $xml = simplexml_load_string($xml_file);
             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);
 }
Example #2
0
 public function initVast($ad, $flightPublisherID, $publisherAdZoneID, $checksum, $isOverReport = false, $referrer = '')
 {
     if ($ad && $flightPublisherID && $publisherAdZoneID) {
         $trackingModel = new Tracking();
         $deliverModel = new Delivery();
         $this->id = $ad->id;
         $this->flight_publisher_id = $flightPublisherID;
         $this->publisher_ad_zone_id = $publisherAdZoneID;
         $this->linear = $ad->video_linear;
         $this->width = $ad->width;
         $this->height = $ad->height;
         $this->duration = $ad->video_duration;
         $this->type_vast = $ad->video_type_vast;
         //$this->vast_version           = $ad->vast_version;
         $this->skipads = $ad->skipads;
         $this->file = $ad->source_url;
         $this->title = $ad->name;
         if (empty($ad->vast_include)) {
             $this->wrapper_tag = $this->replaceParam($ad->video_wrapper_tag);
         } else {
             $vastTagUrl = urlencode($this->replaceParam($ad->video_wrapper_tag));
             $this->wrapper_tag = AD_SERVER_FILE . 'get-vast-tag?vast_tag=' . $vastTagUrl . '&skip=' . $ad->skipads . '&aid=' . $ad->id;
         }
         $this->bitrate = $ad->video_bitrate;
         $this->url = $ad->destination_url;
         $this->ad_format = $ad->ad_format_id;
         $this->referrer = $referrer;
         $this->third_party_tracking = $ad->third_party_tracking;
         $this->third_impression_track = $ad->third_impression_track;
         $this->third_click_track = $ad->third_click_track;
         $this->checksum = $checksum;
         $this->ovr = $isOverReport;
         $adFormat = $deliverModel->getAdFormat($ad->ad_format_id);
         $this->ad_format_name = isset($adFormat->name) ? str_replace(' ', '_', $adFormat->name) : '';
         $this->name = isset($ad->name) ? str_replace(' ', '', strtolower($ad->name)) : '';
         $this->publisher_domain = $trackingModel->getRequestReferer();
         $campaignInfo = $deliverModel->getCamPaignInfoByPublisher($publisherAdZoneID, $flightPublisherID, $ad->ad_format_id);
         if ($campaignInfo) {
             $this->flight_name = isset($campaignInfo['flight_name']) ? $campaignInfo['flight_name'] : '';
             $this->category_name = isset($campaignInfo['category_name']) ? $campaignInfo['category_name'] : '';
         }
         return true;
     }
     return false;
 }