Esempio n. 1
0
 /**
  * 
  * @return \Zend\View\Model\ViewModel
  */
 public function editlineitemAction()
 {
     $id = $this->getEvent()->getRouteMatch()->getParam('param1');
     if ($id == null) {
         die("Invalid Banner ID");
     }
     $initialized = $this->initialize();
     if ($initialized !== true) {
         return $initialized;
     }
     $is_preview = $this->getRequest()->getQuery('ispreview');
     // verify
     if ($is_preview == "true") {
         $is_preview = \transformation\TransformPreview::doesPreviewBannerExist($id, $this->auth);
     }
     $banner_preview_id = "";
     if ($is_preview == true) {
         // ACL PREVIEW PERMISSIONS CHECK
         transformation\CheckPermissions::checkEditPermissionInsertionOrderLineItemPreview($id, $this->auth, $this->config_handle);
         $InsertionOrderLineItemVideoRestrictionsPreviewFactory = \_factory\InsertionOrderLineItemVideoRestrictionsPreview::get_instance();
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $id;
         $InsertionOrderLineItemVideoRestrictions = $InsertionOrderLineItemVideoRestrictionsPreviewFactory->get_row($params);
         $InsertionOrderLineItemPreviewFactory = \_factory\InsertionOrderLineItemPreview::get_instance();
         $params = array();
         $params["Active"] = 1;
         $params["InsertionOrderLineItemPreviewID"] = $id;
         $banner_preview_id = $id;
         $InsertionOrderLineItem = $InsertionOrderLineItemPreviewFactory->get_row($params);
         $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItemPreview::get_instance();
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemList = $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory->get($params);
         $SspRtbChannelToInsertionOrderLineItemPreviewFactory = \_factory\SspRtbChannelToInsertionOrderLineItemPreview::get_instance();
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
         $SspRtbChannelToInsertionOrderLineItemList = $SspRtbChannelToInsertionOrderLineItemPreviewFactory->get($params);
     } else {
         // ACL PERMISSIONS CHECK
         transformation\CheckPermissions::checkEditPermissionInsertionOrderLineItem($id, $this->auth, $this->config_handle);
         $InsertionOrderLineItemVideoRestrictionsFactory = \_factory\InsertionOrderLineItemVideoRestrictions::get_instance();
         $params = array();
         $params["InsertionOrderLineItemID"] = $id;
         $InsertionOrderLineItemVideoRestrictions = $InsertionOrderLineItemVideoRestrictionsFactory->get_row($params);
         $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
         $params = array();
         $params["Active"] = 1;
         $params["InsertionOrderLineItemID"] = $id;
         $InsertionOrderLineItem = $InsertionOrderLineItemFactory->get_row($params);
         $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItem::get_instance();
         $params = array();
         $params["InsertionOrderLineItemID"] = $id;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemList = $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory->get($params);
         $SspRtbChannelToInsertionOrderLineItemFactory = \_factory\SspRtbChannelToInsertionOrderLineItem::get_instance();
         $params = array();
         $params["InsertionOrderLineItemID"] = $id;
         $SspRtbChannelToInsertionOrderLineItemList = $SspRtbChannelToInsertionOrderLineItemFactory->get($params);
     }
     if ($InsertionOrderLineItem == null) {
         die("Invalid {$InsertionOrderLineItem} ID");
     }
     $campaignid = isset($InsertionOrderLineItem->InsertionOrderID) ? $InsertionOrderLineItem->InsertionOrderID : "";
     $bannerid = isset($InsertionOrderLineItem->InsertionOrderLineItemID) ? $InsertionOrderLineItem->InsertionOrderLineItemID : "";
     $campaignpreviewid = isset($InsertionOrderLineItem->InsertionOrderPreviewID) ? $InsertionOrderLineItem->InsertionOrderPreviewID : "";
     $bannerpreviewid = isset($InsertionOrderLineItem->InsertionOrderLineItemPreviewID) ? $InsertionOrderLineItem->InsertionOrderLineItemPreviewID : "";
     $bannername = $InsertionOrderLineItem->Name;
     $startdate = date('m/d/Y', strtotime($InsertionOrderLineItem->StartDate));
     $enddate = date('m/d/Y', strtotime($InsertionOrderLineItem->EndDate));
     $current_mobile = $InsertionOrderLineItem->IsMobile;
     if ($InsertionOrderLineItem->IsMobile == 2) {
         $size_list = \util\BannerOptions::$iab_mobile_tablet_banner_options;
     } elseif ($InsertionOrderLineItem->IsMobile > 0) {
         $size_list = \util\BannerOptions::$iab_mobile_phone_banner_options;
     } else {
         $size_list = \util\BannerOptions::$iab_banner_options;
     }
     $height = $InsertionOrderLineItem->Height;
     $width = $InsertionOrderLineItem->Width;
     $weight = $InsertionOrderLineItem->Weight;
     $bidamount = $InsertionOrderLineItem->BidAmount;
     $adtag = $InsertionOrderLineItem->AdTag;
     $landingpagetld = $InsertionOrderLineItem->LandingPageTLD;
     $current_iabsize = $InsertionOrderLineItem->IABSize;
     $ImpressionType = $InsertionOrderLineItem->ImpressionType;
     if ($ImpressionType == 'image') {
         preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $adtag, $matches);
         if (!isset($matches[1])) {
             die("Required Field: <img src= attribute was missing");
         }
         preg_match('/href=[\'"]?([^\\s\\>\'"]*)[\'"\\>]/', $adtag, $matches);
         if (!isset($matches[1])) {
             die("Required Field: <a href= attribute was missing");
         }
     }
     $current_mimes = array();
     $current_apis_supported = array();
     $current_protocols = array();
     $current_delivery_methods = array();
     $current_playback_methods = array();
     $current_start_delay = "";
     $current_linearity = "";
     $impression_type = "banner";
     if ($InsertionOrderLineItemVideoRestrictions != null) {
         $current_mimes_raw = $InsertionOrderLineItemVideoRestrictions->MimesCommaSeparated;
         $current_apis_supported_raw = $InsertionOrderLineItemVideoRestrictions->ApisSupportedCommaSeparated;
         $current_protocols_raw = $InsertionOrderLineItemVideoRestrictions->ProtocolsCommaSeparated;
         $current_delivery_methods_raw = $InsertionOrderLineItemVideoRestrictions->DeliveryCommaSeparated;
         $current_playback_methods_raw = $InsertionOrderLineItemVideoRestrictions->PlaybackCommaSeparated;
         $current_start_delay = $InsertionOrderLineItemVideoRestrictions->StartDelay;
         $current_linearity = $InsertionOrderLineItemVideoRestrictions->Linearity;
         $current_mimes = array();
         if ($current_mimes_raw) {
             $current_mimes = explode(',', $current_mimes_raw);
         }
         $current_apis_supported = array();
         if ($current_apis_supported_raw) {
             $current_apis_supported = explode(',', $current_apis_supported_raw);
         }
         $current_protocols = array();
         if ($current_protocols_raw) {
             $current_protocols = explode(',', $current_protocols_raw);
         }
         $current_delivery_methods = array();
         if ($current_delivery_methods_raw) {
             $current_delivery_methods = explode(',', $current_delivery_methods_raw);
         }
         $current_playback_methods = array();
         if ($current_playback_methods_raw) {
             $current_playback_methods = explode(',', $current_playback_methods_raw);
         }
     }
     $is_vast_url = \util\ParseHelper::isVastURL($adtag);
     $vast_type = $is_vast_url == true ? "url" : "xml";
     $imageurl = "";
     $landingpageurl = "";
     if ($ImpressionType == "image") {
         preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $adtag, $matches);
         if (isset($matches[1])) {
             $imageurl = $matches[1];
         }
         preg_match('/href=[\'"]?([^\\s\\>\'"]*)[\'"\\>]/', $adtag, $matches);
         if (isset($matches[1])) {
             $landingpageurl = $matches[1];
         }
     }
     return new ViewModel(array('imageurl' => $imageurl, 'landingpageurl' => $landingpageurl, 'campaignid' => $campaignid, 'bannerid' => $bannerid, 'pmp_deal_list' => $PmpDealPublisherWebsiteToInsertionOrderLineItemList, 'ssp_channel_list' => $SspRtbChannelToInsertionOrderLineItemList, 'campaignpreviewid' => $campaignpreviewid, 'bannerpreviewid' => $bannerpreviewid, 'ispreview' => $is_preview == true ? '1' : '0', 'bannername' => $bannername, 'startdate' => $startdate, 'enddate' => $enddate, 'current_mobile' => $current_mobile, 'mobile_options' => \util\BannerOptions::$mobile_options, 'size_list' => $size_list, 'height' => $height, 'width' => $width, 'weight' => $weight, 'bidamount' => $bidamount, 'adtag' => $adtag, 'vast_type' => $vast_type, 'landingpagetld' => $landingpagetld, 'current_iabsize' => $current_iabsize, 'bread_crumb_info' => $this->getBreadCrumbInfoFromBanner($bannerid, $bannerpreviewid, $is_preview), 'user_id_list' => $this->user_id_list_demand_customer, 'center_class' => 'centerj', 'user_identity' => $this->identity(), 'true_user_name' => $this->auth->getUserName(), 'header_title' => 'Edit Insertion Order', 'is_super_admin' => $this->is_super_admin, 'effective_id' => $this->auth->getEffectiveIdentityID(), 'impersonate_id' => $this->ImpersonateID, 'ImpressionType' => $ImpressionType, 'linearity' => \util\BannerOptions::$linearity, 'start_delay' => \util\BannerOptions::$start_delay, 'playback_methods' => \util\BannerOptions::$playback_methods, 'delivery_methods' => \util\BannerOptions::$delivery_methods, 'apis_supported' => \util\BannerOptions::$apis_supported, 'protocols' => \util\BannerOptions::$protocols, 'mimes' => \util\BannerOptions::$mimes, 'current_mimes' => $current_mimes, 'current_apis_supported' => $current_apis_supported, 'current_protocols' => $current_protocols, 'current_delivery_methods' => $current_delivery_methods, 'current_playback_methods' => $current_playback_methods, 'current_start_delay' => $current_start_delay, 'current_linearity' => $current_linearity, 'impression_type' => $impression_type));
 }
