public static function checkEditPermissionAdCampaignBanner($banner_id, $auth, $config) { $params = array(); $params["AdCampaignBannerID"] = $banner_id; if (strpos(self::getPrimaryRole($auth), $config['roles']['admin']) === false) { $params["UserID"] = $auth->getUserID(); } $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $AdCampaignBanner = $AdCampaignBannerFactory->get_row($params); if ($AdCampaignBanner === 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; }
private function process_demand_tag($config, $banner_request) { $banner_request_id = intval($banner_request["demand_banner_id"]); $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"; $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $params = array(); $params["AdCampaignBannerID"] = $banner_request_id; $AdCampaignBanner = $AdCampaignBannerFactory->get_row_cached($config, $params); if ($AdCampaignBanner != null) { $banner_impression_cost = $AdCampaignBanner->BidAmount; $spend_increase_gross = floatval($banner_impression_cost) / 1000; $spend_increase_net = $spend_increase_gross; if ($banner_request["sndprc"] !== null && !empty($banner_request["sndprc"])) { $decrypted_second_price = $this->decrypt_second_price($banner_request["sndprc"]); if (floatval($decrypted_second_price)) { $spend_increase_net = floatval($decrypted_second_price) / 1000; } } $AdCampaignBannerFactory->incrementAdCampaignBannerImpressionsCounterAndSpendCached($config, $buyer_id, $banner_request_id, $spend_increase_gross, $spend_increase_net); $AdCampaignBannerFactory->incrementBuySideHourlyImpressionsByTLDCached($config, $banner_request_id, $banner_request["tld"]); if (file_exists($cache_file)) { $cached_tag = file_get_contents($cache_file); if ($banner_request["dt"] == "in") { header("Content-type: application/javascript"); } echo $cached_tag; exit; } if ($banner_request["dt"] == "in") { header("Content-type: application/javascript"); $output = "document.write(" . json_encode($AdCampaignBanner->AdTag) . ");"; } else { $output = "<!DOCTYPE html>\n<html><head></head><body style=\"margin: 0px; padding: 0px;\">" . $AdCampaignBanner->AdTag . "\r\n\r\n</body></html>"; } $fh = fopen($cache_file, "w"); fwrite($fh, $output); fclose($fh); echo $output; exit; } echo "NGINAD"; exit; }
/** * * @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()); return $this->getResponse()->setContent(json_encode($data)); } $initialized = $this->initialize(); if ($initialized !== true) { return $initialized; } if (!$this->is_admin) { $data = array('success' => false, 'linked_ad_zones' => "", 'complete_zone_list' => array()); 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()); return $this->getResponse()->setContent(json_encode($data)); } $LinkedBannerToAdZoneFactory = \_factory\LinkedBannerToAdZone::get_instance(); $params = array(); $params["PublisherAdZoneID"] = $id; $linked_ad_banners = $LinkedBannerToAdZoneFactory->get($params); } $params = array(); $params["Height"] = $height; $params["Width"] = $width; $params["Active"] = 1; // $params["UserID"] = $this->EffectiveID; $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $AdCampaignBannerList = $AdCampaignBannerFactory->get($params); if ($AdCampaignBannerList === null) { $AdCampaignBannerList = array(); } $complete_banner_list = array(); foreach ($AdCampaignBannerList as $AdCampaignBanner) { $complete_banner_list[] = array("banner_id" => $AdCampaignBanner->AdCampaignBannerID, "ad_name" => $AdCampaignBanner->Name); } $linked_banner_list = array(); foreach ($linked_ad_banners as $linked_ad_banner) { $linked_banner_list[] = $linked_ad_banner->AdCampaignBannerID; } $data = array('success' => count($AdCampaignBannerList) > 0, 'linked_ad_banners' => implode(',', $linked_banner_list), 'complete_banner_list' => $complete_banner_list); return $this->getResponse()->setContent(json_encode($data)); }
/** * * @param unknown $id * @return unknown */ private function getBreadCrumbInfoFromAdCampaignBannerID($id) { $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $params = array(); $params["AdCampaignBannerID"] = $id; $AdCampaignBanner = $AdCampaignBannerFactory->get_row($params); $bread_crumb_info = $this->getBreadCrumbInfoFromCampaignID($AdCampaignBanner->AdCampaignID); $bread_crumb_info["BCBanner"] = $AdCampaignBanner->Name; return $bread_crumb_info; }
private function updateAdCampaignBannerTotals() { /* * update all compiled stats into the AdCampaignBanner table */ $BidTotalsRollupFactory = \_factory\BidTotalsRollup::get_instance(); $ImpressionAndSpendTotalsRollupFactory = \_factory\ImpressionAndSpendTotalsRollup::get_instance(); $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $params = array(); $params["Active"] = 1; $AdCampaignBannerList = $AdCampaignBannerFactory->get($params); foreach ($AdCampaignBannerList as $AdCampaignBanner) { $banner_id = $AdCampaignBanner->AdCampaignBannerID; $params = array(); $params["AdCampaignBannerID"] = $banner_id; $BidTotalsRollup = $BidTotalsRollupFactory->get_row($params); if ($BidTotalsRollup == null) { continue; } $ImpressionAndSpendTotalsRollup = $ImpressionAndSpendTotalsRollupFactory->get_row($params); if ($ImpressionAndSpendTotalsRollup == null) { continue; } $AdCampaignBanner->BidsCounter = $BidTotalsRollup->TotalBids; $AdCampaignBanner->ImpressionsCounter = $ImpressionAndSpendTotalsRollup->TotalImpressions; $AdCampaignBanner->CurrentSpend = $ImpressionAndSpendTotalsRollup->TotalSpendGross; $data = $AdCampaignBanner->getArrayCopy(); $AdCampaignBannerFactory->saveAdCampaignBannerFromDataArray($data); } /* * Update all AdCampaign tables with the new info from the AdCampaignBanner tables */ $AdCampaignFactory = \_factory\AdCampaign::get_instance(); $params = array(); $params["Active"] = 1; $AdCampaignList = $AdCampaignFactory->get($params); foreach ($AdCampaignList as $AdCampaign) { $ad_campaign_id = $AdCampaign->AdCampaignID; $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $params = array(); $params["AdCampaignID"] = $ad_campaign_id; $AdCampaignBannerList = $AdCampaignBannerFactory->get($params); $impressions_counter = 0; $current_spend = 0; foreach ($AdCampaignBannerList as $AdCampaignBanner) { $impressions_counter += $AdCampaignBanner->ImpressionsCounter; $current_spend += floatval($AdCampaignBanner->CurrentSpend); } $AdCampaign->ImpressionsCounter = $impressions_counter; $AdCampaign->CurrentSpend = $current_spend; $data = $AdCampaign->getArrayCopy(); $AdCampaignFactory->saveAdCampaignFromDataArray($data); } }
public static function cloneAdCampaignIntoAdCampaignPreview($ad_campaign_id, $auth, $update_data) { $return_val = array(); if ($ad_campaign_id === null) { return null; } $AdCampaignFactory = \_factory\AdCampaign::get_instance(); $params = array(); $params["AdCampaignID"] = $ad_campaign_id; $params["UserID"] = $auth->getEffectiveUserID(); $params["Active"] = 1; $AdCampaign = $AdCampaignFactory->get_row($params); if ($AdCampaign == null) { //die("Invalid AdCampaign ID"); $params["error"] = "Invalid AdCampaign ID"; return $params; } /* * Clone AdCampaign into AdCampaignPreview */ $AdCampaignPreviewFactory = \_factory\AdCampaignPreview::get_instance(); $AdCampaignPreview = new \model\AdCampaignPreview(); $AdCampaignPreview->AdCampaignID = $AdCampaign->AdCampaignID; $AdCampaignPreview->UserID = $AdCampaign->UserID; $AdCampaignPreview->Name = $AdCampaign->Name; $AdCampaignPreview->StartDate = $AdCampaign->StartDate; $AdCampaignPreview->EndDate = $AdCampaign->EndDate; $AdCampaignPreview->Customer = $AdCampaign->Customer; $AdCampaignPreview->CustomerID = $AdCampaign->CustomerID; $AdCampaignPreview->ImpressionsCounter = 0; $AdCampaignPreview->MaxImpressions = $AdCampaign->MaxImpressions; $AdCampaignPreview->CurrentSpend = 0; $AdCampaignPreview->MaxSpend = $AdCampaign->MaxSpend; $AdCampaignPreview->Active = 1; $AdCampaignPreview->DateCreated = date("Y-m-d H:i:s"); $AdCampaignPreview->DateUpdated = date("Y-m-d H:i:s"); $AdCampaignPreview->ChangeWentLive = 0; $AdCampaignPreviewID = $AdCampaignPreviewFactory->saveAdCampaignPreview($AdCampaignPreview); if ($update_data['type'] == 'AdCampaignID') { $return_val = array('AdCampaignPreviewID' => $AdCampaignPreviewID); } $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $params = array(); $params["AdCampaignID"] = $AdCampaign->AdCampaignID; $params["Active"] = 1; $AdCampaignBannerList = $AdCampaignBannerFactory->get($params); $AdCampaignBannerPreviewFactory = \_factory\AdCampaignBannerPreview::get_instance(); $AdCampaignBannerRestrictionsFactory = \_factory\AdCampaignBannerRestrictions::get_instance(); $AdCampaignBannerRestrictionsPreviewFactory = \_factory\AdCampaignBannerRestrictionsPreview::get_instance(); $LinkedBannerToAdZoneFactory = \_factory\LinkedBannerToAdZone::get_instance(); $LinkedBannerToAdZonePreviewFactory = \_factory\LinkedBannerToAdZonePreview::get_instance(); $AdCampaignBannerDomainExclusionFactory = \_factory\AdCampaignBannerDomainExclusion::get_instance(); $AdCampaignBannerDomainExclusionPreviewFactory = \_factory\AdCampaignBannerDomainExclusionPreview::get_instance(); $AdCampaignBannerDomainExclusiveInclusionFactory = \_factory\AdCampaignBannerDomainExclusiveInclusion::get_instance(); $AdCampaignBannerDomainExclusiveInclusionPreviewFactory = \_factory\AdCampaignBannerDomainExclusiveInclusionPreview::get_instance(); foreach ($AdCampaignBannerList as $AdCampaignBanner) { $banner_id = $AdCampaignBanner->AdCampaignBannerID; $BannerPreview = new \model\AdCampaignBannerPreview(); $BannerPreview->AdCampaignPreviewID = $AdCampaignPreviewID; $BannerPreview->AdCampaignBannerID = $AdCampaignBanner->AdCampaignBannerID; $BannerPreview->UserID = $AdCampaignBanner->UserID; $BannerPreview->Name = $AdCampaignBanner->Name; $BannerPreview->StartDate = $AdCampaignBanner->StartDate; $BannerPreview->EndDate = $AdCampaignBanner->EndDate; $BannerPreview->AdCampaignTypeID = $AdCampaignBanner->AdCampaignTypeID; $BannerPreview->IsMobile = $AdCampaignBanner->IsMobile; $BannerPreview->IABSize = $AdCampaignBanner->IABSize; $BannerPreview->Height = $AdCampaignBanner->Height; $BannerPreview->Width = $AdCampaignBanner->Width; $BannerPreview->Weight = $AdCampaignBanner->Weight; $BannerPreview->BidAmount = $AdCampaignBanner->BidAmount; $BannerPreview->AdTag = $AdCampaignBanner->AdTag; $BannerPreview->DeliveryType = $AdCampaignBanner->DeliveryType; $BannerPreview->LandingPageTLD = $AdCampaignBanner->LandingPageTLD; $BannerPreview->ImpressionsCounter = $AdCampaignBanner->ImpressionsCounter; $BannerPreview->BidsCounter = $AdCampaignBanner->BidsCounter; $BannerPreview->CurrentSpend = $AdCampaignBanner->CurrentSpend; $BannerPreview->Active = $AdCampaignBanner->Active; $BannerPreview->DateCreated = date("Y-m-d H:i:s"); $BannerPreview->DateUpdated = date("Y-m-d H:i:s"); $BannerPreview->ChangeWentLive = 0; $AdCampaignBannerPreviewID = $AdCampaignBannerPreviewFactory->saveAdCampaignBannerPreview($BannerPreview); if ($update_data['type'] == 'AdCampaignBannerID' && $update_data['id'] == $banner_id) { $return_val = array('AdCampaignBannerPreviewID' => $AdCampaignBannerPreviewID, 'AdCampaignPreviewID' => $AdCampaignPreviewID); } /* * BANNER RESTRICTIONS */ $params = array(); $params["AdCampaignBannerID"] = $banner_id; $AdCampaignBannerRestrictions = $AdCampaignBannerRestrictionsFactory->get_row($params); // may not be present if ($AdCampaignBannerRestrictions != null) { $BannerRestrictionsPreview = new \model\AdCampaignBannerRestrictionsPreview(); $BannerRestrictionsPreview->AdCampaignBannerPreviewID = $AdCampaignBannerPreviewID; $BannerRestrictionsPreview->GeoCountry = $AdCampaignBannerRestrictions->GeoCountry; $BannerRestrictionsPreview->GeoState = $AdCampaignBannerRestrictions->GeoState; $BannerRestrictionsPreview->GeoCity = $AdCampaignBannerRestrictions->GeoCity; $BannerRestrictionsPreview->AdTagType = $AdCampaignBannerRestrictions->AdTagType; $BannerRestrictionsPreview->AdPositionMinLeft = $AdCampaignBannerRestrictions->AdPositionMinLeft; $BannerRestrictionsPreview->AdPositionMaxLeft = $AdCampaignBannerRestrictions->AdPositionMaxLeft; $BannerRestrictionsPreview->AdPositionMinTop = $AdCampaignBannerRestrictions->AdPositionMinTop; $BannerRestrictionsPreview->AdPositionMaxTop = $AdCampaignBannerRestrictions->AdPositionMaxTop; $BannerRestrictionsPreview->FoldPos = $AdCampaignBannerRestrictions->FoldPos; $BannerRestrictionsPreview->Freq = $AdCampaignBannerRestrictions->Freq; $BannerRestrictionsPreview->Timezone = $AdCampaignBannerRestrictions->Timezone; $BannerRestrictionsPreview->InIframe = $AdCampaignBannerRestrictions->InIframe; $BannerRestrictionsPreview->InMultipleNestedIframes = $AdCampaignBannerRestrictions->InMultipleNestedIframes; $BannerRestrictionsPreview->MinScreenResolutionWidth = $AdCampaignBannerRestrictions->MinScreenResolutionWidth; $BannerRestrictionsPreview->MaxScreenResolutionWidth = $AdCampaignBannerRestrictions->MaxScreenResolutionWidth; $BannerRestrictionsPreview->MinScreenResolutionHeight = $AdCampaignBannerRestrictions->MinScreenResolutionHeight; $BannerRestrictionsPreview->MaxScreenResolutionHeight = $AdCampaignBannerRestrictions->MaxScreenResolutionHeight; $BannerRestrictionsPreview->HttpLanguage = $AdCampaignBannerRestrictions->HttpLanguage; $BannerRestrictionsPreview->BrowserUserAgentGrep = $AdCampaignBannerRestrictions->BrowserUserAgentGrep; $BannerRestrictionsPreview->CookieGrep = $AdCampaignBannerRestrictions->CookieGrep; $BannerRestrictionsPreview->PmpEnable = $AdCampaignBannerRestrictions->PmpEnable; $BannerRestrictionsPreview->Secure = $AdCampaignBannerRestrictions->Secure; $BannerRestrictionsPreview->Optout = $AdCampaignBannerRestrictions->Optout; $BannerRestrictionsPreview->Vertical = $AdCampaignBannerRestrictions->Vertical; $BannerRestrictionsPreview->DateCreated = date("Y-m-d H:i:s"); $BannerRestrictionsPreview->DateUpdated = date("Y-m-d H:i:s"); $AdCampaignBannerRestrictionsPreviewID = $AdCampaignBannerRestrictionsPreviewFactory->saveAdCampaignBannerRestrictionsPreview($BannerRestrictionsPreview); if ($update_data['type'] == 'AdCampaignBannerRestrictionsID' && $update_data['id'] == $AdCampaignBannerRestrictions->AdCampaignBannerRestrictionsID) { $return_val = array('AdCampaignBannerRestrictionsPreviewID' => $AdCampaignBannerRestrictionsPreviewID, 'AdCampaignBannerPreviewID' => $AdCampaignBannerPreviewID, 'AdCampaignPreviewID' => $AdCampaignPreviewID); } } /* * LINKED BANNER TO AD ZONE */ $params = array(); $params["AdCampaignBannerID"] = $banner_id; $LinkedBannerToAdZoneList = $LinkedBannerToAdZoneFactory->get($params); foreach ($LinkedBannerToAdZoneList as $LinkedBannerToAdZone) { $LinkedBannerToAdZonePreview = new \model\LinkedBannerToAdZonePreview(); $LinkedBannerToAdZonePreview->AdCampaignBannerPreviewID = $AdCampaignBannerPreviewID; $LinkedBannerToAdZonePreview->PublisherAdZoneID = $LinkedBannerToAdZone->PublisherAdZoneID; $LinkedBannerToAdZonePreview->Weight = $LinkedBannerToAdZone->Weight; $LinkedBannerToAdZonePreview->DateCreated = date("Y-m-d H:i:s"); $LinkedBannerToAdZonePreview->DateUpdated = date("Y-m-d H:i:s"); $LinkedBannerToAdZonePreviewFactory->saveLinkedBannerToAdZonePreview($LinkedBannerToAdZonePreview); } /* * DOMAIN EXCLUSIONS */ $params = array(); $params["AdCampaignBannerID"] = $banner_id; $AdCampaignBannerDomainExclusionList = $AdCampaignBannerDomainExclusionFactory->get($params); foreach ($AdCampaignBannerDomainExclusionList as $AdCampaignBannerDomainExclusion) { $BannerDomainExclusionPreview = new \model\AdCampaignBannerDomainExclusionPreview(); $BannerDomainExclusionPreview->AdCampaignBannerPreviewID = $AdCampaignBannerPreviewID; $BannerDomainExclusionPreview->ExclusionType = $AdCampaignBannerDomainExclusion->ExclusionType; $BannerDomainExclusionPreview->DomainName = $AdCampaignBannerDomainExclusion->DomainName; $BannerDomainExclusionPreview->DateCreated = date("Y-m-d H:i:s"); $BannerDomainExclusionPreview->DateUpdated = date("Y-m-d H:i:s"); $AdCampaignBannerDomainExclusionPreviewID = $AdCampaignBannerDomainExclusionPreviewFactory->saveAdCampaignBannerDomainExclusionPreview($BannerDomainExclusionPreview); if ($update_data['type'] == 'AdCampaignBannerDomainExclusionID' && $update_data['id'] == $AdCampaignBannerDomainExclusion->AdCampaignBannerDomainExclusionID) { $return_val = array('AdCampaignBannerDomainExclusionPreviewID' => $AdCampaignBannerDomainExclusionPreviewID, 'AdCampaignBannerPreviewID' => $AdCampaignBannerPreviewID, 'AdCampaignPreviewID' => $AdCampaignPreviewID); } } /* * DOMAIN EXCLUSIVE INCLUSIONS */ $params = array(); $params["AdCampaignBannerID"] = $banner_id; $AdCampaignBannerDomainExclusiveInclusionList = $AdCampaignBannerDomainExclusiveInclusionFactory->get($params); foreach ($AdCampaignBannerDomainExclusiveInclusionList as $AdCampaignBannerDomainExclusiveInclusion) { $BannerDomainExclusiveInclusionPreview = new \model\AdCampaignBannerDomainExclusiveInclusionPreview(); $BannerDomainExclusiveInclusionPreview->AdCampaignBannerPreviewID = $AdCampaignBannerPreviewID; $BannerDomainExclusiveInclusionPreview->InclusionType = $AdCampaignBannerDomainExclusiveInclusion->InclusionType; $BannerDomainExclusiveInclusionPreview->DomainName = $AdCampaignBannerDomainExclusiveInclusion->DomainName; $BannerDomainExclusiveInclusionPreview->DateCreated = date("Y-m-d H:i:s"); $BannerDomainExclusiveInclusionPreview->DateUpdated = date("Y-m-d H:i:s"); $AdCampaignBannerDomainExclusiveInclusionPreviewID = $AdCampaignBannerDomainExclusiveInclusionPreviewFactory->saveAdCampaignBannerDomainExclusiveInclusionPreview($BannerDomainExclusiveInclusionPreview); if ($update_data['type'] == 'AdCampaignBannerDomainExclusiveInclusionID' && $update_data['id'] == $AdCampaignBannerDomainExclusiveInclusion->AdCampaignBannerDomainExclusiveInclusionID) { $return_val = array('AdCampaignBannerDomainExclusiveInclusionPreviewID' => $AdCampaignBannerDomainExclusiveInclusionPreviewID, 'AdCampaignBannerPreviewID' => $AdCampaignBannerPreviewID, 'AdCampaignPreviewID' => $AdCampaignPreviewID); } } } return $return_val; }
public function deleteLinkedBannerToAdZoneByPublisherAdZoneID($publisher_ad_zone_id) { /* * First go through each banner and make sure that * each one no longer is selected for contract */ $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $LinkedBannerToAdZoneFactory = \_factory\LinkedBannerToAdZone::get_instance(); $params = array(); $params["PublisherAdZoneID"] = $publisher_ad_zone_id; $LinkedBannerToAdZoneList = $LinkedBannerToAdZoneFactory->get($params); if ($LinkedBannerToAdZoneList != null) { foreach ($LinkedBannerToAdZoneList as $LinkedBannerToAdZone) { $params = array(); $params["AdCampaignBannerID"] = $LinkedBannerToAdZone->AdCampaignBannerID; $LinkedBannerToAdZoneByAdCampaignBannerList = $LinkedBannerToAdZoneFactory->get($params); if (count($LinkedBannerToAdZoneByAdCampaignBannerList) <= 1) { $AdCampaignBannerFactory->updateAdCampaignBannerAdCampaignType($LinkedBannerToAdZone->AdCampaignBannerID, AD_TYPE_ANY_REMNANT); } } } $this->delete(array('PublisherAdZoneID' => $publisher_ad_zone_id)); }
public function tenMinuteMaintenanceAction() { /* * update all compiled stats into the AdCampaignBanner table */ $BidTotalsRollupFactory = \_factory\BidTotalsRollup::get_instance(); $ImpressionAndSpendTotalsRollupFactory = \_factory\ImpressionAndSpendTotalsRollup::get_instance(); $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $params = array(); $params["Active"] = 1; $AdCampaignBannerList = $AdCampaignBannerFactory->get($params); foreach ($AdCampaignBannerList as $AdCampaignBanner) { $banner_id = $AdCampaignBanner->AdCampaignBannerID; $params = array(); $params["AdCampaignBannerID"] = $banner_id; $BidTotalsRollup = $BidTotalsRollupFactory->get_row($params); if ($BidTotalsRollup == null) { continue; } $ImpressionAndSpendTotalsRollup = $ImpressionAndSpendTotalsRollupFactory->get_row($params); if ($ImpressionAndSpendTotalsRollup == null) { continue; } $AdCampaignBanner->BidsCounter = $BidTotalsRollup->TotalBids; $AdCampaignBanner->ImpressionsCounter = $ImpressionAndSpendTotalsRollup->TotalImpressions; $AdCampaignBanner->CurrentSpend = $ImpressionAndSpendTotalsRollup->TotalSpendGross; $data = $AdCampaignBanner->getArrayCopy(); $AdCampaignBannerFactory->saveAdCampaignBannerFromDataArray($data); } }
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(); $AdCampaignBanner_Match_List = array(); $AdCampaignFactory = \_factory\AdCampaign::get_instance(); $params = array(); $params["Active"] = 1; $AdCampaignList = $AdCampaignFactory->get_cached($this->config, $params); $this->current_time = time(); $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $AdCampaignBannerDomainExclusionFactory = \_factory\AdCampaignBannerDomainExclusion::get_instance(); $AdCampaignBannerExclusiveInclusionFactory = \_factory\AdCampaignBannerDomainExclusiveInclusion::get_instance(); $AdCampaignBannerRestrictionsFactory = \_factory\AdCampaignBannerRestrictions::get_instance(); $AdCampaignVideoRestrictionsFactory = \_factory\AdCampaignVideoRestrictions::get_instance(); // match ip against country code \buyrtb\workflows\tasklets\common\adcampaign\GetGeoCodeCountry::execute($logger, $this, $RtbBidRequest); // Check Ad Fraud if (\buyrtb\workflows\tasklets\common\thirdparty\CheckPublisherScore::execute($logger, $this, $RtbBidRequest) === false) { $no_bid_reason = NOBID_BAD_PUBLISHER; return $AdCampaignBanner_Match_List; } // Check Publisher Score if (\buyrtb\workflows\tasklets\common\thirdparty\CheckAdFraud::execute($logger, $this, $RtbBidRequest) === false) { $no_bid_reason = NOBID_AD_FRAUD; return $AdCampaignBanner_Match_List; } // Check Cookie Match if (\buyrtb\workflows\tasklets\common\thirdparty\CheckCookieMatch::execute($logger, $this, $RtbBidRequest) === false) { $no_bid_reason = NOBID_UNMATCHED_USER; return $AdCampaignBanner_Match_List; } foreach ($AdCampaignList as $AdCampaign) { // Check campaign date if (\buyrtb\workflows\tasklets\common\adcampaign\CheckCampaignDate::execute($logger, $this, $RtbBidRequest, $AdCampaign) === false) { continue; } // Check max spend if (\buyrtb\workflows\tasklets\common\adcampaign\CheckMaxSpend::execute($logger, $this, $RtbBidRequest, $AdCampaign) === false) { continue; } // Check max impressions if (\buyrtb\workflows\tasklets\common\adcampaign\CheckMaxImpressions::execute($logger, $this, $RtbBidRequest, $AdCampaign) === false) { continue; } // get markup rate for ad campaign $markup_rate = \util\Markup::getMarkupRate($AdCampaign, $this->config); // iterate the active banners for this ad campaign $params = array(); $params["AdCampaignID"] = $AdCampaign->AdCampaignID; $params["Active"] = 1; $AdCampaignBannerList = $AdCampaignBannerFactory->get_cached($this->config, $params); foreach ($RtbBidRequest->RtbBidRequestImpList as $RtbBidRequestImp) { foreach ($AdCampaignBannerList as $AdCampaignBanner) { if (empty($RtbBidRequestImp->RtbBidRequestVideo) && $AdCampaignBanner->ImpressionType == 'video' || !empty($RtbBidRequestImp->RtbBidRequestVideo) && $AdCampaignBanner->ImpressionType == 'banner') { continue; } /* * check the business rules against the banner */ // Check banner date if (\buyrtb\workflows\tasklets\common\adcampaignbanner\CheckBannerDate::execute($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $AdCampaignBanner) === false) { continue; } // Check to see if this AdCampaginBanner is associated to a contract zone. if (\buyrtb\workflows\tasklets\common\adcampaignbanner\CheckIsContract::execute($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $AdCampaignBanner) === false) { continue; } // Check banner domain exclusive inclusions if (\buyrtb\workflows\tasklets\common\adcampaignbanner\CheckExclusiveInclusion::execute($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $AdCampaignBanner, $AdCampaignBannerExclusiveInclusionFactory) === false) { continue; } // Check banner domain exclusions match if (\buyrtb\workflows\tasklets\common\adcampaignbanner\CheckDomainExclusion::execute($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $AdCampaignBanner, $AdCampaignBannerDomainExclusionFactory) === 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, $AdCampaignBanner, $AdCampaignVideoRestrictionsFactory); } else { // Display Banner Workflow - Default $DisplayWorkflow = new \buyrtb\workflows\DisplayWorkflow(); $passed_child_workflow = $DisplayWorkflow->process_business_rules_workflow($logger, $this, $RtbBidRequest, $RtbBidRequestImp, $AdCampaignBanner, $AdCampaignBannerRestrictionsFactory); } if ($passed_child_workflow === false) { continue; } /* * PASSED ALL THE BUSINESS RULES, ADD TO THE RESULTS */ $AdCampaignBannerFactory->incrementAdCampaignBannerBidsCounterCached($this->config, $rtb_seat_id, $AdCampaignBanner->AdCampaignBannerID); /* * Adjust the bid rate according to the markup */ $mark_down = floatval($AdCampaignBanner->BidAmount) * floatval($markup_rate); $adusted_amount = floatval($AdCampaignBanner->BidAmount) - floatval($mark_down); $AdCampaignBanner->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]; } $AdCampaignBanner_Match_List[(string) $AdCampaignBanner->UserID][] = array("currency" => $currency, "impid" => $RtbBidRequestImp->id, "AdCampaignBanner" => $AdCampaignBanner); } } } return $AdCampaignBanner_Match_List; }
public static function cloneAdCampaignIntoAdCampaignPreview($ad_campaign_id, $auth, $config, $mail_transport, $update_data) { $return_val = array(); if ($ad_campaign_id === null) { return null; } $AdCampaignFactory = \_factory\AdCampaign::get_instance(); $params = array(); $params["AdCampaignID"] = $ad_campaign_id; $params["UserID"] = $auth->getEffectiveUserID(); $params["Active"] = 1; $AdCampaign = $AdCampaignFactory->get_row($params); if ($AdCampaign == null) { //die("Invalid AdCampaign ID"); $params["error"] = "Invalid AdCampaign ID"; return $params; } /* * Clone AdCampaign into AdCampaignPreview */ $AdCampaignPreviewFactory = \_factory\AdCampaignPreview::get_instance(); $AdCampaignPreview = new \model\AdCampaignPreview(); $AdCampaignPreview->AdCampaignID = $AdCampaign->AdCampaignID; $AdCampaignPreview->UserID = $AdCampaign->UserID; $AdCampaignPreview->Name = $AdCampaign->Name; $AdCampaignPreview->StartDate = $AdCampaign->StartDate; $AdCampaignPreview->EndDate = $AdCampaign->EndDate; $AdCampaignPreview->Customer = $AdCampaign->Customer; $AdCampaignPreview->CustomerID = $AdCampaign->CustomerID; $AdCampaignPreview->ImpressionsCounter = 0; $AdCampaignPreview->MaxImpressions = $AdCampaign->MaxImpressions; $AdCampaignPreview->CurrentSpend = 0; $AdCampaignPreview->MaxSpend = $AdCampaign->MaxSpend; $AdCampaignPreview->Active = 1; $AdCampaignPreview->DateCreated = date("Y-m-d H:i:s"); $AdCampaignPreview->DateUpdated = date("Y-m-d H:i:s"); $AdCampaignPreview->ChangeWentLive = 0; $AdCampaignPreviewID = $AdCampaignPreviewFactory->saveAdCampaignPreview($AdCampaignPreview); if ($update_data['type'] == 'AdCampaignID') { $return_val = array('AdCampaignPreviewID' => $AdCampaignPreviewID); } $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $params = array(); $params["AdCampaignID"] = $AdCampaign->AdCampaignID; $params["Active"] = 1; $AdCampaignBannerList = $AdCampaignBannerFactory->get($params); $AdCampaignBannerPreviewFactory = \_factory\AdCampaignBannerPreview::get_instance(); $AdCampaignBannerRestrictionsFactory = \_factory\AdCampaignBannerRestrictions::get_instance(); $AdCampaignBannerRestrictionsPreviewFactory = \_factory\AdCampaignBannerRestrictionsPreview::get_instance(); $AdCampaignVideoRestrictionsFactory = \_factory\AdCampaignVideoRestrictions::get_instance(); $AdCampaignVideoRestrictionsPreviewFactory = \_factory\AdCampaignVideoRestrictionsPreview::get_instance(); $LinkedBannerToAdZoneFactory = \_factory\LinkedBannerToAdZone::get_instance(); $LinkedBannerToAdZonePreviewFactory = \_factory\LinkedBannerToAdZonePreview::get_instance(); $AdCampaignBannerDomainExclusionFactory = \_factory\AdCampaignBannerDomainExclusion::get_instance(); $AdCampaignBannerDomainExclusionPreviewFactory = \_factory\AdCampaignBannerDomainExclusionPreview::get_instance(); $AdCampaignBannerDomainExclusiveInclusionFactory = \_factory\AdCampaignBannerDomainExclusiveInclusion::get_instance(); $AdCampaignBannerDomainExclusiveInclusionPreviewFactory = \_factory\AdCampaignBannerDomainExclusiveInclusionPreview::get_instance(); foreach ($AdCampaignBannerList as $AdCampaignBanner) { $banner_id = $AdCampaignBanner->AdCampaignBannerID; $BannerPreview = new \model\AdCampaignBannerPreview(); $BannerPreview->AdCampaignPreviewID = $AdCampaignPreviewID; $BannerPreview->AdCampaignBannerID = $AdCampaignBanner->AdCampaignBannerID; $BannerPreview->UserID = $AdCampaignBanner->UserID; $BannerPreview->Name = $AdCampaignBanner->Name; $BannerPreview->ImpressionType = $AdCampaignBanner->ImpressionType; $BannerPreview->StartDate = $AdCampaignBanner->StartDate; $BannerPreview->EndDate = $AdCampaignBanner->EndDate; $BannerPreview->AdCampaignTypeID = $AdCampaignBanner->AdCampaignTypeID; $BannerPreview->IsMobile = $AdCampaignBanner->IsMobile; $BannerPreview->IABSize = $AdCampaignBanner->IABSize; $BannerPreview->Height = $AdCampaignBanner->Height; $BannerPreview->Width = $AdCampaignBanner->Width; $BannerPreview->Weight = $AdCampaignBanner->Weight; $BannerPreview->BidAmount = $AdCampaignBanner->BidAmount; $BannerPreview->AdTag = $AdCampaignBanner->AdTag; $BannerPreview->DeliveryType = $AdCampaignBanner->DeliveryType; $BannerPreview->LandingPageTLD = $AdCampaignBanner->LandingPageTLD; $BannerPreview->ImpressionsCounter = $AdCampaignBanner->ImpressionsCounter; $BannerPreview->BidsCounter = $AdCampaignBanner->BidsCounter; $BannerPreview->CurrentSpend = $AdCampaignBanner->CurrentSpend; $BannerPreview->Active = $AdCampaignBanner->Active; $BannerPreview->DateCreated = date("Y-m-d H:i:s"); $BannerPreview->DateUpdated = date("Y-m-d H:i:s"); $BannerPreview->ChangeWentLive = 0; $AdCampaignBannerPreviewID = $AdCampaignBannerPreviewFactory->saveAdCampaignBannerPreview($BannerPreview); if ($update_data['type'] == 'AdCampaignBannerID' && $update_data['id'] == $banner_id) { $return_val = array('AdCampaignBannerPreviewID' => $AdCampaignBannerPreviewID, 'AdCampaignPreviewID' => $AdCampaignPreviewID); } if ($BannerPreview->ImpressionType == 'video') { /* * VIDEO RESTRICTIONS */ $params = array(); $params["AdCampaignBannerID"] = $banner_id; $AdCampaignVideoRestrictions = $AdCampaignVideoRestrictionsFactory->get_row($params); if ($AdCampaignVideoRestrictions != null) { $VideoRestrictionsPreview = new \model\AdCampaignVideoRestrictionsPreview(); $VideoRestrictionsPreview->AdCampaignBannerPreviewID = $AdCampaignBannerPreviewID; $VideoRestrictionsPreview->GeoCountry = $AdCampaignVideoRestrictions->GeoCountry; $VideoRestrictionsPreview->GeoState = $AdCampaignVideoRestrictions->GeoState; $VideoRestrictionsPreview->GeoCity = $AdCampaignVideoRestrictions->GeoCity; $VideoRestrictionsPreview->MimesCommaSeparated = $AdCampaignVideoRestrictions->MimesCommaSeparated; $VideoRestrictionsPreview->MinDuration = $AdCampaignVideoRestrictions->MinDuration; $VideoRestrictionsPreview->MaxDuration = $AdCampaignVideoRestrictions->MaxDuration; $VideoRestrictionsPreview->ApisSupportedCommaSeparated = $AdCampaignVideoRestrictions->ApisSupportedCommaSeparated; $VideoRestrictionsPreview->ProtocolsCommaSeparated = $AdCampaignVideoRestrictions->ProtocolsCommaSeparated; $VideoRestrictionsPreview->DeliveryCommaSeparated = $AdCampaignVideoRestrictions->DeliveryCommaSeparated; $VideoRestrictionsPreview->PlaybackCommaSeparated = $AdCampaignVideoRestrictions->PlaybackCommaSeparated; $VideoRestrictionsPreview->StartDelay = $AdCampaignVideoRestrictions->StartDelay; $VideoRestrictionsPreview->Linearity = $AdCampaignVideoRestrictions->Linearity; $VideoRestrictionsPreview->FoldPos = $AdCampaignVideoRestrictions->FoldPos; $VideoRestrictionsPreview->MinHeight = $AdCampaignVideoRestrictions->MinHeight; $VideoRestrictionsPreview->MinWidth = $AdCampaignVideoRestrictions->MinWidth; $VideoRestrictionsPreview->PmpEnable = $AdCampaignVideoRestrictions->PmpEnable; $VideoRestrictionsPreview->Secure = $AdCampaignVideoRestrictions->Secure; $VideoRestrictionsPreview->Optout = $AdCampaignVideoRestrictions->Optout; $VideoRestrictionsPreview->Vertical = $AdCampaignVideoRestrictions->Vertical; $VideoRestrictionsPreview->DateCreated = date("Y-m-d H:i:s"); $VideoRestrictionsPreview->DateUpdated = date("Y-m-d H:i:s"); $AdCampaignVideoRestrictionsPreviewID = $AdCampaignVideoRestrictionsPreviewFactory->saveAdCampaignVideoRestrictionsPreview($VideoRestrictionsPreview); if ($update_data['type'] == 'AdCampaignVideoRestrictionsID' && $update_data['id'] == $AdCampaignVideoRestrictions->AdCampaignVideoRestrictionsID) { $return_val = array('AdCampaignVideoRestrictionsPreviewID' => $AdCampaignVideoRestrictionsPreviewID, 'AdCampaignBannerPreviewID' => $AdCampaignBannerPreviewID, 'AdCampaignPreviewID' => $AdCampaignPreviewID); } } } else { /* * BANNER RESTRICTIONS */ $params = array(); $params["AdCampaignBannerID"] = $banner_id; $AdCampaignBannerRestrictions = $AdCampaignBannerRestrictionsFactory->get_row($params); // may not be present if ($AdCampaignBannerRestrictions != null) { $BannerRestrictionsPreview = new \model\AdCampaignBannerRestrictionsPreview(); $BannerRestrictionsPreview->AdCampaignBannerPreviewID = $AdCampaignBannerPreviewID; $BannerRestrictionsPreview->GeoCountry = $AdCampaignBannerRestrictions->GeoCountry; $BannerRestrictionsPreview->GeoState = $AdCampaignBannerRestrictions->GeoState; $BannerRestrictionsPreview->GeoCity = $AdCampaignBannerRestrictions->GeoCity; $BannerRestrictionsPreview->AdTagType = $AdCampaignBannerRestrictions->AdTagType; $BannerRestrictionsPreview->AdPositionMinLeft = $AdCampaignBannerRestrictions->AdPositionMinLeft; $BannerRestrictionsPreview->AdPositionMaxLeft = $AdCampaignBannerRestrictions->AdPositionMaxLeft; $BannerRestrictionsPreview->AdPositionMinTop = $AdCampaignBannerRestrictions->AdPositionMinTop; $BannerRestrictionsPreview->AdPositionMaxTop = $AdCampaignBannerRestrictions->AdPositionMaxTop; $BannerRestrictionsPreview->FoldPos = $AdCampaignBannerRestrictions->FoldPos; $BannerRestrictionsPreview->Freq = $AdCampaignBannerRestrictions->Freq; $BannerRestrictionsPreview->Timezone = $AdCampaignBannerRestrictions->Timezone; $BannerRestrictionsPreview->InIframe = $AdCampaignBannerRestrictions->InIframe; $BannerRestrictionsPreview->InMultipleNestedIframes = $AdCampaignBannerRestrictions->InMultipleNestedIframes; $BannerRestrictionsPreview->MinScreenResolutionWidth = $AdCampaignBannerRestrictions->MinScreenResolutionWidth; $BannerRestrictionsPreview->MaxScreenResolutionWidth = $AdCampaignBannerRestrictions->MaxScreenResolutionWidth; $BannerRestrictionsPreview->MinScreenResolutionHeight = $AdCampaignBannerRestrictions->MinScreenResolutionHeight; $BannerRestrictionsPreview->MaxScreenResolutionHeight = $AdCampaignBannerRestrictions->MaxScreenResolutionHeight; $BannerRestrictionsPreview->HttpLanguage = $AdCampaignBannerRestrictions->HttpLanguage; $BannerRestrictionsPreview->BrowserUserAgentGrep = $AdCampaignBannerRestrictions->BrowserUserAgentGrep; $BannerRestrictionsPreview->CookieGrep = $AdCampaignBannerRestrictions->CookieGrep; $BannerRestrictionsPreview->PmpEnable = $AdCampaignBannerRestrictions->PmpEnable; $BannerRestrictionsPreview->Secure = $AdCampaignBannerRestrictions->Secure; $BannerRestrictionsPreview->Optout = $AdCampaignBannerRestrictions->Optout; $BannerRestrictionsPreview->Vertical = $AdCampaignBannerRestrictions->Vertical; $BannerRestrictionsPreview->DateCreated = date("Y-m-d H:i:s"); $BannerRestrictionsPreview->DateUpdated = date("Y-m-d H:i:s"); $AdCampaignBannerRestrictionsPreviewID = $AdCampaignBannerRestrictionsPreviewFactory->saveAdCampaignBannerRestrictionsPreview($BannerRestrictionsPreview); if ($update_data['type'] == 'AdCampaignBannerRestrictionsID' && $update_data['id'] == $AdCampaignBannerRestrictions->AdCampaignBannerRestrictionsID) { $return_val = array('AdCampaignBannerRestrictionsPreviewID' => $AdCampaignBannerRestrictionsPreviewID, 'AdCampaignBannerPreviewID' => $AdCampaignBannerPreviewID, 'AdCampaignPreviewID' => $AdCampaignPreviewID); } } } /* * LINKED BANNER TO AD ZONE */ $params = array(); $params["AdCampaignBannerID"] = $banner_id; $LinkedBannerToAdZoneList = $LinkedBannerToAdZoneFactory->get($params); foreach ($LinkedBannerToAdZoneList as $LinkedBannerToAdZone) { $LinkedBannerToAdZonePreview = new \model\LinkedBannerToAdZonePreview(); $LinkedBannerToAdZonePreview->AdCampaignBannerPreviewID = $AdCampaignBannerPreviewID; $LinkedBannerToAdZonePreview->PublisherAdZoneID = $LinkedBannerToAdZone->PublisherAdZoneID; $LinkedBannerToAdZonePreview->Weight = $LinkedBannerToAdZone->Weight; $LinkedBannerToAdZonePreview->DateCreated = date("Y-m-d H:i:s"); $LinkedBannerToAdZonePreview->DateUpdated = date("Y-m-d H:i:s"); $LinkedBannerToAdZonePreviewFactory->saveLinkedBannerToAdZonePreview($LinkedBannerToAdZonePreview); } /* * DOMAIN EXCLUSIONS */ $params = array(); $params["AdCampaignBannerID"] = $banner_id; $AdCampaignBannerDomainExclusionList = $AdCampaignBannerDomainExclusionFactory->get($params); foreach ($AdCampaignBannerDomainExclusionList as $AdCampaignBannerDomainExclusion) { $BannerDomainExclusionPreview = new \model\AdCampaignBannerDomainExclusionPreview(); $BannerDomainExclusionPreview->AdCampaignBannerPreviewID = $AdCampaignBannerPreviewID; $BannerDomainExclusionPreview->ExclusionType = $AdCampaignBannerDomainExclusion->ExclusionType; $BannerDomainExclusionPreview->DomainName = $AdCampaignBannerDomainExclusion->DomainName; $BannerDomainExclusionPreview->DateCreated = date("Y-m-d H:i:s"); $BannerDomainExclusionPreview->DateUpdated = date("Y-m-d H:i:s"); $AdCampaignBannerDomainExclusionPreviewID = $AdCampaignBannerDomainExclusionPreviewFactory->saveAdCampaignBannerDomainExclusionPreview($BannerDomainExclusionPreview); if ($update_data['type'] == 'AdCampaignBannerDomainExclusionID' && $update_data['id'] == $AdCampaignBannerDomainExclusion->AdCampaignBannerDomainExclusionID) { $return_val = array('AdCampaignBannerDomainExclusionPreviewID' => $AdCampaignBannerDomainExclusionPreviewID, 'AdCampaignBannerPreviewID' => $AdCampaignBannerPreviewID, 'AdCampaignPreviewID' => $AdCampaignPreviewID); } } /* * DOMAIN EXCLUSIVE INCLUSIONS */ $params = array(); $params["AdCampaignBannerID"] = $banner_id; $AdCampaignBannerDomainExclusiveInclusionList = $AdCampaignBannerDomainExclusiveInclusionFactory->get($params); foreach ($AdCampaignBannerDomainExclusiveInclusionList as $AdCampaignBannerDomainExclusiveInclusion) { $BannerDomainExclusiveInclusionPreview = new \model\AdCampaignBannerDomainExclusiveInclusionPreview(); $BannerDomainExclusiveInclusionPreview->AdCampaignBannerPreviewID = $AdCampaignBannerPreviewID; $BannerDomainExclusiveInclusionPreview->InclusionType = $AdCampaignBannerDomainExclusiveInclusion->InclusionType; $BannerDomainExclusiveInclusionPreview->DomainName = $AdCampaignBannerDomainExclusiveInclusion->DomainName; $BannerDomainExclusiveInclusionPreview->DateCreated = date("Y-m-d H:i:s"); $BannerDomainExclusiveInclusionPreview->DateUpdated = date("Y-m-d H:i:s"); $AdCampaignBannerDomainExclusiveInclusionPreviewID = $AdCampaignBannerDomainExclusiveInclusionPreviewFactory->saveAdCampaignBannerDomainExclusiveInclusionPreview($BannerDomainExclusiveInclusionPreview); if ($update_data['type'] == 'AdCampaignBannerDomainExclusiveInclusionID' && $update_data['id'] == $AdCampaignBannerDomainExclusiveInclusion->AdCampaignBannerDomainExclusiveInclusionID) { $return_val = array('AdCampaignBannerDomainExclusiveInclusionPreviewID' => $AdCampaignBannerDomainExclusiveInclusionPreviewID, 'AdCampaignBannerPreviewID' => $AdCampaignBannerPreviewID, 'AdCampaignPreviewID' => $AdCampaignPreviewID); } } } if (!$auth->getIsAdmin() && $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>AdCampaignID: </b></td><td>' . $AdCampaign->AdCampaignID . '</td></tr>'; $message = $message . '<tr><td><b>UserID: </b></td><td>' . $AdCampaign->UserID . '</td></tr>'; $message = $message . '<tr><td><b>Name: </b></td><td>' . $AdCampaign->Name . '</td></tr>'; $message = $message . '<tr><td><b>StartDate: </b></td><td>' . $AdCampaign->StartDate . '</td></tr>'; $message = $message . '<tr><td><b>EndDate: </b></td><td>' . $AdCampaign->EndDate . '</td></tr>'; $message = $message . '<tr><td><b>Customer: </b></td><td>' . $AdCampaign->Customer . '</td></tr>'; $message = $message . '<tr><td><b>CustomerID: </b></td><td>' . $AdCampaign->CustomerID . '</td></tr>'; $message = $message . '<tr><td><b>MaxImpressions: </b></td><td>' . $AdCampaign->MaxImpressions . '</td></tr>'; $message = $message . '<tr><td><b>MaxSpend: </b></td><td>' . $AdCampaign->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; }
public function process_business_rules_workflow($RtbBid) { $AdCampaignBanner_Match_List = array(); $AdCampaignFactory = \_factory\AdCampaign::get_instance(); $params = array(); $params["Active"] = 1; $AdCampaignList = $AdCampaignFactory->get_cached($RtbBid->config, $params); $current_time = time(); $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $AdCampaignBannerDomainExclusionFactory = \_factory\AdCampaignBannerDomainExclusion::get_instance(); $AdCampaignBannerExclusiveInclusionFactory = \_factory\AdCampaignBannerDomainExclusiveInclusion::get_instance(); $AdCampaignBannerRestrictionsFactory = \_factory\AdCampaignBannerRestrictions::get_instance(); // geocity light $geo_info = null; $maxmind = null; /* * use maxmind incrementally. The geo-Country pay DB we have is only 1 meg * if we need city/state ok, but only load it if absolutely necessary */ if ($RtbBid->bid_request_device_ip !== null && $RtbBid->bid_request_geo === null) { $maxmind = new \geoip\maxmind(); $RtbBid->bid_request_geo["country"] = $maxmind->get_geo_code_country($RtbBid->bid_request_device_ip); } foreach ($AdCampaignList as $AdCampaign) { /* * Check campaign date */ $campaign_startdate = strtotime($AdCampaign->StartDate); $campaign_enddate = strtotime($AdCampaign->EndDate); if ($current_time < $campaign_startdate || $current_time > $campaign_enddate) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check campaign date :: EXPECTED: " . $AdCampaign->StartDate . "->" . $AdCampaign->EndDate . " GOT: " . date('m/d/Y', $current_time); } continue; } /* * Check max spend */ if ($AdCampaign->CurrentSpend >= $AdCampaign->MaxSpend) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Max Campaign Spend Exceeded"; } continue; } /* * Check max impressions */ if ($AdCampaign->ImpressionsCounter >= $AdCampaign->MaxImpressions) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Max Campaign Impressions Exceeded"; } continue; } $markup_rate = \util\Markup::getMarkupRate($AdCampaign, $RtbBid->config); $params = array(); $params["AdCampaignID"] = $AdCampaign->AdCampaignID; $params["Active"] = 1; $AdCampaignBannerList = $AdCampaignBannerFactory->get_cached($RtbBid->config, $params); foreach ($AdCampaignBannerList as $AdCampaignBanner) { /* * check the rules against the banner */ /* * Check banner date */ $banner_startdate = strtotime($AdCampaignBanner->StartDate); $banner_enddate = strtotime($AdCampaignBanner->EndDate); if ($current_time < $banner_startdate || $current_time > $banner_enddate) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner date :: EXPECTED: " . $AdCampaignBanner->StartDate . "->" . $AdCampaignBanner->EndDate . " GOT: " . date('m/d/Y', $current_time); } continue; } /* * Check is mobile web, phone, tablet, native iOS or native Android */ if ($RtbBid->bid_request_mobile != $AdCampaignBanner->IsMobile) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check is mobile web :: EXPECTED: " . $AdCampaignBanner->IsMobile . " GOT: " . $RtbBid->bid_request_mobile; } continue; } /* * Check banner height and width match */ if ($AdCampaignBanner->Height != $RtbBid->bid_request_imp_banner_h || $AdCampaignBanner->Width != $RtbBid->bid_request_imp_banner_w) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner height match :: EXPECTED: " . $AdCampaignBanner->Height . " GOT: " . $RtbBid->bid_request_imp_banner_h; \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner width match :: EXPECTED: " . $AdCampaignBanner->Width . " GOT: " . $RtbBid->bid_request_imp_banner_w; } continue; } /* * Check to see if this AdCampaginBanner is associated to a * contract zone. Contract bound banners are not eligible for * RTB bidding. */ if ($AdCampaignBanner->AdCampaignTypeID == AD_TYPE_CONTRACT) { continue; } elseif ($AdCampaignBanner->AdCampaignTypeID == AD_TYPE_IN_HOUSE_REMNANT && $RtbBid->is_local_request == false) { continue; } elseif ($AdCampaignBanner->AdCampaignTypeID == AD_TYPE_RTB_REMNANT && $RtbBid->is_local_request == true) { continue; } /* * Check banner domain exclusive inclusions * This will narrow the publisher pool down so we * only working with the publishers that the client wants * to advertise on. */ $params = array(); $params["AdCampaignBannerID"] = $AdCampaignBanner->AdCampaignBannerID; $AdCampaignBannerExclusiveInclusionList = $AdCampaignBannerExclusiveInclusionFactory->get_cached($RtbBid->config, $params); foreach ($AdCampaignBannerExclusiveInclusionList as $AdCampaignBannerExclusiveInclusion) { $domain_to_match = strtolower($AdCampaignBannerExclusiveInclusion->DomainName); if ($AdCampaignBannerExclusiveInclusion->InclusionType == "url") { if (strpos(strtolower($RtbBid->bid_request_site_page), $domain_to_match) === false && strpos(strtolower($RtbBid->bid_request_site_domain), $domain_to_match) === false) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner page url, site exclusive inclusions do not match :: EXPECTED: " . $domain_to_match . " GOT: bid_request_site_page: " . $RtbBid->bid_request_site_page . ", bid_request_site_domain: " . $RtbBid->bid_request_site_domain; } // goto next in the larger enclosing foreach loop continue 2; } } elseif ($RtbBid->bid_request_refurl && $AdCampaignBannerExclusiveInclusion->InclusionType == "referrer") { if (strpos(strtolower($RtbBid->bid_request_refurl), $domain_to_match) === false) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner page referrer url, site exclusive inclusions do not match :: EXPECTED: " . $domain_to_match . " GOT: " . $RtbBid->bid_request_refurl; } continue 2; } } } /* * Check banner domain exclusions match */ $params = array(); $params["AdCampaignBannerID"] = $AdCampaignBanner->AdCampaignBannerID; $AdCampaignBannerDomainExclusionList = $AdCampaignBannerDomainExclusionFactory->get_cached($RtbBid->config, $params); foreach ($AdCampaignBannerDomainExclusionList as $AdCampaignBannerDomainExclusion) { $domain_to_match = strtolower($AdCampaignBannerDomainExclusion->DomainName); if ($AdCampaignBannerDomainExclusion->ExclusionType == "url") { if (strpos(strtolower($RtbBid->bid_request_site_page), $domain_to_match) !== false || strpos(strtolower($RtbBid->bid_request_site_domain), $domain_to_match) !== false) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner page url, site exclusions match :: EXPECTED: " . $domain_to_match . " GOT: bid_request_site_page: " . $RtbBid->bid_request_site_page . ", bid_request_site_domain: " . $RtbBid->bid_request_site_domain; } // goto next in the larger enclosing foreach loop continue 2; } } elseif ($RtbBid->bid_request_refurl && $AdCampaignBannerDomainExclusion->ExclusionType == "referrer") { if (strpos(strtolower($RtbBid->bid_request_refurl), $domain_to_match) !== false) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner page referrer url, site exclusions match :: EXPECTED: " . $domain_to_match . " GOT: " . $RtbBid->bid_request_refurl; } continue 2; } } } /* * Check banner restrictions (optional fields) */ $params = array(); $params["AdCampaignBannerID"] = $AdCampaignBanner->AdCampaignBannerID; $AdCampaignBannerRestrictions = $AdCampaignBannerRestrictionsFactory->get_row_cached($RtbBid->config, $params); /* * Check banner restrictions */ if ($AdCampaignBannerRestrictions !== null) { /* * Check banner position on page */ /* * Banner position check not supported by OpenRTB 2.1 */ /* * Check banner system fold position (sFoldPos), I don't think we can trust the user fold position (uFoldPos) */ if ($AdCampaignBannerRestrictions->FoldPos !== null && $RtbBid->bid_request_sFoldPos !== null && $AdCampaignBannerRestrictions->FoldPos != $RtbBid->bid_request_sFoldPos) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner system fold position :: EXPECTED: " . $AdCampaignBannerRestrictions->FoldPos . " GOT: " . $RtbBid->bid_request_sFoldPos; } continue; } /* * Frequency capping not supported by OpenRTB 2.1 */ /* * Time Zone not supported by OpenRTB 2.1 */ /* * IFrame detection not supported by OpenRTB 2.1 */ /* * Multiple nested IFrames detection not supported by OpenRTB 2.1 */ /* * Client's screen resolution detection not supported by OpenRTB 2.1 */ /* * Check browser language */ if ($AdCampaignBannerRestrictions->HttpLanguage !== null && $RtbBid->bid_request_device_language !== null) { $has_http_language = false; $request_language_list = explode(";", strtolower($RtbBid->bid_request_device_language)); $http_language_list = explode(";", strtolower($AdCampaignBannerRestrictions->HttpLanguage)); foreach ($http_language_list as $http_language) { if (in_array(trim($http_language), $request_language_list)) { $has_http_language = true; break; } } if ($has_http_language === false) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check browser language :: EXPECTED: " . $AdCampaignBannerRestrictions->HttpLanguage . " GOT: " . $RtbBid->bid_request_device_language; } continue; } } /* * Check browser user-agent for string */ if ($AdCampaignBannerRestrictions->BrowserUserAgentGrep !== null && $RtbBid->bid_request_device_ua !== null) { if (strpos(strtolower($RtbBid->bid_request_device_ua), strtolower($AdCampaignBannerRestrictions->BrowserUserAgentGrep)) === false) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check browser user-agent for string :: EXPECTED: " . $AdCampaignBannerRestrictions->BrowserUserAgentGrep . " GOT: " . $RtbBid->bid_request_device_ua; } continue; } } /* * Check browser cookie for string detection not supported by OpenRTB 2.1 */ /* * Check banner for PMP Enable */ if ($AdCampaignBannerRestrictions->PmpEnable !== null && $RtbBid->bid_request_imp_pmp !== null && $RtbBid->bid_request_imp_pmp != $AdCampaignBannerRestrictions->PmpEnable) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner for PMP Enable :: EXPECTED: " . $AdCampaignBannerRestrictions->PmpEnable . " GOT: " . $RtbBid->bid_request_imp_pmp; } continue; } /* * Check banner for https:// secure */ if ($AdCampaignBannerRestrictions->Secure !== null && $RtbBid->bid_request_secure !== null && $RtbBid->bid_request_secure != $AdCampaignBannerRestrictions->Secure) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner for https:// secure :: EXPECTED: " . $AdCampaignBannerRestrictions->Secure . " GOT: " . $RtbBid->bid_request_secure; } continue; } /* * Check user for Coppa opt out status */ if ($AdCampaignBannerRestrictions->Optout !== null && $RtbBid->bid_request_regs_coppa !== null && $RtbBid->bid_request_regs_coppa != $AdCampaignBannerRestrictions->Optout) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check user for Coppa opt out status :: EXPECTED: " . $AdCampaignBannerRestrictions->Optout . " GOT: " . $RtbBid->bid_request_regs_coppa; } continue; } /* * Check banner for it being in the right vertical */ if ($AdCampaignBannerRestrictions->Vertical !== null && $RtbBid->bid_request_site_publisher_cat !== null) { $has_vertical = false; $vertical_list = explode(",", $AdCampaignBannerRestrictions->Vertical); foreach ($vertical_list as $vertical_id) { if ($RtbBid->bid_request_site_publisher_cat == $vertical_id) { $has_vertical = true; break; } } if ($has_vertical === false) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner for it being in the right vertical :: EXPECTED: " . $AdCampaignBannerRestrictions->Vertical . " GOT: " . $RtbBid->bid_request_site_publisher_cat; } continue; } } /* * Check banner geography */ if ($RtbBid->bid_request_geo !== null) { if ($AdCampaignBannerRestrictions->GeoCountry !== null && isset($RtbBid->bid_request_geo["country"])) { $has_country = false; $country = strtolower($RtbBid->bid_request_geo["country"]); $geo_country_list = explode(",", $AdCampaignBannerRestrictions->GeoCountry); foreach ($geo_country_list as $geo_country) { if (strtolower($geo_country) == $country) { $has_country = true; break; } } if ($has_country === false) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner geography : Country :: EXPECTED: " . strtolower($AdCampaignBannerRestrictions->GeoCountry) . " GOT: " . $country; } continue; } else { /* * STATE CHECK */ if ($geo_info === null && $AdCampaignBannerRestrictions->GeoState !== null && !isset($RtbBid->bid_request_geo["state"])) { if ($maxmind === null) { $maxmind = new \geoip\maxmind(); } $geo_info = $maxmind->get_geo_code($RtbBid->bid_request_device_ip); if ($geo_info !== null) { $RtbBid->bid_request_geo["state"] = $geo_info["state"]; $RtbBid->bid_request_geo["city"] = $geo_info["city"]; } } if ($AdCampaignBannerRestrictions->GeoState !== null && isset($RtbBid->bid_request_geo["state"])) { if (!isset($RtbBid->bid_request_geo["state"]) && $geo_info === null) { $geo_info = $maxmind->get_geo_code($this->bid_request_device_ip); $this->bid_request_geo["state"] = $geo_info["state"]; } $has_state = false; $state = strtolower($RtbBid->bid_request_geo["state"]); $geo_state_list = explode(",", $AdCampaignBannerRestrictions->GeoState); foreach ($geo_state_list as $geo_state) { if (strtolower($geo_state) == $state) { $has_state = true; break; } } if ($has_state === false) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner geography : State :: EXPECTED: " . strtolower($AdCampaignBannerRestrictions->GeoState) . " GOT: " . $state; } continue; } else { /* * CITY CHECK */ if ($geo_info === null && $AdCampaignBannerRestrictions->GeoCity !== null && !isset($RtbBid->bid_request_geo["city"])) { if ($maxmind === null) { $maxmind = new \geoip\maxmind(); } $geo_info = $maxmind->get_geo_code($RtbBid->bid_request_device_ip); $RtbBid->bid_request_geo["state"] = $geo_info["state"]; $RtbBid->bid_request_geo["city"] = $geo_info["city"]; } if ($AdCampaignBannerRestrictions->GeoCity !== null && isset($RtbBid->bid_request_geo["city"])) { $has_city = false; $city = strtolower($RtbBid->bid_request_geo["city"]); $geo_city_list = explode(",", $AdCampaignBannerRestrictions->GeoCity); foreach ($geo_city_list as $geo_city) { if (strtolower($geo_city) == $city) { $has_city = true; break; } } if ($has_city === false) { if (\rtbbuyv22\RtbBuyV22Logger::get_instance()->setting_log === true) { \rtbbuyv22\RtbBuyV22Logger::get_instance()->log[] = "Failed: " . "Check banner geography : City :: EXPECTED: " . strtolower($AdCampaignBannerRestrictions->GeoCity) . " GOT: " . $city; } continue; } } } } } } } } /* * PASSED ALL THE BUSINESS RULES, ADD TO THE RESULTS */ $AdCampaignBannerFactory->incrementAdCampaignBannerBidsCounterCached($RtbBid->config, $RtbBid->rtb_seat_id, $AdCampaignBanner->AdCampaignBannerID); /* * Adjust the bid rate according to the markup */ $mark_down = floatval($AdCampaignBanner->BidAmount) * floatval($markup_rate); $adusted_amount = floatval($AdCampaignBanner->BidAmount) - floatval($mark_down); $AdCampaignBanner->BidAmount = sprintf("%1.4f", $adusted_amount); $AdCampaignBanner_Match_List[] = $AdCampaignBanner; } } return $AdCampaignBanner_Match_List; }
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"; $AdCampaignBannerFactory = \_factory\AdCampaignBanner::get_instance(); $params = array(); $params["AdCampaignBannerID"] = $banner_request_id; $AdCampaignBanner = $AdCampaignBannerFactory->get_row_cached($config, $params); if ($AdCampaignBanner != null) { $banner_impression_cost = $AdCampaignBanner->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($AdCampaignBanner->BidAmount) - floatval($mark_down); */ $AdCampaignFactory = \_factory\AdCampaign::get_instance(); $params = array(); $params["AdCampaignID"] = $AdCampaignBanner->AdCampaignID; $AdCampaign = $AdCampaignFactory->get_row_cached($config, $params); $markup_rate = \util\Markup::getMarkupRate($AdCampaign, $config); $mark_down = floatval($spend_increase_gross) * floatval($markup_rate); $spend_increase_net = floatval($spend_increase_gross) - floatval($mark_down); } $AdCampaignBannerFactory->incrementAdCampaignBannerImpressionsCounterAndSpendCached($config, $buyer_id, $banner_request_id, $spend_increase_gross, $spend_increase_net); $AdCampaignBannerFactory->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 = $AdCampaignBanner->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($AdCampaignBanner->AdTag) . ");"; } else { $output = "<!DOCTYPE html>\n<html><head></head><body style=\"margin: 0px; padding: 0px;\">" . $AdCampaignBanner->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; }