Esempio n. 1
0
 public static function checkEditPermissionInsertionOrderLineItem($banner_id, $auth, $config)
 {
     $params = array();
     $params["InsertionOrderLineItemID"] = $banner_id;
     if (!$auth->isSuperAdmin($config)) {
         $params["UserID"] = $auth->getUserID();
     }
     $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
     $InsertionOrderLineItem = $InsertionOrderLineItemFactory->get_row($params);
     if ($InsertionOrderLineItem === null) {
         //die("You are trying to view/edit an item you do not have permissions on");
         $params["error"] = "You are trying to view/edit an item you do not have permissions on";
     }
     return $params;
 }
Esempio n. 2
0
 public function process_business_rules_workflow($logger, $config, $rtb_seat_id, &$no_bid_reason, \model\openrtb\RtbBidRequest &$RtbBidRequest)
 {
     $this->config = $config;
     $this->rtb_seat_id = $rtb_seat_id;
     // $logger = \rtbbuyv22\RtbBuyV22Logger::get_instance();
     $InsertionOrderLineItem_Match_List = array();
     $InsertionOrderFactory = \_factory\InsertionOrder::get_instance();
     $params = array();
     $params["Active"] = 1;
     $InsertionOrderList = $InsertionOrderFactory->get_cached($this->config, $params);
     $this->current_time = time();
     $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
     $InsertionOrderLineItemDomainExclusionFactory = \_factory\InsertionOrderLineItemDomainExclusion::get_instance();
     $InsertionOrderLineItemExclusiveInclusionFactory = \_factory\InsertionOrderLineItemDomainExclusiveInclusion::get_instance();
     $InsertionOrderLineItemRestrictionsFactory = \_factory\InsertionOrderLineItemRestrictions::get_instance();
     $InsertionOrderLineItemVideoRestrictionsFactory = \_factory\InsertionOrderLineItemVideoRestrictions::get_instance();
     // match ip against country code
     \buyrtb\workflows\tasklets\common\insertionorder\GetGeoCodeCountry::execute($logger, $this, $RtbBidRequest);
     foreach ($InsertionOrderList as $InsertionOrder) {
         // Check campaign date
         if (\buyrtb\workflows\tasklets\common\insertionorder\CheckCampaignDate::execute($logger, $this, $RtbBidRequest, $InsertionOrder) === false) {
             continue;
         }
         // Check max spend
         if (\buyrtb\workflows\tasklets\common\insertionorder\CheckMaxSpend::execute($logger, $this, $RtbBidRequest, $InsertionOrder) === false) {
             continue;
         }
         // Check max impressions
         if (\buyrtb\workflows\tasklets\common\insertionorder\CheckMaxImpressions::execute($logger, $this, $RtbBidRequest, $InsertionOrder) === false) {
             continue;
         }
         // get markup rate for ad campaign
         $markup_rate = \util\Markup::getMarkupRate($InsertionOrder, $this->config);
         // iterate the active banners for this ad campaign
         $params = array();
         $params["InsertionOrderID"] = $InsertionOrder->InsertionOrderID;
         $params["Active"] = 1;
         $InsertionOrderLineItemList = $InsertionOrderLineItemFactory->get_cached($this->config, $params);
         foreach ($RtbBidRequest->RtbBidRequestImpList as $RtbBidRequestImp) {
             foreach ($InsertionOrderLineItemList as $InsertionOrderLineItem) {
                 if (empty($RtbBidRequestImp->RtbBidRequestVideo) && $InsertionOrderLineItem->ImpressionType == 'video' || !empty($RtbBidRequestImp->RtbBidRequestVideo) && ($InsertionOrderLineItem->ImpressionType == 'banner' || $InsertionOrderLineItem->ImpressionType == 'image')) {
                     continue;
                 }
                 /*
                  * check the business rules against the banner
                  */
                 // Check PMP
                 if (\buyrtb\workflows\tasklets\common\insertionorderlineitem\CheckPrivateMarketPlace::execute($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $InsertionOrderLineItem) === false) {
                     continue;
                 }
                 // Check Domain Admin SSP Channel Selections
                 if (\buyrtb\workflows\tasklets\common\insertionorderlineitem\CheckSspChannelSelections::execute($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $InsertionOrderLineItem) === false) {
                     continue;
                 }
                 // Check banner date
                 if (\buyrtb\workflows\tasklets\common\insertionorderlineitem\CheckBannerDate::execute($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $InsertionOrderLineItem) === false) {
                     continue;
                 }
                 // Check impression price floor
                 if (\buyrtb\workflows\tasklets\common\insertionorderlineitem\CheckPriceFloor::execute($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $InsertionOrderLineItem, $markup_rate) === false) {
                     continue;
                 }
                 // Check banner domain exclusive inclusions
                 if (\buyrtb\workflows\tasklets\common\insertionorderlineitem\CheckExclusiveInclusion::execute($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $InsertionOrderLineItem, $InsertionOrderLineItemExclusiveInclusionFactory) === false) {
                     continue;
                 }
                 // Check banner domain exclusions match
                 if (\buyrtb\workflows\tasklets\common\insertionorderlineitem\CheckDomainExclusion::execute($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $InsertionOrderLineItem, $InsertionOrderLineItemDomainExclusionFactory) === false) {
                     continue;
                 }
                 if (!empty($RtbBidRequestImp->RtbBidRequestVideo)) {
                     // Video Workflow
                     $VideoWorkflow = new \buyrtb\workflows\VideoWorkflow();
                     $passed_child_workflow = $VideoWorkflow->process_business_rules_workflow($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $InsertionOrderLineItem, $InsertionOrderLineItemVideoRestrictionsFactory);
                 } else {
                     // Display Banner Workflow - Default [ banner/ad tag/image creative types ]
                     $DisplayWorkflow = new \buyrtb\workflows\DisplayWorkflow();
                     $passed_child_workflow = $DisplayWorkflow->process_business_rules_workflow($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $InsertionOrderLineItem, $InsertionOrderLineItemRestrictionsFactory);
                 }
                 if ($passed_child_workflow === false) {
                     continue;
                 }
                 /*
                  * PASSED ALL THE BUSINESS RULES, ADD TO THE RESULTS
                  */
                 $InsertionOrderLineItemFactory->incrementInsertionOrderLineItemBidsCounterCached($this->config, $rtb_seat_id, $InsertionOrderLineItem->InsertionOrderLineItemID);
                 /*
                  * Adjust the bid rate according to the markup
                  */
                 $mark_down = floatval($InsertionOrderLineItem->BidAmount) * floatval($markup_rate);
                 $adusted_amount = floatval($InsertionOrderLineItem->BidAmount) - floatval($mark_down);
                 $InsertionOrderLineItem->BidAmount = sprintf("%1.4f", $adusted_amount);
                 // default in config
                 $currency = $this->config['settings']['rtb']['auction_currency'];
                 if (isset($RtbBidRequest->cur[0])) {
                     $currency = $RtbBidRequest->cur[0];
                 }
                 $InsertionOrderLineItem_Match_List[(string) $InsertionOrderLineItem->UserID][] = array("currency" => $currency, "impid" => $RtbBidRequestImp->id, "InsertionOrderLineItem" => $InsertionOrderLineItem);
             }
         }
     }
     if (count($InsertionOrderLineItem_Match_List)) {
         // Check Publisher Score
         if (\buyrtb\workflows\tasklets\common\thirdparty\CheckPublisherScore::execute($logger, $this, $RtbBidRequest) === false) {
             $no_bid_reason = NOBID_BAD_PUBLISHER;
             return array();
         }
         // Check Ad Fraud
         if (\buyrtb\workflows\tasklets\common\thirdparty\CheckAdFraud::execute($logger, $this, $RtbBidRequest) === false) {
             $no_bid_reason = NOBID_AD_FRAUD;
             return array();
         }
         // Check Cookie Match
         if (\buyrtb\workflows\tasklets\common\thirdparty\CheckCookieMatch::execute($logger, $this, $RtbBidRequest) === false) {
             $no_bid_reason = NOBID_UNMATCHED_USER;
             return array();
         }
     }
     return $InsertionOrderLineItem_Match_List;
 }