Esempio n. 2
0
 private function process_demand_tag($config, $banner_request)
 {
     $banner_request_id = intval($banner_request["demand_banner_id"]);
     if (isset($banner_request["winning_seat"]) && $banner_request["winning_partner_id"]) {
         $buyer_id = 'local:' . $banner_request["winning_partner_id"] . ':' . $banner_request["winning_seat"];
     } else {
         $buyer_id = $this->getRequest()->getQuery('buyerid');
     }
     $cache_file_dir = $config['delivery']['cache_file_location'] . 'demand/' . date('m.d.Y') . '/' . date('H') . '/' . date('i') . '/';
     if (!file_exists($cache_file_dir)) {
         mkdir($cache_file_dir, 0777, true);
     }
     $tag_type = "default";
     if (isset($banner_request["dt"]) && $banner_request["dt"]) {
         $tag_type = trim($banner_request["dt"]);
     }
     $cache_file = $cache_file_dir . $banner_request_id . "." . $tag_type . ".zone.txt";
     $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
     $params = array();
     $params["InsertionOrderLineItemID"] = $banner_request_id;
     $InsertionOrderLineItem = $InsertionOrderLineItemFactory->get_row_cached($config, $params);
     if ($InsertionOrderLineItem != null) {
         $banner_impression_cost = $InsertionOrderLineItem->BidAmount;
         $spend_increase_gross = floatval($banner_impression_cost) / 1000;
         $spend_increase_net = $spend_increase_gross;
         $found_second_price = false;
         if ($banner_request["winbid"] !== null && !empty($banner_request["winbid"])) {
             $decrypted_second_price = $this->decrypt_second_price($banner_request["winbid"]);
             if (floatval($decrypted_second_price)) {
                 $spend_increase_net = floatval($decrypted_second_price) / 1000;
                 $found_second_price = true;
             }
         }
         if ($found_second_price === false) {
             /*
              * We already marked down this demand customer's bid when we sent it to the DSP
              * So at this point we have to get the original bid price set by the demand user
              * in the demand dashboard and set it to the gross cost for the demand customer.
              * If we got a second price URL Macro parameter from the DSP, then we are finished.
              * We set the second price to the net price for the impression.
              * Otherwise we have to calculate the markup on the demand dashboard bid again
              * and get the net impression price that way.
              * 
              * Remember that the RTB bid price sent to the DSP was already marked down by the markup
              * price in class RtbBuyV22Workflow:
              * Line 544: $adusted_amount = floatval($InsertionOrderLineItem->BidAmount) - floatval($mark_down);
              */
             $InsertionOrderFactory = \_factory\InsertionOrder::get_instance();
             $params = array();
             $params["InsertionOrderID"] = $InsertionOrderLineItem->InsertionOrderID;
             $InsertionOrder = $InsertionOrderFactory->get_row_cached($config, $params);
             $markup_rate = \util\Markup::getMarkupRate($InsertionOrder, $config);
             $mark_down = floatval($spend_increase_gross) * floatval($markup_rate);
             $spend_increase_net = floatval($spend_increase_gross) - floatval($mark_down);
         }
         $InsertionOrderLineItemFactory->incrementInsertionOrderLineItemImpressionsCounterAndSpendCached($config, $buyer_id, $banner_request_id, $spend_increase_gross, $spend_increase_net);
         $InsertionOrderLineItemFactory->incrementBuySideHourlyImpressionsByTLDCached($config, $banner_request_id, $banner_request["tld"]);
         $is_video_impression = false;
         if (isset($banner_request["ImpressionType"]) && $banner_request["ImpressionType"] == 'video' || isset($banner_request["video"]) && $banner_request["video"] == 'vast') {
             $is_video_impression = true;
         }
         /*
          * Video can not be cached
          */
         if (file_exists($cache_file) && $is_video_impression === false) {
             $cached_tag = file_get_contents($cache_file);
             if ($banner_request["dt"] == "in") {
                 $this->ad_macros_to_adtag($cached_tag, $banner_request);
                 header("Content-type: application/javascript");
             } else {
                 $this->ad_macros_to_adtag($cached_tag, $banner_request);
             }
             echo $cached_tag;
             exit;
         }
         $tag_cachable = true;
         if ($is_video_impression === true) {
             $adtag = $InsertionOrderLineItem->AdTag;
             if (\util\ParseHelper::isVastURL($adtag) === true) {
                 $tracker_url = "";
                 if (isset($banner_request["tracker_url"])) {
                     $tracker_url = $banner_request["tracker_url"];
                 }
                 $output = $this->get_vast_wrapper_xml($config, $adtag, $tracker_url);
                 $tag_cachable = false;
             } else {
                 $output = $adtag;
             }
             header("Content-type: text/xml");
         } elseif ($banner_request["dt"] == "in") {
             header("Content-type: application/javascript");
             $output = "document.write(" . json_encode($InsertionOrderLineItem->AdTag) . ");";
         } else {
             $output = "<!DOCTYPE html>\n<html><head></head><body style=\"margin: 0px; padding: 0px;\">" . $InsertionOrderLineItem->AdTag . "\r\n\r\n</body></html>";
         }
         if ($tag_cachable === true) {
             $fh = fopen($cache_file, "w");
             fwrite($fh, $output);
             fclose($fh);
         }
         if ($is_video_impression === false) {
             $this->ad_macros_to_adtag($output, $banner_request);
         }
         echo $output;
         exit;
     }
     echo "NGINAD";
     exit;
 }
