public static function checkEditPermissionInsertionOrder($campaign_id, $auth, $config) { $params = array(); $params["InsertionOrderID"] = $campaign_id; if (!$auth->isSuperAdmin($config)) { $params["UserID"] = $auth->getUserID(); } $InsertionOrderFactory = \_factory\InsertionOrder::get_instance(); $InsertionOrder = $InsertionOrderFactory->get_row($params); if ($InsertionOrder === null) { die("You are trying to view/edit an item you do not have permissions on"); } }
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; }
/** * * @param unknown $id * @return multitype:NULL */ private function getBreadCrumbInfoFromCampaignID($id) { $InsertionOrderFactory = \_factory\InsertionOrder::get_instance(); $params = array(); $params["InsertionOrderID"] = $id; $InsertionOrder = $InsertionOrderFactory->get_row($params); return array("BCInsertionOrder" => '<a href="/private-exchange/viewlineitem/' . $InsertionOrder->InsertionOrderID . '">' . $InsertionOrder->Name . "</a>"); }
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; }
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; }
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); } }