Esempio n. 3
0
 /**
  *
  * @return JSON encoded data for AJAX call
  */
 public function editlinkedbannerAction()
 {
     $id = intval($this->params()->fromRoute('id', 0));
     $height = $this->getRequest()->getQuery('height');
     $width = $this->getRequest()->getQuery('width');
     if ($height == null || $width == null) {
         $data = array('success' => false, 'linked_ad_zones' => "", 'complete_zone_list' => array());
         $this->setJsonHeader();
         return $this->getResponse()->setContent(json_encode($data));
     }
     $initialized = $this->initialize();
     if ($initialized !== true) {
         return $initialized;
     }
     if (!$this->is_super_admin) {
         $data = array('success' => false, 'linked_ad_zones' => "", 'complete_zone_list' => array());
         $this->setJsonHeader();
         return $this->getResponse()->setContent(json_encode($data));
     }
     // verify
     $linked_ad_banners = array();
     $PublisherAdZoneFactory = \_factory\PublisherAdZone::get_instance();
     if ($id) {
         $params = array("PublisherAdZoneID" => $id);
         $PublisherAdZone = $PublisherAdZoneFactory->get_row_object($params);
         if ($PublisherAdZone == null || $PublisherAdZone->AdOwnerID != $this->PublisherInfoID) {
             $error_message = "An invalid Ad Zone ID was provided.";
             $data = array('success' => false, 'error' => $error_message, 'linked_ad_zones' => "", 'complete_zone_list' => array());
             $this->setJsonHeader();
             return $this->getResponse()->setContent(json_encode($data));
         }
     }
     $params = array();
     $params["Height"] = $height;
     $params["Width"] = $width;
     $params["Active"] = 1;
     // $params["UserID"] 	= $this->EffectiveID;
     $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
     $InsertionOrderLineItemList = $InsertionOrderLineItemFactory->get($params);
     if ($InsertionOrderLineItemList === null) {
         $InsertionOrderLineItemList = array();
     }
     $complete_banner_list = array();
     foreach ($InsertionOrderLineItemList as $InsertionOrderLineItem) {
         $complete_banner_list[] = array("banner_id" => $InsertionOrderLineItem->InsertionOrderLineItemID, "ad_name" => $InsertionOrderLineItem->Name);
     }
     $linked_banner_list = array();
     foreach ($linked_ad_banners as $linked_ad_banner) {
         $linked_banner_list[] = $linked_ad_banner->InsertionOrderLineItemID;
     }
     $data = array('success' => count($InsertionOrderLineItemList) > 0, 'linked_ad_banners' => implode(',', $linked_banner_list), 'complete_banner_list' => $complete_banner_list);
     $this->setJsonHeader();
     return $this->getResponse()->setContent(json_encode($data));
 }