Esempio n. 3
0
 public function process_rtb_ping_statistics(&$AuctionPopo)
 {
     /*
      * COLLECT STATS FOR THE BID LOGS
      */
     $bids_total = 0;
     $bids_won = 0;
     $bids_lost = 0;
     $bid_errors = 0;
     $spend_total_gross = 0;
     $spend_total_private_exchange_gross = 0;
     $spend_total_net = 0;
     $error_list = array();
     foreach ($this->RTBPingerList as $RTBPinger) {
         $SellSidePartnerHourlyBids = new \model\SellSidePartnerHourlyBids();
         $SellSidePartnerHourlyBids->SellSidePartnerID = $RTBPinger->partner_id;
         $SellSidePartnerHourlyBids->PublisherAdZoneID = $this->PublisherAdZoneID;
         $SellSidePartnerHourlyBids->BidsWonCounter = 0;
         $SellSidePartnerHourlyBids->BidsLostCounter = 0;
         $SellSidePartnerHourlyBids->BidsErrorCounter = 0;
         $SellSidePartnerHourlyBids->SpendTotalGross = 0;
         $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross = 0;
         $SellSidePartnerHourlyBids->SpendTotalNet = 0;
         if ($RTBPinger->ping_success == true) {
             $bids_total += $RTBPinger->total_bids;
             if ($RTBPinger->won_auction === true) {
                 $bids_won += $RTBPinger->won_bids;
                 $bids_lost += $RTBPinger->lost_bids;
                 $SellSidePartnerHourlyBids->BidsWonCounter = $RTBPinger->won_bids;
                 if ($AuctionPopo->is_second_price_auction === true) {
                     $SellSidePartnerHourlyBids->SpendTotalGross = floatval($AuctionPopo->second_price_winning_bid_price) / 1000;
                     $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross = floatval($AuctionPopo->second_price_winning_adjusted_amount_before_private_exchange_markup_bid_price) / 1000;
                 } else {
                     $SellSidePartnerHourlyBids->SpendTotalGross = floatval($RTBPinger->winning_bid) / 1000;
                     $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross = floatval($RTBPinger->winning_amount_before_private_exchange_markup_bid) / 1000;
                 }
                 $spend_total_gross = $SellSidePartnerHourlyBids->SpendTotalGross;
                 $spend_total_private_exchange_gross = $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross;
                 // Subtract Global Ad Exchange Publisher markup
                 $mark_down = floatval($SellSidePartnerHourlyBids->SpendTotalGross) * floatval($this->publisher_markup_rate);
                 $adusted_amount_before_private_exchange_markup = floatval($SellSidePartnerHourlyBids->SpendTotalGross) - floatval($mark_down);
                 $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross = $adusted_amount_before_private_exchange_markup;
                 $spend_total_private_exchange_gross = $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross;
                 // Subtract Private Ad Exchange Publisher markup
                 $mark_down_private_exchange = floatval($SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross) * floatval($this->private_exchange_publisher_markup_rate);
                 $adusted_amount = floatval($adusted_amount_before_private_exchange_markup) - floatval($mark_down_private_exchange);
                 $SellSidePartnerHourlyBids->SpendTotalNet = $adusted_amount;
                 $spend_total_net = $SellSidePartnerHourlyBids->SpendTotalNet;
             } else {
                 $bids_lost += $RTBPinger->lost_bids;
                 $SellSidePartnerHourlyBids->BidsLostCounter = $RTBPinger->lost_bids;
             }
         } else {
             $bid_errors++;
             $SellSidePartnerHourlyBids->BidsErrorCounter = 1;
             $error_list[] = "PartnerID: " . $RTBPinger->partner_id . " Error Message: " . $RTBPinger->ping_error_message;
         }
         \util\CachedStatsWrites::incrementSellSideBidsCounterCached($this->config, $SellSidePartnerHourlyBids);
     }
     $PublisherHourlyBids = new \model\PublisherHourlyBids();
     $PublisherHourlyBids->PublisherAdZoneID = $this->PublisherAdZoneID;
     $PublisherHourlyBids->AuctionCounter = 1;
     $PublisherHourlyBids->BidsWonCounter = $bids_won;
     $PublisherHourlyBids->BidsLostCounter = $bids_lost;
     $PublisherHourlyBids->BidsErrorCounter = $bid_errors;
     $PublisherHourlyBids->SpendTotalGross = $spend_total_gross;
     $PublisherHourlyBids->SpendTotalPrivateExchangeGross = $spend_total_private_exchange_gross;
     $PublisherHourlyBids->SpendTotalNet = $spend_total_net;
     if ($AuctionPopo->ImpressionType == "video" && $AuctionPopo->auction_was_won && \util\ParseHelper::isVastURL($AuctionPopo->winning_ad_tag) === true) {
         /*
          * If this is a video impression record the winning auction 
          * information when the VASTAdTagURI is loaded from the 
          * publisher's video player.
          */
         $PublisherHourlyBidsCopy = new \model\PublisherHourlyBids();
         $PublisherHourlyBidsCopy->PublisherAdZoneID = $this->PublisherAdZoneID;
         $PublisherHourlyBidsCopy->AuctionCounter = 0;
         $PublisherHourlyBidsCopy->BidsWonCounter = 1;
         $PublisherHourlyBidsCopy->BidsLostCounter = 0;
         $PublisherHourlyBidsCopy->BidsErrorCounter = 0;
         $PublisherHourlyBidsCopy->SpendTotalGross = $spend_total_gross;
         $PublisherHourlyBidsCopy->SpendTotalPrivateExchangeGross = $spend_total_private_exchange_gross;
         $PublisherHourlyBidsCopy->SpendTotalNet = $spend_total_net;
         $AuctionPopo->vast_publisher_imp_obj = $PublisherHourlyBidsCopy;
         /*
          * Record the general impression auction information here now.
          */
         $PublisherHourlyBids->BidsWonCounter = 0;
         $PublisherHourlyBids->SpendTotalGross = 0;
         $PublisherHourlyBids->SpendTotalPrivateExchangeGross = 0;
         $PublisherHourlyBids->SpendTotalNet = 0;
     }
     \util\CachedStatsWrites::incrementPublisherBidsCounterCached($this->config, $PublisherHourlyBids);
     $log_header = "----------------------------------------------------------------\n";
     $log_header .= "NEW BID RESPONSE, WEBSITE: " . $this->WebDomain . ", PubZoneID: " . $this->PublisherAdZoneID . ", AD: " . $this->AdName;
     \rtbsellv22\RtbSellV22Logger::get_instance()->log[] = $log_header;
     $log_header = "NEW BID RESPONSE, WEBSITE: " . $this->WebDomain . ", PubZoneID: " . $this->PublisherAdZoneID . ", AD: " . $this->AdName;
     \rtbsellv22\RtbSellV22Logger::get_instance()->min_log[] = $log_header;
     $log = "----------------------------------------------------------------";
     $log .= "\nDate: " . date('m-d-Y H:i:s');
     $log .= "\nTotal Bids: " . $bids_total;
     $log .= "\nBids Won: " . $bids_won;
     $log .= "\nBids Lost: " . $bids_lost;
     $log .= "\nBid Errors: " . $bid_errors;
     $log .= "\nError List: " . implode(",", $error_list);
     foreach ($this->skipped_partner_list as $skipped_partner) {
         $log .= "\nSkipped Partner: " . $skipped_partner;
     }
     $log .= "\n----------------------------------------------------------------\n";
     \rtbsellv22\RtbSellV22Logger::get_instance()->log[] = $log;
     \rtbsellv22\RtbSellV22Logger::get_instance()->min_log[] = $log;
 }
 /**
  * 
  * @return \Zend\View\Model\ViewModel
  */
 public function editbannerAction()
 {
     $id = $this->getEvent()->getRouteMatch()->getParam('param1');
     if ($id == null) {
         die("Invalid Banner ID");
     }
     $initialized = $this->initialize();
     if ($initialized !== true) {
         return $initialized;
     }
     $is_preview = $this->getRequest()->getQuery('ispreview');
     // verify
     if ($is_preview == "true") {
         $is_preview = \transformation\TransformPreview::doesPreviewBannerExist($id, $this->auth);
     }
     $banner_preview_id = "";
     if ($is_preview == true) {
         // ACL PREVIEW PERMISSIONS CHECK
         transformation\CheckPermissions::checkEditPermissionAdCampaignBannerPreview($id, $this->auth, $this->config_handle);
         $AdCampaignVideoRestrictionsPreviewFactory = \_factory\AdCampaignVideoRestrictionsPreview::get_instance();
         $params = array();
         $params["AdCampaignBannerPreviewID"] = $id;
         $AdCampaignVideoRestrictions = $AdCampaignVideoRestrictionsPreviewFactory->get_row($params);
         $AdCampaignBannerPreviewFactory = \_factory\AdCampaignBannerPreview::get_instance();
         $params = array();
         $params["Active"] = 1;
         $params["AdCampaignBannerPreviewID"] = $id;
         $banner_preview_id = $id;
         $AdCampaignBanner = $AdCampaignBannerPreviewFactory->get_row($params);
     } else {
         // ACL PERMISSIONS CHECK
         transformation\CheckPermissions::checkEditPermissionAdCampaignBanner($id, $this->auth, $this->config_handle);
         $AdCampaignVideoRestrictionsFactory = \_factory\AdCampaignVideoRestrictions::get_instance();
         $params = array();
         $params["AdCampaignBannerID"] = $id;
         $AdCampaignVideoRestrictions = $AdCampaignVideoRestrictionsFactory->get_row($params);
         $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance();
         $params = array();
         $params["Active"] = 1;
         $params["AdCampaignBannerID"] = $id;
         $AdCampaignBanner = $AdCampaignBannerFactory->get_row($params);
     }
     if ($AdCampaignBanner == null) {
         die("Invalid {$AdCampaignBanner} ID");
     }
     $campaignid = isset($AdCampaignBanner->AdCampaignID) ? $AdCampaignBanner->AdCampaignID : "";
     $bannerid = isset($AdCampaignBanner->AdCampaignBannerID) ? $AdCampaignBanner->AdCampaignBannerID : "";
     $campaignpreviewid = isset($AdCampaignBanner->AdCampaignPreviewID) ? $AdCampaignBanner->AdCampaignPreviewID : "";
     $bannerpreviewid = isset($AdCampaignBanner->AdCampaignBannerPreviewID) ? $AdCampaignBanner->AdCampaignBannerPreviewID : "";
     $bannername = $AdCampaignBanner->Name;
     $startdate = date('m/d/Y', strtotime($AdCampaignBanner->StartDate));
     $enddate = date('m/d/Y', strtotime($AdCampaignBanner->EndDate));
     $current_adcampaigntype = $AdCampaignBanner->AdCampaignTypeID;
     $current_mobile = $AdCampaignBanner->IsMobile;
     if ($AdCampaignBanner->IsMobile == 2) {
         $size_list = \util\BannerOptions::$iab_mobile_tablet_banner_options;
     } elseif ($AdCampaignBanner->IsMobile > 0) {
         $size_list = \util\BannerOptions::$iab_mobile_phone_banner_options;
     } else {
         $size_list = \util\BannerOptions::$iab_banner_options;
     }
     $height = $AdCampaignBanner->Height;
     $width = $AdCampaignBanner->Width;
     $weight = $AdCampaignBanner->Weight;
     $bidamount = $AdCampaignBanner->BidAmount;
     $adtag = $AdCampaignBanner->AdTag;
     $landingpagetld = $AdCampaignBanner->LandingPageTLD;
     $current_iabsize = $AdCampaignBanner->IABSize;
     $ImpressionType = $AdCampaignBanner->ImpressionType;
     $current_mimes = array();
     $current_apis_supported = array();
     $current_protocols = array();
     $current_delivery_methods = array();
     $current_playback_methods = array();
     $current_start_delay = "";
     $current_linearity = "";
     $impression_type = "banner";
     if ($AdCampaignVideoRestrictions != null) {
         $current_mimes_raw = $AdCampaignVideoRestrictions->MimesCommaSeparated;
         $current_apis_supported_raw = $AdCampaignVideoRestrictions->ApisSupportedCommaSeparated;
         $current_protocols_raw = $AdCampaignVideoRestrictions->ProtocolsCommaSeparated;
         $current_delivery_methods_raw = $AdCampaignVideoRestrictions->DeliveryCommaSeparated;
         $current_playback_methods_raw = $AdCampaignVideoRestrictions->PlaybackCommaSeparated;
         $current_start_delay = $AdCampaignVideoRestrictions->StartDelay;
         $current_linearity = $AdCampaignVideoRestrictions->Linearity;
         $current_mimes = array();
         if ($current_mimes_raw) {
             $current_mimes = explode(',', $current_mimes_raw);
         }
         $current_apis_supported = array();
         if ($current_apis_supported_raw) {
             $current_apis_supported = explode(',', $current_apis_supported_raw);
         }
         $current_protocols = array();
         if ($current_protocols_raw) {
             $current_protocols = explode(',', $current_protocols_raw);
         }
         $current_delivery_methods = array();
         if ($current_delivery_methods_raw) {
             $current_delivery_methods = explode(',', $current_delivery_methods_raw);
         }
         $current_playback_methods = array();
         if ($current_playback_methods_raw) {
             $current_playback_methods = explode(',', $current_playback_methods_raw);
         }
     }
     $is_vast_url = \util\ParseHelper::isVastURL($adtag);
     $vast_type = $is_vast_url == true ? "url" : "xml";
     return new ViewModel(array('campaignid' => $campaignid, 'bannerid' => $bannerid, 'campaignpreviewid' => $campaignpreviewid, 'bannerpreviewid' => $bannerpreviewid, 'ispreview' => $is_preview == true ? '1' : '0', 'bannername' => $bannername, 'startdate' => $startdate, 'enddate' => $enddate, 'current_adcampaigntype' => $current_adcampaigntype, 'adcampaigntype_options' => $this->getAdCampaignTypeOptions(), 'current_mobile' => $current_mobile, 'mobile_options' => \util\BannerOptions::$mobile_options, 'size_list' => $size_list, 'height' => $height, 'width' => $width, 'weight' => $weight, 'bidamount' => $bidamount, 'adtag' => $adtag, 'vast_type' => $vast_type, 'landingpagetld' => $landingpagetld, 'current_iabsize' => $current_iabsize, 'bread_crumb_info' => $this->getBreadCrumbInfoFromBanner($bannerid, $bannerpreviewid, $is_preview), 'user_id_list' => $this->user_id_list_demand_customer, 'center_class' => 'centerj', 'user_identity' => $this->identity(), 'true_user_name' => $this->auth->getUserName(), 'header_title' => 'Edit Ad Campaign Banner', 'is_admin' => $this->is_admin, 'effective_id' => $this->auth->getEffectiveIdentityID(), 'impersonate_id' => $this->ImpersonateID, 'ImpressionType' => $ImpressionType, 'linearity' => \util\BannerOptions::$linearity, 'start_delay' => \util\BannerOptions::$start_delay, 'playback_methods' => \util\BannerOptions::$playback_methods, 'delivery_methods' => \util\BannerOptions::$delivery_methods, 'apis_supported' => \util\BannerOptions::$apis_supported, 'protocols' => \util\BannerOptions::$protocols, 'mimes' => \util\BannerOptions::$mimes, 'current_mimes' => $current_mimes, 'current_apis_supported' => $current_apis_supported, 'current_protocols' => $current_protocols, 'current_delivery_methods' => $current_delivery_methods, 'current_playback_methods' => $current_playback_methods, 'current_start_delay' => $current_start_delay, 'current_linearity' => $current_linearity, 'impression_type' => $impression_type));
 }