Esempio n. 4
0
 /**
  * 
  * @param unknown $id
  * @return unknown
  */
 private function getBreadCrumbInfoFromInsertionOrderLineItemID($id)
 {
     $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
     $params = array();
     $params["InsertionOrderLineItemID"] = $id;
     $InsertionOrderLineItem = $InsertionOrderLineItemFactory->get_row($params);
     $bread_crumb_info = $this->getBreadCrumbInfoFromCampaignID($InsertionOrderLineItem->InsertionOrderID);
     $bread_crumb_info["BCBanner"] = $InsertionOrderLineItem->Name;
     return $bread_crumb_info;
 }
Esempio n. 5
0
 public static function cloneInsertionOrderIntoInsertionOrderPreview($ad_campaign_id, $auth, $config, $mail_transport, $update_data)
 {
     $return_val = array();
     if ($ad_campaign_id === null) {
         return null;
     }
     $InsertionOrderFactory = \_factory\InsertionOrder::get_instance();
     $params = array();
     $params["InsertionOrderID"] = $ad_campaign_id;
     if (!$auth->isSuperAdmin($config)) {
         $params["UserID"] = $auth->getUserID();
     }
     $params["Active"] = 1;
     $InsertionOrder = $InsertionOrderFactory->get_row($params);
     if ($InsertionOrder == null) {
         //die("Invalid InsertionOrder ID");
         $params["error"] = "Invalid InsertionOrder ID";
         return $params;
     }
     /*
      * Clone InsertionOrder into InsertionOrderPreview
      */
     $InsertionOrderPreviewFactory = \_factory\InsertionOrderPreview::get_instance();
     $InsertionOrderPreview = new \model\InsertionOrderPreview();
     $InsertionOrderPreview->InsertionOrderID = $InsertionOrder->InsertionOrderID;
     $InsertionOrderPreview->UserID = $InsertionOrder->UserID;
     $InsertionOrderPreview->Name = $InsertionOrder->Name;
     $InsertionOrderPreview->StartDate = $InsertionOrder->StartDate;
     $InsertionOrderPreview->EndDate = $InsertionOrder->EndDate;
     $InsertionOrderPreview->Customer = $InsertionOrder->Customer;
     $InsertionOrderPreview->CustomerID = $InsertionOrder->CustomerID;
     $InsertionOrderPreview->ImpressionsCounter = 0;
     $InsertionOrderPreview->MaxImpressions = $InsertionOrder->MaxImpressions;
     $InsertionOrderPreview->CurrentSpend = 0;
     $InsertionOrderPreview->MaxSpend = $InsertionOrder->MaxSpend;
     $InsertionOrderPreview->Active = 1;
     $InsertionOrderPreview->DateCreated = date("Y-m-d H:i:s");
     $InsertionOrderPreview->DateUpdated = date("Y-m-d H:i:s");
     $InsertionOrderPreview->ChangeWentLive = 0;
     $InsertionOrderPreview->WentLiveDate = '0000-00-00 00:00:00';
     $InsertionOrderPreviewID = $InsertionOrderPreviewFactory->saveInsertionOrderPreview($InsertionOrderPreview);
     if ($update_data['type'] == 'InsertionOrderID') {
         $return_val = array('InsertionOrderPreviewID' => $InsertionOrderPreviewID);
     }
     $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
     $params = array();
     $params["InsertionOrderID"] = $InsertionOrder->InsertionOrderID;
     $params["Active"] = 1;
     $InsertionOrderLineItemList = $InsertionOrderLineItemFactory->get($params);
     $InsertionOrderLineItemPreviewFactory = \_factory\InsertionOrderLineItemPreview::get_instance();
     $InsertionOrderLineItemRestrictionsFactory = \_factory\InsertionOrderLineItemRestrictions::get_instance();
     $InsertionOrderLineItemRestrictionsPreviewFactory = \_factory\InsertionOrderLineItemRestrictionsPreview::get_instance();
     $InsertionOrderLineItemVideoRestrictionsFactory = \_factory\InsertionOrderLineItemVideoRestrictions::get_instance();
     $InsertionOrderLineItemVideoRestrictionsPreviewFactory = \_factory\InsertionOrderLineItemVideoRestrictionsPreview::get_instance();
     $InsertionOrderLineItemDomainExclusionFactory = \_factory\InsertionOrderLineItemDomainExclusion::get_instance();
     $InsertionOrderLineItemDomainExclusionPreviewFactory = \_factory\InsertionOrderLineItemDomainExclusionPreview::get_instance();
     $InsertionOrderLineItemDomainExclusiveInclusionFactory = \_factory\InsertionOrderLineItemDomainExclusiveInclusion::get_instance();
     $InsertionOrderLineItemDomainExclusiveInclusionPreviewFactory = \_factory\InsertionOrderLineItemDomainExclusiveInclusionPreview::get_instance();
     $SspRtbChannelToInsertionOrderLineItemPreviewFactory = \_factory\SspRtbChannelToInsertionOrderLineItemPreview::get_instance();
     $SspRtbChannelToInsertionOrderLineItemFactory = \_factory\SspRtbChannelToInsertionOrderLineItem::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItem::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItemPreview::get_instance();
     $SspRtbChannelToInsertionOrderPreviewFactory = \_factory\SspRtbChannelToInsertionOrderPreview::get_instance();
     $SspRtbChannelToInsertionOrderFactory = \_factory\SspRtbChannelToInsertionOrder::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrder::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderPreviewFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderPreview::get_instance();
     /*
      * PMP INVENTORY
      */
     $params = array();
     $params["InsertionOrderID"] = $InsertionOrder->InsertionOrderID;
     $PmpDealPublisherWebsiteToInsertionOrder = $PmpDealPublisherWebsiteToInsertionOrderFactory->get_row($params);
     if ($PmpDealPublisherWebsiteToInsertionOrder != null) {
         $PmpDealPublisherWebsiteToInsertionOrderPreview = new \model\PmpDealPublisherWebsiteToInsertionOrderPreview();
         $PmpDealPublisherWebsiteToInsertionOrderPreview->PublisherWebsiteID = $PmpDealPublisherWebsiteToInsertionOrder->PublisherWebsiteID;
         $PmpDealPublisherWebsiteToInsertionOrderPreview->PublisherWebsiteLocal = $PmpDealPublisherWebsiteToInsertionOrder->PublisherWebsiteLocal;
         $PmpDealPublisherWebsiteToInsertionOrderPreview->PublisherWebsiteDescription = $PmpDealPublisherWebsiteToInsertionOrder->PublisherWebsiteDescription;
         $PmpDealPublisherWebsiteToInsertionOrderPreview->InsertionOrderPreviewID = $InsertionOrderPreviewID;
         $PmpDealPublisherWebsiteToInsertionOrderPreview->Enabled = $PmpDealPublisherWebsiteToInsertionOrder->Enabled;
         $PmpDealPublisherWebsiteToInsertionOrderPreview->DateCreated = date("Y-m-d H:i:s");
         $PmpDealPublisherWebsiteToInsertionOrderPreview->DateUpdated = date("Y-m-d H:i:s");
         $PmpDealPublisherWebsiteToInsertionOrderPreviewFactory->savePmpDealPublisherWebsiteToInsertionOrderPreview($PmpDealPublisherWebsiteToInsertionOrderPreview);
     }
     /*
      * SSP INVENTORY
      */
     $params = array();
     $params["InsertionOrderID"] = $InsertionOrder->InsertionOrderID;
     $SspRtbChannelToInsertionOrder = $SspRtbChannelToInsertionOrderFactory->get_row($params);
     if ($SspRtbChannelToInsertionOrder != null) {
         $SspRtbChannelToInsertionOrderPreview = new \model\SspRtbChannelToInsertionOrderPreview();
         $SspRtbChannelToInsertionOrderPreview->SspPublisherChannelID = $SspRtbChannelToInsertionOrder->SspPublisherChannelID;
         $SspRtbChannelToInsertionOrderPreview->SspPublisherChannelDescription = $SspRtbChannelToInsertionOrder->SspPublisherChannelDescription;
         $SspRtbChannelToInsertionOrderPreview->SspExchange = $SspRtbChannelToInsertionOrder->SspExchange;
         $SspRtbChannelToInsertionOrderPreview->InsertionOrderPreviewID = $InsertionOrderPreviewID;
         $SspRtbChannelToInsertionOrderPreview->Enabled = $SspRtbChannelToInsertionOrder->Enabled;
         $SspRtbChannelToInsertionOrderPreview->DateCreated = date("Y-m-d H:i:s");
         $SspRtbChannelToInsertionOrderPreview->DateUpdated = date("Y-m-d H:i:s");
         $SspRtbChannelToInsertionOrderPreviewFactory->saveSspRtbChannelToInsertionOrderPreview($SspRtbChannelToInsertionOrderPreview);
     }
     foreach ($InsertionOrderLineItemList as $InsertionOrderLineItem) {
         $banner_id = $InsertionOrderLineItem->InsertionOrderLineItemID;
         $BannerPreview = new \model\InsertionOrderLineItemPreview();
         $BannerPreview->InsertionOrderPreviewID = $InsertionOrderPreviewID;
         $BannerPreview->InsertionOrderLineItemID = $InsertionOrderLineItem->InsertionOrderLineItemID;
         $BannerPreview->UserID = $InsertionOrderLineItem->UserID;
         $BannerPreview->Name = $InsertionOrderLineItem->Name;
         $BannerPreview->ImpressionType = $InsertionOrderLineItem->ImpressionType;
         $BannerPreview->StartDate = $InsertionOrderLineItem->StartDate;
         $BannerPreview->EndDate = $InsertionOrderLineItem->EndDate;
         $BannerPreview->IsMobile = $InsertionOrderLineItem->IsMobile;
         $BannerPreview->IABSize = $InsertionOrderLineItem->IABSize;
         $BannerPreview->Height = $InsertionOrderLineItem->Height;
         $BannerPreview->Width = $InsertionOrderLineItem->Width;
         $BannerPreview->Weight = $InsertionOrderLineItem->Weight;
         $BannerPreview->BidAmount = $InsertionOrderLineItem->BidAmount;
         $BannerPreview->AdTag = $InsertionOrderLineItem->AdTag;
         $BannerPreview->DeliveryType = $InsertionOrderLineItem->DeliveryType;
         $BannerPreview->LandingPageTLD = $InsertionOrderLineItem->LandingPageTLD;
         $BannerPreview->ImpressionsCounter = $InsertionOrderLineItem->ImpressionsCounter;
         $BannerPreview->BidsCounter = $InsertionOrderLineItem->BidsCounter;
         $BannerPreview->CurrentSpend = $InsertionOrderLineItem->CurrentSpend;
         $BannerPreview->Active = $InsertionOrderLineItem->Active;
         $BannerPreview->DateCreated = date("Y-m-d H:i:s");
         $BannerPreview->DateUpdated = date("Y-m-d H:i:s");
         $BannerPreview->ChangeWentLive = 0;
         $BannerPreview->WentLiveDate = '0000-00-00 00:00:00';
         $InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewFactory->saveInsertionOrderLineItemPreview($BannerPreview);
         if ($update_data['type'] == 'InsertionOrderLineItemID' && $update_data['id'] == $banner_id) {
             $return_val = array('InsertionOrderLineItemPreviewID' => $InsertionOrderLineItemPreviewID, 'InsertionOrderPreviewID' => $InsertionOrderPreviewID);
         }
         if ($BannerPreview->ImpressionType == 'video') {
             /*
              * VIDEO RESTRICTIONS
              */
             $params = array();
             $params["InsertionOrderLineItemID"] = $banner_id;
             $InsertionOrderLineItemVideoRestrictions = $InsertionOrderLineItemVideoRestrictionsFactory->get_row($params);
             if ($InsertionOrderLineItemVideoRestrictions != null) {
                 $VideoRestrictionsPreview = new \model\InsertionOrderLineItemVideoRestrictionsPreview();
                 $VideoRestrictionsPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
                 $VideoRestrictionsPreview->GeoCountry = $InsertionOrderLineItemVideoRestrictions->GeoCountry;
                 $VideoRestrictionsPreview->GeoState = $InsertionOrderLineItemVideoRestrictions->GeoState;
                 $VideoRestrictionsPreview->GeoCity = $InsertionOrderLineItemVideoRestrictions->GeoCity;
                 $VideoRestrictionsPreview->MimesCommaSeparated = $InsertionOrderLineItemVideoRestrictions->MimesCommaSeparated;
                 $VideoRestrictionsPreview->MinDuration = $InsertionOrderLineItemVideoRestrictions->MinDuration;
                 $VideoRestrictionsPreview->MaxDuration = $InsertionOrderLineItemVideoRestrictions->MaxDuration;
                 $VideoRestrictionsPreview->ApisSupportedCommaSeparated = $InsertionOrderLineItemVideoRestrictions->ApisSupportedCommaSeparated;
                 $VideoRestrictionsPreview->ProtocolsCommaSeparated = $InsertionOrderLineItemVideoRestrictions->ProtocolsCommaSeparated;
                 $VideoRestrictionsPreview->DeliveryCommaSeparated = $InsertionOrderLineItemVideoRestrictions->DeliveryCommaSeparated;
                 $VideoRestrictionsPreview->PlaybackCommaSeparated = $InsertionOrderLineItemVideoRestrictions->PlaybackCommaSeparated;
                 $VideoRestrictionsPreview->StartDelay = $InsertionOrderLineItemVideoRestrictions->StartDelay;
                 $VideoRestrictionsPreview->Linearity = $InsertionOrderLineItemVideoRestrictions->Linearity;
                 $VideoRestrictionsPreview->FoldPos = $InsertionOrderLineItemVideoRestrictions->FoldPos;
                 $VideoRestrictionsPreview->MinHeight = $InsertionOrderLineItemVideoRestrictions->MinHeight;
                 $VideoRestrictionsPreview->MinWidth = $InsertionOrderLineItemVideoRestrictions->MinWidth;
                 $VideoRestrictionsPreview->Secure = $InsertionOrderLineItemVideoRestrictions->Secure;
                 $VideoRestrictionsPreview->Optout = $InsertionOrderLineItemVideoRestrictions->Optout;
                 $VideoRestrictionsPreview->Vertical = $InsertionOrderLineItemVideoRestrictions->Vertical;
                 $VideoRestrictionsPreview->DateCreated = date("Y-m-d H:i:s");
                 $VideoRestrictionsPreview->DateUpdated = date("Y-m-d H:i:s");
                 $InsertionOrderLineItemVideoRestrictionsPreviewID = $InsertionOrderLineItemVideoRestrictionsPreviewFactory->saveInsertionOrderLineItemVideoRestrictionsPreview($VideoRestrictionsPreview);
                 if ($update_data['type'] == 'InsertionOrderLineItemVideoRestrictionsID' && $update_data['id'] == $InsertionOrderLineItemVideoRestrictions->InsertionOrderLineItemVideoRestrictionsID) {
                     $return_val = array('InsertionOrderLineItemVideoRestrictionsPreviewID' => $InsertionOrderLineItemVideoRestrictionsPreviewID, 'InsertionOrderLineItemPreviewID' => $InsertionOrderLineItemPreviewID, 'InsertionOrderPreviewID' => $InsertionOrderPreviewID);
                 }
             }
         } else {
             /*
              * BANNER RESTRICTIONS
              */
             $params = array();
             $params["InsertionOrderLineItemID"] = $banner_id;
             $InsertionOrderLineItemRestrictions = $InsertionOrderLineItemRestrictionsFactory->get_row($params);
             // may not be present
             if ($InsertionOrderLineItemRestrictions != null) {
                 $BannerRestrictionsPreview = new \model\InsertionOrderLineItemRestrictionsPreview();
                 $BannerRestrictionsPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
                 $BannerRestrictionsPreview->GeoCountry = $InsertionOrderLineItemRestrictions->GeoCountry;
                 $BannerRestrictionsPreview->GeoState = $InsertionOrderLineItemRestrictions->GeoState;
                 $BannerRestrictionsPreview->GeoCity = $InsertionOrderLineItemRestrictions->GeoCity;
                 $BannerRestrictionsPreview->AdTagType = $InsertionOrderLineItemRestrictions->AdTagType;
                 $BannerRestrictionsPreview->AdPositionMinLeft = $InsertionOrderLineItemRestrictions->AdPositionMinLeft;
                 $BannerRestrictionsPreview->AdPositionMaxLeft = $InsertionOrderLineItemRestrictions->AdPositionMaxLeft;
                 $BannerRestrictionsPreview->AdPositionMinTop = $InsertionOrderLineItemRestrictions->AdPositionMinTop;
                 $BannerRestrictionsPreview->AdPositionMaxTop = $InsertionOrderLineItemRestrictions->AdPositionMaxTop;
                 $BannerRestrictionsPreview->FoldPos = $InsertionOrderLineItemRestrictions->FoldPos;
                 $BannerRestrictionsPreview->Freq = $InsertionOrderLineItemRestrictions->Freq;
                 $BannerRestrictionsPreview->Timezone = $InsertionOrderLineItemRestrictions->Timezone;
                 $BannerRestrictionsPreview->InIframe = $InsertionOrderLineItemRestrictions->InIframe;
                 $BannerRestrictionsPreview->MinScreenResolutionWidth = $InsertionOrderLineItemRestrictions->MinScreenResolutionWidth;
                 $BannerRestrictionsPreview->MaxScreenResolutionWidth = $InsertionOrderLineItemRestrictions->MaxScreenResolutionWidth;
                 $BannerRestrictionsPreview->MinScreenResolutionHeight = $InsertionOrderLineItemRestrictions->MinScreenResolutionHeight;
                 $BannerRestrictionsPreview->MaxScreenResolutionHeight = $InsertionOrderLineItemRestrictions->MaxScreenResolutionHeight;
                 $BannerRestrictionsPreview->HttpLanguage = $InsertionOrderLineItemRestrictions->HttpLanguage;
                 $BannerRestrictionsPreview->BrowserUserAgentGrep = $InsertionOrderLineItemRestrictions->BrowserUserAgentGrep;
                 $BannerRestrictionsPreview->Secure = $InsertionOrderLineItemRestrictions->Secure;
                 $BannerRestrictionsPreview->Optout = $InsertionOrderLineItemRestrictions->Optout;
                 $BannerRestrictionsPreview->Vertical = $InsertionOrderLineItemRestrictions->Vertical;
                 $BannerRestrictionsPreview->DateCreated = date("Y-m-d H:i:s");
                 $BannerRestrictionsPreview->DateUpdated = date("Y-m-d H:i:s");
                 $InsertionOrderLineItemRestrictionsPreviewID = $InsertionOrderLineItemRestrictionsPreviewFactory->saveInsertionOrderLineItemRestrictionsPreview($BannerRestrictionsPreview);
                 if ($update_data['type'] == 'InsertionOrderLineItemRestrictionsID' && $update_data['id'] == $InsertionOrderLineItemRestrictions->InsertionOrderLineItemRestrictionsID) {
                     $return_val = array('InsertionOrderLineItemRestrictionsPreviewID' => $InsertionOrderLineItemRestrictionsPreviewID, 'InsertionOrderLineItemPreviewID' => $InsertionOrderLineItemPreviewID, 'InsertionOrderPreviewID' => $InsertionOrderPreviewID);
                 }
             }
         }
         /*
          * PMP INVENTORY
          */
         $params = array();
         $params["InsertionOrderLineItemID"] = $banner_id;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemList = $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory->get($params);
         if ($PmpDealPublisherWebsiteToInsertionOrderLineItemList != null) {
             foreach ($PmpDealPublisherWebsiteToInsertionOrderLineItemList as $PmpDealPublisherWebsiteToInsertionOrderLineItem) {
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview = new \model\PmpDealPublisherWebsiteToInsertionOrderLineItemPreview();
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteID = $PmpDealPublisherWebsiteToInsertionOrderLineItem->PublisherWebsiteID;
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteLocal = $PmpDealPublisherWebsiteToInsertionOrderLineItem->PublisherWebsiteLocal;
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteDescription = $PmpDealPublisherWebsiteToInsertionOrderLineItem->PublisherWebsiteDescription;
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->Enabled = $PmpDealPublisherWebsiteToInsertionOrderLineItem->Enabled;
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->DateCreated = date("Y-m-d H:i:s");
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->DateUpdated = date("Y-m-d H:i:s");
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory->savePmpDealPublisherWebsiteToInsertionOrderLineItemPreview($PmpDealPublisherWebsiteToInsertionOrderLineItemPreview);
             }
         }
         /*
          * SSP INVENTORY
          */
         $params = array();
         $params["InsertionOrderLineItemID"] = $banner_id;
         $SspRtbChannelToInsertionOrderLineItemList = $SspRtbChannelToInsertionOrderLineItemFactory->get_row($params);
         if ($SspRtbChannelToInsertionOrderLineItemList != null) {
             foreach ($SspRtbChannelToInsertionOrderLineItemList as $SspRtbChannelToInsertionOrderLineItem) {
                 $SspRtbChannelToInsertionOrderLineItemPreview = new \model\SspRtbChannelToInsertionOrderLineItemPreview();
                 $SspRtbChannelToInsertionOrderLineItemPreview->SspPublisherChannelID = $SspRtbChannelToInsertionOrderLineItem->SspPublisherChannelID;
                 $SspRtbChannelToInsertionOrderLineItemPreview->SspPublisherChannelDescription = $SspRtbChannelToInsertionOrderLineItem->SspPublisherChannelDescription;
                 $SspRtbChannelToInsertionOrderLineItemPreview->SspExchange = $SspRtbChannelToInsertionOrderLineItem->SspExchange;
                 $SspRtbChannelToInsertionOrderLineItemPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
                 $SspRtbChannelToInsertionOrderLineItemPreview->Enabled = $SspRtbChannelToInsertionOrderLineItem->Enabled;
                 $SspRtbChannelToInsertionOrderLineItemPreview->DateCreated = date("Y-m-d H:i:s");
                 $SspRtbChannelToInsertionOrderLineItemPreview->DateUpdated = date("Y-m-d H:i:s");
                 $SspRtbChannelToInsertionOrderLineItemPreviewFactory->saveSspRtbChannelToInsertionOrderLineItemPreview($SspRtbChannelToInsertionOrderLineItemPreview);
             }
         }
         /*
          * DOMAIN EXCLUSIONS
          */
         $params = array();
         $params["InsertionOrderLineItemID"] = $banner_id;
         $InsertionOrderLineItemDomainExclusionList = $InsertionOrderLineItemDomainExclusionFactory->get($params);
         foreach ($InsertionOrderLineItemDomainExclusionList as $InsertionOrderLineItemDomainExclusion) {
             $BannerDomainExclusionPreview = new \model\InsertionOrderLineItemDomainExclusionPreview();
             $BannerDomainExclusionPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
             $BannerDomainExclusionPreview->ExclusionType = $InsertionOrderLineItemDomainExclusion->ExclusionType;
             $BannerDomainExclusionPreview->DomainName = $InsertionOrderLineItemDomainExclusion->DomainName;
             $BannerDomainExclusionPreview->DateCreated = date("Y-m-d H:i:s");
             $BannerDomainExclusionPreview->DateUpdated = date("Y-m-d H:i:s");
             $InsertionOrderLineItemDomainExclusionPreviewID = $InsertionOrderLineItemDomainExclusionPreviewFactory->saveInsertionOrderLineItemDomainExclusionPreview($BannerDomainExclusionPreview);
             if ($update_data['type'] == 'InsertionOrderLineItemDomainExclusionID' && $update_data['id'] == $InsertionOrderLineItemDomainExclusion->InsertionOrderLineItemDomainExclusionID) {
                 $return_val = array('InsertionOrderLineItemDomainExclusionPreviewID' => $InsertionOrderLineItemDomainExclusionPreviewID, 'InsertionOrderLineItemPreviewID' => $InsertionOrderLineItemPreviewID, 'InsertionOrderPreviewID' => $InsertionOrderPreviewID);
             }
         }
         /*
          * DOMAIN EXCLUSIVE INCLUSIONS
          */
         $params = array();
         $params["InsertionOrderLineItemID"] = $banner_id;
         $InsertionOrderLineItemDomainExclusiveInclusionList = $InsertionOrderLineItemDomainExclusiveInclusionFactory->get($params);
         foreach ($InsertionOrderLineItemDomainExclusiveInclusionList as $InsertionOrderLineItemDomainExclusiveInclusion) {
             $BannerDomainExclusiveInclusionPreview = new \model\InsertionOrderLineItemDomainExclusiveInclusionPreview();
             $BannerDomainExclusiveInclusionPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
             $BannerDomainExclusiveInclusionPreview->InclusionType = $InsertionOrderLineItemDomainExclusiveInclusion->InclusionType;
             $BannerDomainExclusiveInclusionPreview->DomainName = $InsertionOrderLineItemDomainExclusiveInclusion->DomainName;
             $BannerDomainExclusiveInclusionPreview->DateCreated = date("Y-m-d H:i:s");
             $BannerDomainExclusiveInclusionPreview->DateUpdated = date("Y-m-d H:i:s");
             $InsertionOrderLineItemDomainExclusiveInclusionPreviewID = $InsertionOrderLineItemDomainExclusiveInclusionPreviewFactory->saveInsertionOrderLineItemDomainExclusiveInclusionPreview($BannerDomainExclusiveInclusionPreview);
             if ($update_data['type'] == 'InsertionOrderLineItemDomainExclusiveInclusionID' && $update_data['id'] == $InsertionOrderLineItemDomainExclusiveInclusion->InsertionOrderLineItemDomainExclusiveInclusionID) {
                 $return_val = array('InsertionOrderLineItemDomainExclusiveInclusionPreviewID' => $InsertionOrderLineItemDomainExclusiveInclusionPreviewID, 'InsertionOrderLineItemPreviewID' => $InsertionOrderLineItemPreviewID, 'InsertionOrderPreviewID' => $InsertionOrderPreviewID);
             }
         }
     }
     if (!$auth->getIsSuperAdmin($config) && $config['mail']['subscribe']['campaigns'] === true) {
         // if this ad campaign was not created/edited by the admin, then send out a notification email
         $message = '<b>NginAd Demand Customer Campaign Edited by ' . $auth->getUserName() . '.</b><br /><br />';
         $message = $message . '<table border="0" width="10%">';
         $message = $message . '<tr><td><b>InsertionOrderID: </b></td><td>' . $InsertionOrder->InsertionOrderID . '</td></tr>';
         $message = $message . '<tr><td><b>UserID: </b></td><td>' . $InsertionOrder->UserID . '</td></tr>';
         $message = $message . '<tr><td><b>Name: </b></td><td>' . $InsertionOrder->Name . '</td></tr>';
         $message = $message . '<tr><td><b>StartDate: </b></td><td>' . $InsertionOrder->StartDate . '</td></tr>';
         $message = $message . '<tr><td><b>EndDate: </b></td><td>' . $InsertionOrder->EndDate . '</td></tr>';
         $message = $message . '<tr><td><b>Customer: </b></td><td>' . $InsertionOrder->Customer . '</td></tr>';
         $message = $message . '<tr><td><b>CustomerID: </b></td><td>' . $InsertionOrder->CustomerID . '</td></tr>';
         $message = $message . '<tr><td><b>MaxImpressions: </b></td><td>' . $InsertionOrder->MaxImpressions . '</td></tr>';
         $message = $message . '<tr><td><b>MaxSpend: </b></td><td>' . $InsertionOrder->MaxSpend . '</td></tr>';
         $message = $message . '</table>';
         $subject = "NginAd Demand Customer Campaign Edited by " . $auth->getUserName();
         $text = new Mime\Part($message);
         $text->type = Mime\Mime::TYPE_HTML;
         $text->charset = 'utf-8';
         $mimeMessage = new Mime\Message();
         $mimeMessage->setParts(array($text));
         $zf_message = new Message();
         $zf_message->addTo($config['mail']['admin-email']['email'], $config['mail']['admin-email']['name'])->addFrom($config['mail']['reply-to']['email'], $config['mail']['reply-to']['name'])->setSubject($subject)->setBody($mimeMessage);
         $mail_transport->send($zf_message);
     }
     return $return_val;
 }
Esempio n. 6
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. 7
0
 private function updateInsertionOrderLineItemTotals()
 {
     /*
      * update all compiled stats into the InsertionOrderLineItem table
      */
     $BidTotalsRollupFactory = \_factory\BidTotalsRollup::get_instance();
     $ImpressionAndSpendTotalsRollupFactory = \_factory\ImpressionAndSpendTotalsRollup::get_instance();
     $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
     $params = array();
     $params["Active"] = 1;
     $InsertionOrderLineItemList = $InsertionOrderLineItemFactory->get($params);
     foreach ($InsertionOrderLineItemList as $InsertionOrderLineItem) {
         $banner_id = $InsertionOrderLineItem->InsertionOrderLineItemID;
         $params = array();
         $params["InsertionOrderLineItemID"] = $banner_id;
         $BidTotalsRollup = $BidTotalsRollupFactory->get_row($params);
         if ($BidTotalsRollup == null) {
             continue;
         }
         $ImpressionAndSpendTotalsRollup = $ImpressionAndSpendTotalsRollupFactory->get_row($params);
         if ($ImpressionAndSpendTotalsRollup == null) {
             continue;
         }
         $InsertionOrderLineItem->BidsCounter = $BidTotalsRollup->TotalBids;
         $InsertionOrderLineItem->ImpressionsCounter = $ImpressionAndSpendTotalsRollup->TotalImpressions;
         $InsertionOrderLineItem->CurrentSpend = $ImpressionAndSpendTotalsRollup->TotalSpendGross;
         $data = $InsertionOrderLineItem->getArrayCopy();
         $InsertionOrderLineItemFactory->saveInsertionOrderLineItemFromDataArray($data);
     }
     /*
      * Update all InsertionOrder tables with the new info from the InsertionOrderLineItem tables
      */
     $InsertionOrderFactory = \_factory\InsertionOrder::get_instance();
     $params = array();
     $params["Active"] = 1;
     $InsertionOrderList = $InsertionOrderFactory->get($params);
     foreach ($InsertionOrderList as $InsertionOrder) {
         $ad_campaign_id = $InsertionOrder->InsertionOrderID;
         $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
         $params = array();
         $params["InsertionOrderID"] = $ad_campaign_id;
         $InsertionOrderLineItemList = $InsertionOrderLineItemFactory->get($params);
         $impressions_counter = 0;
         $current_spend = 0;
         foreach ($InsertionOrderLineItemList as $InsertionOrderLineItem) {
             $impressions_counter += $InsertionOrderLineItem->ImpressionsCounter;
             $current_spend += floatval($InsertionOrderLineItem->CurrentSpend);
         }
         $InsertionOrder->ImpressionsCounter = $impressions_counter;
         $InsertionOrder->CurrentSpend = $current_spend;
         $data = $InsertionOrder->getArrayCopy();
         $InsertionOrderFactory->saveInsertionOrderFromDataArray($data);
     }
 }