Exemple #1
0
 /**
  * 
  * @return \Zend\View\Model\ViewModel
  */
 public function editlineitemAction()
 {
     $id = $this->getEvent()->getRouteMatch()->getParam('param1');
     if ($id == null) {
         die("Invalid Banner ID");
     }
     $initialized = $this->initialize();
     if ($initialized !== true) {
         return $initialized;
     }
     $is_preview = $this->getRequest()->getQuery('ispreview');
     // verify
     if ($is_preview == "true") {
         $is_preview = \transformation\TransformPreview::doesPreviewBannerExist($id, $this->auth);
     }
     $banner_preview_id = "";
     if ($is_preview == true) {
         // ACL PREVIEW PERMISSIONS CHECK
         transformation\CheckPermissions::checkEditPermissionInsertionOrderLineItemPreview($id, $this->auth, $this->config_handle);
         $InsertionOrderLineItemVideoRestrictionsPreviewFactory = \_factory\InsertionOrderLineItemVideoRestrictionsPreview::get_instance();
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $id;
         $InsertionOrderLineItemVideoRestrictions = $InsertionOrderLineItemVideoRestrictionsPreviewFactory->get_row($params);
         $InsertionOrderLineItemPreviewFactory = \_factory\InsertionOrderLineItemPreview::get_instance();
         $params = array();
         $params["Active"] = 1;
         $params["InsertionOrderLineItemPreviewID"] = $id;
         $banner_preview_id = $id;
         $InsertionOrderLineItem = $InsertionOrderLineItemPreviewFactory->get_row($params);
         $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItemPreview::get_instance();
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemList = $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory->get($params);
         $SspRtbChannelToInsertionOrderLineItemPreviewFactory = \_factory\SspRtbChannelToInsertionOrderLineItemPreview::get_instance();
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
         $SspRtbChannelToInsertionOrderLineItemList = $SspRtbChannelToInsertionOrderLineItemPreviewFactory->get($params);
     } else {
         // ACL PERMISSIONS CHECK
         transformation\CheckPermissions::checkEditPermissionInsertionOrderLineItem($id, $this->auth, $this->config_handle);
         $InsertionOrderLineItemVideoRestrictionsFactory = \_factory\InsertionOrderLineItemVideoRestrictions::get_instance();
         $params = array();
         $params["InsertionOrderLineItemID"] = $id;
         $InsertionOrderLineItemVideoRestrictions = $InsertionOrderLineItemVideoRestrictionsFactory->get_row($params);
         $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
         $params = array();
         $params["Active"] = 1;
         $params["InsertionOrderLineItemID"] = $id;
         $InsertionOrderLineItem = $InsertionOrderLineItemFactory->get_row($params);
         $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItem::get_instance();
         $params = array();
         $params["InsertionOrderLineItemID"] = $id;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemList = $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory->get($params);
         $SspRtbChannelToInsertionOrderLineItemFactory = \_factory\SspRtbChannelToInsertionOrderLineItem::get_instance();
         $params = array();
         $params["InsertionOrderLineItemID"] = $id;
         $SspRtbChannelToInsertionOrderLineItemList = $SspRtbChannelToInsertionOrderLineItemFactory->get($params);
     }
     if ($InsertionOrderLineItem == null) {
         die("Invalid {$InsertionOrderLineItem} ID");
     }
     $campaignid = isset($InsertionOrderLineItem->InsertionOrderID) ? $InsertionOrderLineItem->InsertionOrderID : "";
     $bannerid = isset($InsertionOrderLineItem->InsertionOrderLineItemID) ? $InsertionOrderLineItem->InsertionOrderLineItemID : "";
     $campaignpreviewid = isset($InsertionOrderLineItem->InsertionOrderPreviewID) ? $InsertionOrderLineItem->InsertionOrderPreviewID : "";
     $bannerpreviewid = isset($InsertionOrderLineItem->InsertionOrderLineItemPreviewID) ? $InsertionOrderLineItem->InsertionOrderLineItemPreviewID : "";
     $bannername = $InsertionOrderLineItem->Name;
     $startdate = date('m/d/Y', strtotime($InsertionOrderLineItem->StartDate));
     $enddate = date('m/d/Y', strtotime($InsertionOrderLineItem->EndDate));
     $current_mobile = $InsertionOrderLineItem->IsMobile;
     if ($InsertionOrderLineItem->IsMobile == 2) {
         $size_list = \util\BannerOptions::$iab_mobile_tablet_banner_options;
     } elseif ($InsertionOrderLineItem->IsMobile > 0) {
         $size_list = \util\BannerOptions::$iab_mobile_phone_banner_options;
     } else {
         $size_list = \util\BannerOptions::$iab_banner_options;
     }
     $height = $InsertionOrderLineItem->Height;
     $width = $InsertionOrderLineItem->Width;
     $weight = $InsertionOrderLineItem->Weight;
     $bidamount = $InsertionOrderLineItem->BidAmount;
     $adtag = $InsertionOrderLineItem->AdTag;
     $landingpagetld = $InsertionOrderLineItem->LandingPageTLD;
     $current_iabsize = $InsertionOrderLineItem->IABSize;
     $ImpressionType = $InsertionOrderLineItem->ImpressionType;
     if ($ImpressionType == 'image') {
         preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $adtag, $matches);
         if (!isset($matches[1])) {
             die("Required Field: <img src= attribute was missing");
         }
         preg_match('/href=[\'"]?([^\\s\\>\'"]*)[\'"\\>]/', $adtag, $matches);
         if (!isset($matches[1])) {
             die("Required Field: <a href= attribute was missing");
         }
     }
     $current_mimes = array();
     $current_apis_supported = array();
     $current_protocols = array();
     $current_delivery_methods = array();
     $current_playback_methods = array();
     $current_start_delay = "";
     $current_linearity = "";
     $impression_type = "banner";
     if ($InsertionOrderLineItemVideoRestrictions != null) {
         $current_mimes_raw = $InsertionOrderLineItemVideoRestrictions->MimesCommaSeparated;
         $current_apis_supported_raw = $InsertionOrderLineItemVideoRestrictions->ApisSupportedCommaSeparated;
         $current_protocols_raw = $InsertionOrderLineItemVideoRestrictions->ProtocolsCommaSeparated;
         $current_delivery_methods_raw = $InsertionOrderLineItemVideoRestrictions->DeliveryCommaSeparated;
         $current_playback_methods_raw = $InsertionOrderLineItemVideoRestrictions->PlaybackCommaSeparated;
         $current_start_delay = $InsertionOrderLineItemVideoRestrictions->StartDelay;
         $current_linearity = $InsertionOrderLineItemVideoRestrictions->Linearity;
         $current_mimes = array();
         if ($current_mimes_raw) {
             $current_mimes = explode(',', $current_mimes_raw);
         }
         $current_apis_supported = array();
         if ($current_apis_supported_raw) {
             $current_apis_supported = explode(',', $current_apis_supported_raw);
         }
         $current_protocols = array();
         if ($current_protocols_raw) {
             $current_protocols = explode(',', $current_protocols_raw);
         }
         $current_delivery_methods = array();
         if ($current_delivery_methods_raw) {
             $current_delivery_methods = explode(',', $current_delivery_methods_raw);
         }
         $current_playback_methods = array();
         if ($current_playback_methods_raw) {
             $current_playback_methods = explode(',', $current_playback_methods_raw);
         }
     }
     $is_vast_url = \util\ParseHelper::isVastURL($adtag);
     $vast_type = $is_vast_url == true ? "url" : "xml";
     $imageurl = "";
     $landingpageurl = "";
     if ($ImpressionType == "image") {
         preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $adtag, $matches);
         if (isset($matches[1])) {
             $imageurl = $matches[1];
         }
         preg_match('/href=[\'"]?([^\\s\\>\'"]*)[\'"\\>]/', $adtag, $matches);
         if (isset($matches[1])) {
             $landingpageurl = $matches[1];
         }
     }
     return new ViewModel(array('imageurl' => $imageurl, 'landingpageurl' => $landingpageurl, 'campaignid' => $campaignid, 'bannerid' => $bannerid, 'pmp_deal_list' => $PmpDealPublisherWebsiteToInsertionOrderLineItemList, 'ssp_channel_list' => $SspRtbChannelToInsertionOrderLineItemList, 'campaignpreviewid' => $campaignpreviewid, 'bannerpreviewid' => $bannerpreviewid, 'ispreview' => $is_preview == true ? '1' : '0', 'bannername' => $bannername, 'startdate' => $startdate, 'enddate' => $enddate, 'current_mobile' => $current_mobile, 'mobile_options' => \util\BannerOptions::$mobile_options, 'size_list' => $size_list, 'height' => $height, 'width' => $width, 'weight' => $weight, 'bidamount' => $bidamount, 'adtag' => $adtag, 'vast_type' => $vast_type, 'landingpagetld' => $landingpagetld, 'current_iabsize' => $current_iabsize, 'bread_crumb_info' => $this->getBreadCrumbInfoFromBanner($bannerid, $bannerpreviewid, $is_preview), 'user_id_list' => $this->user_id_list_demand_customer, 'center_class' => 'centerj', 'user_identity' => $this->identity(), 'true_user_name' => $this->auth->getUserName(), 'header_title' => 'Edit Insertion Order', 'is_super_admin' => $this->is_super_admin, 'effective_id' => $this->auth->getEffectiveIdentityID(), 'impersonate_id' => $this->ImpersonateID, 'ImpressionType' => $ImpressionType, 'linearity' => \util\BannerOptions::$linearity, 'start_delay' => \util\BannerOptions::$start_delay, 'playback_methods' => \util\BannerOptions::$playback_methods, 'delivery_methods' => \util\BannerOptions::$delivery_methods, 'apis_supported' => \util\BannerOptions::$apis_supported, 'protocols' => \util\BannerOptions::$protocols, 'mimes' => \util\BannerOptions::$mimes, 'current_mimes' => $current_mimes, 'current_apis_supported' => $current_apis_supported, 'current_protocols' => $current_protocols, 'current_delivery_methods' => $current_delivery_methods, 'current_playback_methods' => $current_playback_methods, 'current_start_delay' => $current_start_delay, 'current_linearity' => $current_linearity, 'impression_type' => $impression_type));
 }
Exemple #2
0
 private function process_publisher_tag($config, $banner_request)
 {
     $PublisherAdZoneFactory = \_factory\PublisherAdZone::get_instance();
     $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance();
     $params = array();
     $params["AdStatus"] = 1;
     $params["PublisherAdZoneID"] = $banner_request["publisher_banner_id"];
     $PublisherAdZone = $PublisherAdZoneFactory->get_row_cached($config, $params);
     if ($PublisherAdZone == null) {
         return;
     }
     $params = array();
     $params["PublisherWebsiteID"] = $PublisherAdZone->PublisherWebsiteID;
     $PublisherWebsite = $PublisherWebsiteFactory->get_row_cached($config, $params);
     if ($PublisherWebsite == null) {
         return;
     }
     /*
      * Does this publisher's website belong to a Domain Admin
      * running a private exchange?
      * 
      * If it does, did the domain admin enable this website's inventory
      * to be available on the platform connection feature to other
      * domain admins running their own private exchanges?
      * 
      * Did he enable platform exchange on the website edit page
      * to enable this publisher's website inventory to be sent to DSPs?
      */
     $banner_request["PrivateExchangeOnly"] = $PublisherWebsite->VisibilityTypeID == 2 ? true : false;
     $banner_request["ImpressionType"] = $PublisherAdZone->ImpressionType;
     $banner_request = $this->build_request_array($config, $banner_request);
     $RtbSellV22Bid = new \rtbsellv22\RtbSellV22Bid();
     $RtbSellV22Bid->create_rtb_request_from_publisher_display_impression($config, $banner_request);
     /* 
      * We build the OpenRTB request destined for demand
      * that is local to this NginAd instance
      */
     $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItem::get_instance();
     $params = array();
     $params["PublisherWebsiteID"] = $PublisherWebsite->PublisherWebsiteID;
     $params["Enabled"] = 1;
     if ($banner_request["PrivateExchangeOnly"] === true) {
         /*
          * PublisherWebsiteLocal is set to 1 only if the domain admin
          * owns the publishers under their private exchange
          */
         $params["PublisherWebsiteLocal"] = $PublisherWebsite->VisibilityTypeID == 2 ? 1 : 0;
     }
     $PmpDealPublisherWebsiteToInsertionOrderLineItemList = $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory->get_cached($config, $params);
     $RtbSellV22Bid->clone_local_rtb_request_with_pmp($config, $banner_request, $PmpDealPublisherWebsiteToInsertionOrderLineItemList);
     $bid_request_list[self::GENERIC_PARTNER] = $RtbSellV22Bid->build_rtb_bid_request_generic();
     $bid_request_list[self::LOOPBACK_PARTNER] = $RtbSellV22Bid->build_rtb_bid_request_loopback();
     $PingManager = new \pinger\PingManager($config, $bid_request_list, $PublisherAdZone->AdOwnerID, $PublisherAdZone->PublisherWebsiteID, $PublisherAdZone->FloorPrice, $banner_request["PublisherAdZoneID"], $banner_request["AdName"], $banner_request["WebDomain"], $banner_request["ImpressionType"]);
     /*
      * Send the RTB request to local demand
      */
     $PingManager->set_up_local_demand_ping_clients();
     /*
      * Only send the RTB request to DSPs if the source
      * website is not marked for a private exchange only
      */
     if ($banner_request["PrivateExchangeOnly"] === false) {
         $PingManager->set_up_remote_rtb_ping_clients();
     }
     $PingManager->ping_rtb_ping_clients();
     $AuctionPopo = $PingManager->process_rtb_ping_responses();
     $auction_was_won = $AuctionPopo->auction_was_won;
     $winning_ad_tag = $AuctionPopo->winning_ad_tag;
     /*
      * Auction stats should be published to the database
      * regardless of whether there was a winning bid or not.
      */
     $PingManager->process_rtb_ping_statistics($AuctionPopo);
     /*
      * The RTB auction may not have been won because
      * a floor price wasn't met or there simply may not 
      * have been a valid bid on the auction.
      * 
      * Try to set the tag to the publisher's passback tag 
      * if one exists and if not show the default ad
      */
     if ($auction_was_won === false) {
         if ($PublisherAdZone->PassbackAdTag != null && !empty($PublisherAdZone->PassbackAdTag)) {
             $winning_ad_tag = $PublisherAdZone->PassbackAdTag;
         } else {
             return;
         }
     } else {
         /*
          * Process the macro replacements in the winning Ad tag:
          *
          * NGINCLKTRK: The click tracking URL, TBD, generic click tracking not yet implemented.
          * Try implementing your own custom CTR rate tracking
          *
          * NGINWBIDPRC: The winning bid price expressed as CPM.
          * If this was a 2nd price auction, the value would be the second price expressed as CPM
          */
         $winning_ad_tag = str_replace("{NGINCLKTRK}", "", $winning_ad_tag);
         $winning_ad_tag = str_replace("{NGINWBIDPRC}", $AuctionPopo->winning_bid_price, $winning_ad_tag);
     }
     // now output the logs to the log file
     \rtbsellv22\RtbSellV22Logger::get_instance()->output_log();
     $tracker_url = "";
     if ($banner_request["ImpressionType"] == 'video' && \util\ParseHelper::isVastURL($winning_ad_tag) === true && $AuctionPopo->auction_was_won) {
         $encryption_key = $config['settings']['rtb']['encryption_key'];
         $params = array();
         $params["winning_price"] = $AuctionPopo->winning_bid_price;
         $params["auction_timestamp"] = time();
         $vast_auction_param = $this->encrypt_vast_auction_params($encryption_key, $params);
         $vast_publisher_param = $this->encrypt_vast_auction_params($encryption_key, $AuctionPopo->vast_publisher_imp_obj);
         $tracker_url = $this->get_vast_tracker_url($config, $vast_auction_param, $vast_publisher_param);
         $banner_request["tracker_url"] = $tracker_url;
     }
     if ($AuctionPopo->loopback_demand_partner_won === true) {
         $banner_request["demand_banner_id"] = $AuctionPopo->loopback_demand_partner_ad_campaign_banner_id;
         $banner_request["winning_partner_id"] = $AuctionPopo->winning_partner_id;
         $banner_request["winning_seat"] = $AuctionPopo->winning_seat;
         $this->process_demand_tag($config, $banner_request);
         /* 
          * If this is a local auction we don't need to worry about
          * firing off notice urls
          */
     } else {
         if ($banner_request["ImpressionType"] == 'video') {
             header("Content-type: text/xml");
             if (\util\ParseHelper::isVastURL($winning_ad_tag) === true) {
                 echo $this->get_vast_wrapper_xml($config, $winning_ad_tag, $tracker_url);
             } else {
                 echo $winning_ad_tag;
             }
         } else {
             // credit publisher account here
             header("Content-type: application/javascript");
             $output = "document.write(" . json_encode($winning_ad_tag) . ");";
             echo $output;
         }
         if (!empty($AuctionPopo->nurl)) {
             /*
              * If this is a remote RTB auction we do need to worry about
              * firing off notice urls
              *
              * If safe_mode is off we can fire off an asynchronous CURL
              * call which will not block. Otherwise we are stuck
              * with curl call with a timeout.
              * 
              * curl must also be on the path
              */
             // clear output buffer
             ob_end_flush();
             // check if curl is installed
             $has_curl_on_path = $config['settings']['shell']['has_curl_on_path'];
             if (!ini_get('safe_mode') && $has_curl_on_path) {
                 exec('bash -c "exec nohup setsid curl \'' . $AuctionPopo->nurl . '\' > /dev/null 2>&1 &"');
             } else {
                 \util\WorkflowHelper::get_ping_notice_url_curl_request($AuctionPopo->nurl);
             }
         }
     }
     exit;
 }
Exemple #3
0
 public static function cloneInsertionOrderIntoInsertionOrderPreview($ad_campaign_id, $auth, $config, $mail_transport, $update_data)
 {
     $return_val = array();
     if ($ad_campaign_id === null) {
         return null;
     }
     $InsertionOrderFactory = \_factory\InsertionOrder::get_instance();
     $params = array();
     $params["InsertionOrderID"] = $ad_campaign_id;
     if (!$auth->isSuperAdmin($config)) {
         $params["UserID"] = $auth->getUserID();
     }
     $params["Active"] = 1;
     $InsertionOrder = $InsertionOrderFactory->get_row($params);
     if ($InsertionOrder == null) {
         //die("Invalid InsertionOrder ID");
         $params["error"] = "Invalid InsertionOrder ID";
         return $params;
     }
     /*
      * Clone InsertionOrder into InsertionOrderPreview
      */
     $InsertionOrderPreviewFactory = \_factory\InsertionOrderPreview::get_instance();
     $InsertionOrderPreview = new \model\InsertionOrderPreview();
     $InsertionOrderPreview->InsertionOrderID = $InsertionOrder->InsertionOrderID;
     $InsertionOrderPreview->UserID = $InsertionOrder->UserID;
     $InsertionOrderPreview->Name = $InsertionOrder->Name;
     $InsertionOrderPreview->StartDate = $InsertionOrder->StartDate;
     $InsertionOrderPreview->EndDate = $InsertionOrder->EndDate;
     $InsertionOrderPreview->Customer = $InsertionOrder->Customer;
     $InsertionOrderPreview->CustomerID = $InsertionOrder->CustomerID;
     $InsertionOrderPreview->ImpressionsCounter = 0;
     $InsertionOrderPreview->MaxImpressions = $InsertionOrder->MaxImpressions;
     $InsertionOrderPreview->CurrentSpend = 0;
     $InsertionOrderPreview->MaxSpend = $InsertionOrder->MaxSpend;
     $InsertionOrderPreview->Active = 1;
     $InsertionOrderPreview->DateCreated = date("Y-m-d H:i:s");
     $InsertionOrderPreview->DateUpdated = date("Y-m-d H:i:s");
     $InsertionOrderPreview->ChangeWentLive = 0;
     $InsertionOrderPreview->WentLiveDate = '0000-00-00 00:00:00';
     $InsertionOrderPreviewID = $InsertionOrderPreviewFactory->saveInsertionOrderPreview($InsertionOrderPreview);
     if ($update_data['type'] == 'InsertionOrderID') {
         $return_val = array('InsertionOrderPreviewID' => $InsertionOrderPreviewID);
     }
     $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
     $params = array();
     $params["InsertionOrderID"] = $InsertionOrder->InsertionOrderID;
     $params["Active"] = 1;
     $InsertionOrderLineItemList = $InsertionOrderLineItemFactory->get($params);
     $InsertionOrderLineItemPreviewFactory = \_factory\InsertionOrderLineItemPreview::get_instance();
     $InsertionOrderLineItemRestrictionsFactory = \_factory\InsertionOrderLineItemRestrictions::get_instance();
     $InsertionOrderLineItemRestrictionsPreviewFactory = \_factory\InsertionOrderLineItemRestrictionsPreview::get_instance();
     $InsertionOrderLineItemVideoRestrictionsFactory = \_factory\InsertionOrderLineItemVideoRestrictions::get_instance();
     $InsertionOrderLineItemVideoRestrictionsPreviewFactory = \_factory\InsertionOrderLineItemVideoRestrictionsPreview::get_instance();
     $InsertionOrderLineItemDomainExclusionFactory = \_factory\InsertionOrderLineItemDomainExclusion::get_instance();
     $InsertionOrderLineItemDomainExclusionPreviewFactory = \_factory\InsertionOrderLineItemDomainExclusionPreview::get_instance();
     $InsertionOrderLineItemDomainExclusiveInclusionFactory = \_factory\InsertionOrderLineItemDomainExclusiveInclusion::get_instance();
     $InsertionOrderLineItemDomainExclusiveInclusionPreviewFactory = \_factory\InsertionOrderLineItemDomainExclusiveInclusionPreview::get_instance();
     $SspRtbChannelToInsertionOrderLineItemPreviewFactory = \_factory\SspRtbChannelToInsertionOrderLineItemPreview::get_instance();
     $SspRtbChannelToInsertionOrderLineItemFactory = \_factory\SspRtbChannelToInsertionOrderLineItem::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItem::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItemPreview::get_instance();
     $SspRtbChannelToInsertionOrderPreviewFactory = \_factory\SspRtbChannelToInsertionOrderPreview::get_instance();
     $SspRtbChannelToInsertionOrderFactory = \_factory\SspRtbChannelToInsertionOrder::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrder::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderPreviewFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderPreview::get_instance();
     /*
      * PMP INVENTORY
      */
     $params = array();
     $params["InsertionOrderID"] = $InsertionOrder->InsertionOrderID;
     $PmpDealPublisherWebsiteToInsertionOrder = $PmpDealPublisherWebsiteToInsertionOrderFactory->get_row($params);
     if ($PmpDealPublisherWebsiteToInsertionOrder != null) {
         $PmpDealPublisherWebsiteToInsertionOrderPreview = new \model\PmpDealPublisherWebsiteToInsertionOrderPreview();
         $PmpDealPublisherWebsiteToInsertionOrderPreview->PublisherWebsiteID = $PmpDealPublisherWebsiteToInsertionOrder->PublisherWebsiteID;
         $PmpDealPublisherWebsiteToInsertionOrderPreview->PublisherWebsiteLocal = $PmpDealPublisherWebsiteToInsertionOrder->PublisherWebsiteLocal;
         $PmpDealPublisherWebsiteToInsertionOrderPreview->PublisherWebsiteDescription = $PmpDealPublisherWebsiteToInsertionOrder->PublisherWebsiteDescription;
         $PmpDealPublisherWebsiteToInsertionOrderPreview->InsertionOrderPreviewID = $InsertionOrderPreviewID;
         $PmpDealPublisherWebsiteToInsertionOrderPreview->Enabled = $PmpDealPublisherWebsiteToInsertionOrder->Enabled;
         $PmpDealPublisherWebsiteToInsertionOrderPreview->DateCreated = date("Y-m-d H:i:s");
         $PmpDealPublisherWebsiteToInsertionOrderPreview->DateUpdated = date("Y-m-d H:i:s");
         $PmpDealPublisherWebsiteToInsertionOrderPreviewFactory->savePmpDealPublisherWebsiteToInsertionOrderPreview($PmpDealPublisherWebsiteToInsertionOrderPreview);
     }
     /*
      * SSP INVENTORY
      */
     $params = array();
     $params["InsertionOrderID"] = $InsertionOrder->InsertionOrderID;
     $SspRtbChannelToInsertionOrder = $SspRtbChannelToInsertionOrderFactory->get_row($params);
     if ($SspRtbChannelToInsertionOrder != null) {
         $SspRtbChannelToInsertionOrderPreview = new \model\SspRtbChannelToInsertionOrderPreview();
         $SspRtbChannelToInsertionOrderPreview->SspPublisherChannelID = $SspRtbChannelToInsertionOrder->SspPublisherChannelID;
         $SspRtbChannelToInsertionOrderPreview->SspPublisherChannelDescription = $SspRtbChannelToInsertionOrder->SspPublisherChannelDescription;
         $SspRtbChannelToInsertionOrderPreview->SspExchange = $SspRtbChannelToInsertionOrder->SspExchange;
         $SspRtbChannelToInsertionOrderPreview->InsertionOrderPreviewID = $InsertionOrderPreviewID;
         $SspRtbChannelToInsertionOrderPreview->Enabled = $SspRtbChannelToInsertionOrder->Enabled;
         $SspRtbChannelToInsertionOrderPreview->DateCreated = date("Y-m-d H:i:s");
         $SspRtbChannelToInsertionOrderPreview->DateUpdated = date("Y-m-d H:i:s");
         $SspRtbChannelToInsertionOrderPreviewFactory->saveSspRtbChannelToInsertionOrderPreview($SspRtbChannelToInsertionOrderPreview);
     }
     foreach ($InsertionOrderLineItemList as $InsertionOrderLineItem) {
         $banner_id = $InsertionOrderLineItem->InsertionOrderLineItemID;
         $BannerPreview = new \model\InsertionOrderLineItemPreview();
         $BannerPreview->InsertionOrderPreviewID = $InsertionOrderPreviewID;
         $BannerPreview->InsertionOrderLineItemID = $InsertionOrderLineItem->InsertionOrderLineItemID;
         $BannerPreview->UserID = $InsertionOrderLineItem->UserID;
         $BannerPreview->Name = $InsertionOrderLineItem->Name;
         $BannerPreview->ImpressionType = $InsertionOrderLineItem->ImpressionType;
         $BannerPreview->StartDate = $InsertionOrderLineItem->StartDate;
         $BannerPreview->EndDate = $InsertionOrderLineItem->EndDate;
         $BannerPreview->IsMobile = $InsertionOrderLineItem->IsMobile;
         $BannerPreview->IABSize = $InsertionOrderLineItem->IABSize;
         $BannerPreview->Height = $InsertionOrderLineItem->Height;
         $BannerPreview->Width = $InsertionOrderLineItem->Width;
         $BannerPreview->Weight = $InsertionOrderLineItem->Weight;
         $BannerPreview->BidAmount = $InsertionOrderLineItem->BidAmount;
         $BannerPreview->AdTag = $InsertionOrderLineItem->AdTag;
         $BannerPreview->DeliveryType = $InsertionOrderLineItem->DeliveryType;
         $BannerPreview->LandingPageTLD = $InsertionOrderLineItem->LandingPageTLD;
         $BannerPreview->ImpressionsCounter = $InsertionOrderLineItem->ImpressionsCounter;
         $BannerPreview->BidsCounter = $InsertionOrderLineItem->BidsCounter;
         $BannerPreview->CurrentSpend = $InsertionOrderLineItem->CurrentSpend;
         $BannerPreview->Active = $InsertionOrderLineItem->Active;
         $BannerPreview->DateCreated = date("Y-m-d H:i:s");
         $BannerPreview->DateUpdated = date("Y-m-d H:i:s");
         $BannerPreview->ChangeWentLive = 0;
         $BannerPreview->WentLiveDate = '0000-00-00 00:00:00';
         $InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewFactory->saveInsertionOrderLineItemPreview($BannerPreview);
         if ($update_data['type'] == 'InsertionOrderLineItemID' && $update_data['id'] == $banner_id) {
             $return_val = array('InsertionOrderLineItemPreviewID' => $InsertionOrderLineItemPreviewID, 'InsertionOrderPreviewID' => $InsertionOrderPreviewID);
         }
         if ($BannerPreview->ImpressionType == 'video') {
             /*
              * VIDEO RESTRICTIONS
              */
             $params = array();
             $params["InsertionOrderLineItemID"] = $banner_id;
             $InsertionOrderLineItemVideoRestrictions = $InsertionOrderLineItemVideoRestrictionsFactory->get_row($params);
             if ($InsertionOrderLineItemVideoRestrictions != null) {
                 $VideoRestrictionsPreview = new \model\InsertionOrderLineItemVideoRestrictionsPreview();
                 $VideoRestrictionsPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
                 $VideoRestrictionsPreview->GeoCountry = $InsertionOrderLineItemVideoRestrictions->GeoCountry;
                 $VideoRestrictionsPreview->GeoState = $InsertionOrderLineItemVideoRestrictions->GeoState;
                 $VideoRestrictionsPreview->GeoCity = $InsertionOrderLineItemVideoRestrictions->GeoCity;
                 $VideoRestrictionsPreview->MimesCommaSeparated = $InsertionOrderLineItemVideoRestrictions->MimesCommaSeparated;
                 $VideoRestrictionsPreview->MinDuration = $InsertionOrderLineItemVideoRestrictions->MinDuration;
                 $VideoRestrictionsPreview->MaxDuration = $InsertionOrderLineItemVideoRestrictions->MaxDuration;
                 $VideoRestrictionsPreview->ApisSupportedCommaSeparated = $InsertionOrderLineItemVideoRestrictions->ApisSupportedCommaSeparated;
                 $VideoRestrictionsPreview->ProtocolsCommaSeparated = $InsertionOrderLineItemVideoRestrictions->ProtocolsCommaSeparated;
                 $VideoRestrictionsPreview->DeliveryCommaSeparated = $InsertionOrderLineItemVideoRestrictions->DeliveryCommaSeparated;
                 $VideoRestrictionsPreview->PlaybackCommaSeparated = $InsertionOrderLineItemVideoRestrictions->PlaybackCommaSeparated;
                 $VideoRestrictionsPreview->StartDelay = $InsertionOrderLineItemVideoRestrictions->StartDelay;
                 $VideoRestrictionsPreview->Linearity = $InsertionOrderLineItemVideoRestrictions->Linearity;
                 $VideoRestrictionsPreview->FoldPos = $InsertionOrderLineItemVideoRestrictions->FoldPos;
                 $VideoRestrictionsPreview->MinHeight = $InsertionOrderLineItemVideoRestrictions->MinHeight;
                 $VideoRestrictionsPreview->MinWidth = $InsertionOrderLineItemVideoRestrictions->MinWidth;
                 $VideoRestrictionsPreview->Secure = $InsertionOrderLineItemVideoRestrictions->Secure;
                 $VideoRestrictionsPreview->Optout = $InsertionOrderLineItemVideoRestrictions->Optout;
                 $VideoRestrictionsPreview->Vertical = $InsertionOrderLineItemVideoRestrictions->Vertical;
                 $VideoRestrictionsPreview->DateCreated = date("Y-m-d H:i:s");
                 $VideoRestrictionsPreview->DateUpdated = date("Y-m-d H:i:s");
                 $InsertionOrderLineItemVideoRestrictionsPreviewID = $InsertionOrderLineItemVideoRestrictionsPreviewFactory->saveInsertionOrderLineItemVideoRestrictionsPreview($VideoRestrictionsPreview);
                 if ($update_data['type'] == 'InsertionOrderLineItemVideoRestrictionsID' && $update_data['id'] == $InsertionOrderLineItemVideoRestrictions->InsertionOrderLineItemVideoRestrictionsID) {
                     $return_val = array('InsertionOrderLineItemVideoRestrictionsPreviewID' => $InsertionOrderLineItemVideoRestrictionsPreviewID, 'InsertionOrderLineItemPreviewID' => $InsertionOrderLineItemPreviewID, 'InsertionOrderPreviewID' => $InsertionOrderPreviewID);
                 }
             }
         } else {
             /*
              * BANNER RESTRICTIONS
              */
             $params = array();
             $params["InsertionOrderLineItemID"] = $banner_id;
             $InsertionOrderLineItemRestrictions = $InsertionOrderLineItemRestrictionsFactory->get_row($params);
             // may not be present
             if ($InsertionOrderLineItemRestrictions != null) {
                 $BannerRestrictionsPreview = new \model\InsertionOrderLineItemRestrictionsPreview();
                 $BannerRestrictionsPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
                 $BannerRestrictionsPreview->GeoCountry = $InsertionOrderLineItemRestrictions->GeoCountry;
                 $BannerRestrictionsPreview->GeoState = $InsertionOrderLineItemRestrictions->GeoState;
                 $BannerRestrictionsPreview->GeoCity = $InsertionOrderLineItemRestrictions->GeoCity;
                 $BannerRestrictionsPreview->AdTagType = $InsertionOrderLineItemRestrictions->AdTagType;
                 $BannerRestrictionsPreview->AdPositionMinLeft = $InsertionOrderLineItemRestrictions->AdPositionMinLeft;
                 $BannerRestrictionsPreview->AdPositionMaxLeft = $InsertionOrderLineItemRestrictions->AdPositionMaxLeft;
                 $BannerRestrictionsPreview->AdPositionMinTop = $InsertionOrderLineItemRestrictions->AdPositionMinTop;
                 $BannerRestrictionsPreview->AdPositionMaxTop = $InsertionOrderLineItemRestrictions->AdPositionMaxTop;
                 $BannerRestrictionsPreview->FoldPos = $InsertionOrderLineItemRestrictions->FoldPos;
                 $BannerRestrictionsPreview->Freq = $InsertionOrderLineItemRestrictions->Freq;
                 $BannerRestrictionsPreview->Timezone = $InsertionOrderLineItemRestrictions->Timezone;
                 $BannerRestrictionsPreview->InIframe = $InsertionOrderLineItemRestrictions->InIframe;
                 $BannerRestrictionsPreview->MinScreenResolutionWidth = $InsertionOrderLineItemRestrictions->MinScreenResolutionWidth;
                 $BannerRestrictionsPreview->MaxScreenResolutionWidth = $InsertionOrderLineItemRestrictions->MaxScreenResolutionWidth;
                 $BannerRestrictionsPreview->MinScreenResolutionHeight = $InsertionOrderLineItemRestrictions->MinScreenResolutionHeight;
                 $BannerRestrictionsPreview->MaxScreenResolutionHeight = $InsertionOrderLineItemRestrictions->MaxScreenResolutionHeight;
                 $BannerRestrictionsPreview->HttpLanguage = $InsertionOrderLineItemRestrictions->HttpLanguage;
                 $BannerRestrictionsPreview->BrowserUserAgentGrep = $InsertionOrderLineItemRestrictions->BrowserUserAgentGrep;
                 $BannerRestrictionsPreview->Secure = $InsertionOrderLineItemRestrictions->Secure;
                 $BannerRestrictionsPreview->Optout = $InsertionOrderLineItemRestrictions->Optout;
                 $BannerRestrictionsPreview->Vertical = $InsertionOrderLineItemRestrictions->Vertical;
                 $BannerRestrictionsPreview->DateCreated = date("Y-m-d H:i:s");
                 $BannerRestrictionsPreview->DateUpdated = date("Y-m-d H:i:s");
                 $InsertionOrderLineItemRestrictionsPreviewID = $InsertionOrderLineItemRestrictionsPreviewFactory->saveInsertionOrderLineItemRestrictionsPreview($BannerRestrictionsPreview);
                 if ($update_data['type'] == 'InsertionOrderLineItemRestrictionsID' && $update_data['id'] == $InsertionOrderLineItemRestrictions->InsertionOrderLineItemRestrictionsID) {
                     $return_val = array('InsertionOrderLineItemRestrictionsPreviewID' => $InsertionOrderLineItemRestrictionsPreviewID, 'InsertionOrderLineItemPreviewID' => $InsertionOrderLineItemPreviewID, 'InsertionOrderPreviewID' => $InsertionOrderPreviewID);
                 }
             }
         }
         /*
          * PMP INVENTORY
          */
         $params = array();
         $params["InsertionOrderLineItemID"] = $banner_id;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemList = $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory->get($params);
         if ($PmpDealPublisherWebsiteToInsertionOrderLineItemList != null) {
             foreach ($PmpDealPublisherWebsiteToInsertionOrderLineItemList as $PmpDealPublisherWebsiteToInsertionOrderLineItem) {
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview = new \model\PmpDealPublisherWebsiteToInsertionOrderLineItemPreview();
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteID = $PmpDealPublisherWebsiteToInsertionOrderLineItem->PublisherWebsiteID;
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteLocal = $PmpDealPublisherWebsiteToInsertionOrderLineItem->PublisherWebsiteLocal;
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteDescription = $PmpDealPublisherWebsiteToInsertionOrderLineItem->PublisherWebsiteDescription;
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->Enabled = $PmpDealPublisherWebsiteToInsertionOrderLineItem->Enabled;
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->DateCreated = date("Y-m-d H:i:s");
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->DateUpdated = date("Y-m-d H:i:s");
                 $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory->savePmpDealPublisherWebsiteToInsertionOrderLineItemPreview($PmpDealPublisherWebsiteToInsertionOrderLineItemPreview);
             }
         }
         /*
          * SSP INVENTORY
          */
         $params = array();
         $params["InsertionOrderLineItemID"] = $banner_id;
         $SspRtbChannelToInsertionOrderLineItemList = $SspRtbChannelToInsertionOrderLineItemFactory->get_row($params);
         if ($SspRtbChannelToInsertionOrderLineItemList != null) {
             foreach ($SspRtbChannelToInsertionOrderLineItemList as $SspRtbChannelToInsertionOrderLineItem) {
                 $SspRtbChannelToInsertionOrderLineItemPreview = new \model\SspRtbChannelToInsertionOrderLineItemPreview();
                 $SspRtbChannelToInsertionOrderLineItemPreview->SspPublisherChannelID = $SspRtbChannelToInsertionOrderLineItem->SspPublisherChannelID;
                 $SspRtbChannelToInsertionOrderLineItemPreview->SspPublisherChannelDescription = $SspRtbChannelToInsertionOrderLineItem->SspPublisherChannelDescription;
                 $SspRtbChannelToInsertionOrderLineItemPreview->SspExchange = $SspRtbChannelToInsertionOrderLineItem->SspExchange;
                 $SspRtbChannelToInsertionOrderLineItemPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
                 $SspRtbChannelToInsertionOrderLineItemPreview->Enabled = $SspRtbChannelToInsertionOrderLineItem->Enabled;
                 $SspRtbChannelToInsertionOrderLineItemPreview->DateCreated = date("Y-m-d H:i:s");
                 $SspRtbChannelToInsertionOrderLineItemPreview->DateUpdated = date("Y-m-d H:i:s");
                 $SspRtbChannelToInsertionOrderLineItemPreviewFactory->saveSspRtbChannelToInsertionOrderLineItemPreview($SspRtbChannelToInsertionOrderLineItemPreview);
             }
         }
         /*
          * DOMAIN EXCLUSIONS
          */
         $params = array();
         $params["InsertionOrderLineItemID"] = $banner_id;
         $InsertionOrderLineItemDomainExclusionList = $InsertionOrderLineItemDomainExclusionFactory->get($params);
         foreach ($InsertionOrderLineItemDomainExclusionList as $InsertionOrderLineItemDomainExclusion) {
             $BannerDomainExclusionPreview = new \model\InsertionOrderLineItemDomainExclusionPreview();
             $BannerDomainExclusionPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
             $BannerDomainExclusionPreview->ExclusionType = $InsertionOrderLineItemDomainExclusion->ExclusionType;
             $BannerDomainExclusionPreview->DomainName = $InsertionOrderLineItemDomainExclusion->DomainName;
             $BannerDomainExclusionPreview->DateCreated = date("Y-m-d H:i:s");
             $BannerDomainExclusionPreview->DateUpdated = date("Y-m-d H:i:s");
             $InsertionOrderLineItemDomainExclusionPreviewID = $InsertionOrderLineItemDomainExclusionPreviewFactory->saveInsertionOrderLineItemDomainExclusionPreview($BannerDomainExclusionPreview);
             if ($update_data['type'] == 'InsertionOrderLineItemDomainExclusionID' && $update_data['id'] == $InsertionOrderLineItemDomainExclusion->InsertionOrderLineItemDomainExclusionID) {
                 $return_val = array('InsertionOrderLineItemDomainExclusionPreviewID' => $InsertionOrderLineItemDomainExclusionPreviewID, 'InsertionOrderLineItemPreviewID' => $InsertionOrderLineItemPreviewID, 'InsertionOrderPreviewID' => $InsertionOrderPreviewID);
             }
         }
         /*
          * DOMAIN EXCLUSIVE INCLUSIONS
          */
         $params = array();
         $params["InsertionOrderLineItemID"] = $banner_id;
         $InsertionOrderLineItemDomainExclusiveInclusionList = $InsertionOrderLineItemDomainExclusiveInclusionFactory->get($params);
         foreach ($InsertionOrderLineItemDomainExclusiveInclusionList as $InsertionOrderLineItemDomainExclusiveInclusion) {
             $BannerDomainExclusiveInclusionPreview = new \model\InsertionOrderLineItemDomainExclusiveInclusionPreview();
             $BannerDomainExclusiveInclusionPreview->InsertionOrderLineItemPreviewID = $InsertionOrderLineItemPreviewID;
             $BannerDomainExclusiveInclusionPreview->InclusionType = $InsertionOrderLineItemDomainExclusiveInclusion->InclusionType;
             $BannerDomainExclusiveInclusionPreview->DomainName = $InsertionOrderLineItemDomainExclusiveInclusion->DomainName;
             $BannerDomainExclusiveInclusionPreview->DateCreated = date("Y-m-d H:i:s");
             $BannerDomainExclusiveInclusionPreview->DateUpdated = date("Y-m-d H:i:s");
             $InsertionOrderLineItemDomainExclusiveInclusionPreviewID = $InsertionOrderLineItemDomainExclusiveInclusionPreviewFactory->saveInsertionOrderLineItemDomainExclusiveInclusionPreview($BannerDomainExclusiveInclusionPreview);
             if ($update_data['type'] == 'InsertionOrderLineItemDomainExclusiveInclusionID' && $update_data['id'] == $InsertionOrderLineItemDomainExclusiveInclusion->InsertionOrderLineItemDomainExclusiveInclusionID) {
                 $return_val = array('InsertionOrderLineItemDomainExclusiveInclusionPreviewID' => $InsertionOrderLineItemDomainExclusiveInclusionPreviewID, 'InsertionOrderLineItemPreviewID' => $InsertionOrderLineItemPreviewID, 'InsertionOrderPreviewID' => $InsertionOrderPreviewID);
             }
         }
     }
     if (!$auth->getIsSuperAdmin($config) && $config['mail']['subscribe']['campaigns'] === true) {
         // if this ad campaign was not created/edited by the admin, then send out a notification email
         $message = '<b>NginAd Demand Customer Campaign Edited by ' . $auth->getUserName() . '.</b><br /><br />';
         $message = $message . '<table border="0" width="10%">';
         $message = $message . '<tr><td><b>InsertionOrderID: </b></td><td>' . $InsertionOrder->InsertionOrderID . '</td></tr>';
         $message = $message . '<tr><td><b>UserID: </b></td><td>' . $InsertionOrder->UserID . '</td></tr>';
         $message = $message . '<tr><td><b>Name: </b></td><td>' . $InsertionOrder->Name . '</td></tr>';
         $message = $message . '<tr><td><b>StartDate: </b></td><td>' . $InsertionOrder->StartDate . '</td></tr>';
         $message = $message . '<tr><td><b>EndDate: </b></td><td>' . $InsertionOrder->EndDate . '</td></tr>';
         $message = $message . '<tr><td><b>Customer: </b></td><td>' . $InsertionOrder->Customer . '</td></tr>';
         $message = $message . '<tr><td><b>CustomerID: </b></td><td>' . $InsertionOrder->CustomerID . '</td></tr>';
         $message = $message . '<tr><td><b>MaxImpressions: </b></td><td>' . $InsertionOrder->MaxImpressions . '</td></tr>';
         $message = $message . '<tr><td><b>MaxSpend: </b></td><td>' . $InsertionOrder->MaxSpend . '</td></tr>';
         $message = $message . '</table>';
         $subject = "NginAd Demand Customer Campaign Edited by " . $auth->getUserName();
         $text = new Mime\Part($message);
         $text->type = Mime\Mime::TYPE_HTML;
         $text->charset = 'utf-8';
         $mimeMessage = new Mime\Message();
         $mimeMessage->setParts(array($text));
         $zf_message = new Message();
         $zf_message->addTo($config['mail']['admin-email']['email'], $config['mail']['admin-email']['name'])->addFrom($config['mail']['reply-to']['email'], $config['mail']['reply-to']['name'])->setSubject($subject)->setBody($mimeMessage);
         $mail_transport->send($zf_message);
     }
     return $return_val;
 }
Exemple #4
0
 public static function cloneInsertionOrderPreviewIntoInsertionOrder($ad_campaign_preview_id, $auth, $config)
 {
     if ($ad_campaign_preview_id === null) {
         return;
     }
     $InsertionOrderPreviewFactory = \_factory\InsertionOrderPreview::get_instance();
     $params = array();
     $params["InsertionOrderPreviewID"] = $ad_campaign_preview_id;
     if (!$auth->isSuperAdmin($config) && !$auth->isDomainAdmin($config)) {
         die("You do not have permission to access this page");
     }
     if (!$auth->isSuperAdmin($config)) {
         $params["UserID"] = $auth->getUserID();
     }
     $params["Active"] = 1;
     $InsertionOrderPreview = $InsertionOrderPreviewFactory->get_row($params);
     if ($InsertionOrderPreview == null) {
         die("Invalid InsertionOrderPreview ID");
     }
     /*
      * Clone InsertionOrderPreview into InsertionOrder
      */
     $InsertionOrderFactory = \_factory\InsertionOrder::get_instance();
     $InsertionOrder = new \model\InsertionOrder();
     if ($InsertionOrderPreview->InsertionOrderID != null) {
         $InsertionOrder->InsertionOrderID = $InsertionOrderPreview->InsertionOrderID;
     }
     $campaign_active = isset($InsertionOrderPreview->Deleted) && $InsertionOrderPreview->Deleted == 1 ? 0 : 1;
     $InsertionOrder->UserID = $InsertionOrderPreview->UserID;
     $InsertionOrder->Name = $InsertionOrderPreview->Name;
     $InsertionOrder->StartDate = $InsertionOrderPreview->StartDate;
     $InsertionOrder->EndDate = $InsertionOrderPreview->EndDate;
     $InsertionOrder->Customer = $InsertionOrderPreview->Customer;
     $InsertionOrder->CustomerID = $InsertionOrderPreview->CustomerID;
     $InsertionOrder->ImpressionsCounter = 0;
     $InsertionOrder->MaxImpressions = $InsertionOrderPreview->MaxImpressions;
     $InsertionOrder->CurrentSpend = 0;
     $InsertionOrder->MaxSpend = $InsertionOrderPreview->MaxSpend;
     $InsertionOrder->Active = $campaign_active;
     $InsertionOrder->DateUpdated = date("Y-m-d H:i:s");
     $ad_campaign_id = $InsertionOrderFactory->saveInsertionOrder($InsertionOrder);
     $PmpDealPublisherWebsiteToInsertionOrderPreviewFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderPreview::get_instance();
     $SspRtbChannelToInsertionOrderPreviewFactory = \_factory\SspRtbChannelToInsertionOrderPreview::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrder::get_instance();
     $SspRtbChannelToInsertionOrderFactory = \_factory\SspRtbChannelToInsertionOrder::get_instance();
     /*
      * PMP DEALS
      */
     // first delete the existing ones, then re-insert
     $PmpDealPublisherWebsiteToInsertionOrderFactory->deletePmpDealPublisherWebsiteToInsertionOrderByInsertionOrderID($ad_campaign_id);
     $params = array();
     $params["InsertionOrderPreviewID"] = $ad_campaign_preview_id;
     $PmpDealPublisherWebsiteToInsertionOrderPreviewList = $PmpDealPublisherWebsiteToInsertionOrderPreviewFactory->get($params);
     foreach ($PmpDealPublisherWebsiteToInsertionOrderPreviewList as $PmpDealPublisherWebsiteToInsertionOrderPreview) {
         $PmpDealPublisherWebsiteToInsertionOrder = new \model\PmpDealPublisherWebsiteToInsertionOrder();
         $PmpDealPublisherWebsiteToInsertionOrder->PublisherWebsiteID = $PmpDealPublisherWebsiteToInsertionOrderPreview->PublisherWebsiteID;
         $PmpDealPublisherWebsiteToInsertionOrder->PublisherWebsiteLocal = $PmpDealPublisherWebsiteToInsertionOrderPreview->PublisherWebsiteLocal;
         $PmpDealPublisherWebsiteToInsertionOrder->PublisherWebsiteDescription = $PmpDealPublisherWebsiteToInsertionOrderPreview->PublisherWebsiteDescription;
         $PmpDealPublisherWebsiteToInsertionOrder->InsertionOrderID = $ad_campaign_id;
         $PmpDealPublisherWebsiteToInsertionOrder->Enabled = $PmpDealPublisherWebsiteToInsertionOrderPreview->Enabled;
         $PmpDealPublisherWebsiteToInsertionOrderFactory->savePmpDealPublisherWebsiteToInsertionOrder($PmpDealPublisherWebsiteToInsertionOrder);
     }
     /*
      * SSP RTB CHANNELS
      */
     // first delete the existing ones, then re-insert
     $SspRtbChannelToInsertionOrderFactory->deleteSspRtbChannelToInsertionOrderByInsertionOrderID($ad_campaign_id);
     $params = array();
     $params["InsertionOrderPreviewID"] = $ad_campaign_preview_id;
     $SspRtbChannelToInsertionOrderPreviewList = $SspRtbChannelToInsertionOrderPreviewFactory->get($params);
     foreach ($SspRtbChannelToInsertionOrderPreviewList as $SspRtbChannelToInsertionOrderPreview) {
         $SspRtbChannelToInsertionOrder = new \model\SspRtbChannelToInsertionOrder();
         $SspRtbChannelToInsertionOrder->SspPublisherChannelID = $SspRtbChannelToInsertionOrderPreview->SspPublisherChannelID;
         $SspRtbChannelToInsertionOrder->SspPublisherChannelDescription = $SspRtbChannelToInsertionOrderPreview->SspPublisherChannelDescription;
         $SspRtbChannelToInsertionOrder->SspExchange = $SspRtbChannelToInsertionOrderPreview->SspExchange;
         $SspRtbChannelToInsertionOrder->InsertionOrderID = $ad_campaign_id;
         $SspRtbChannelToInsertionOrder->Enabled = $SspRtbChannelToInsertionOrderPreview->Enabled;
         $SspRtbChannelToInsertionOrderFactory->saveSspRtbChannelToInsertionOrder($SspRtbChannelToInsertionOrder);
     }
     $InsertionOrderLineItemPreviewFactory = \_factory\InsertionOrderLineItemPreview::get_instance();
     $params = array();
     $params["InsertionOrderPreviewID"] = $ad_campaign_preview_id;
     /*
      * get all banners, not just active ones, we want to set deleted banners to inactive on production also
      * if they were flagged that way in preview mode
      * $params["Active"] = 1;
      */
     $InsertionOrderLineItemPreviewList = $InsertionOrderLineItemPreviewFactory->get($params);
     $InsertionOrderLineItemFactory = \_factory\InsertionOrderLineItem::get_instance();
     $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();
     $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItemPreview::get_instance();
     $SspRtbChannelToInsertionOrderLineItemPreviewFactory = \_factory\SspRtbChannelToInsertionOrderLineItemPreview::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItem::get_instance();
     $SspRtbChannelToInsertionOrderLineItemFactory = \_factory\SspRtbChannelToInsertionOrderLineItem::get_instance();
     $PublisherAdZoneFactory = \_factory\PublisherAdZone::get_instance();
     $InsertionOrderLineItemDomainExclusionFactory = \_factory\InsertionOrderLineItemDomainExclusion::get_instance();
     $InsertionOrderLineItemDomainExclusionPreviewFactory = \_factory\InsertionOrderLineItemDomainExclusionPreview::get_instance();
     $InsertionOrderLineItemDomainExclusiveInclusionFactory = \_factory\InsertionOrderLineItemDomainExclusiveInclusion::get_instance();
     $InsertionOrderLineItemDomainExclusiveInclusionPreviewFactory = \_factory\InsertionOrderLineItemDomainExclusiveInclusionPreview::get_instance();
     foreach ($InsertionOrderLineItemPreviewList as $InsertionOrderLineItemPreview) {
         $banner_preview_id = $InsertionOrderLineItemPreview->InsertionOrderLineItemPreviewID;
         $Banner = new \model\InsertionOrderLineItem();
         $Banner->InsertionOrderID = $ad_campaign_id;
         if ($InsertionOrderLineItemPreview->InsertionOrderLineItemID != null) {
             $Banner->InsertionOrderLineItemID = $InsertionOrderLineItemPreview->InsertionOrderLineItemID;
         }
         if ($campaign_active == 0) {
             $banner_active = 0;
         } else {
             $banner_active = $InsertionOrderLineItemPreview->Active;
         }
         $Banner->UserID = $InsertionOrderLineItemPreview->UserID;
         $Banner->Name = $InsertionOrderLineItemPreview->Name;
         $Banner->ImpressionType = $InsertionOrderLineItemPreview->ImpressionType;
         $Banner->StartDate = $InsertionOrderLineItemPreview->StartDate;
         $Banner->EndDate = $InsertionOrderLineItemPreview->EndDate;
         $Banner->IsMobile = $InsertionOrderLineItemPreview->IsMobile;
         $Banner->IABSize = $InsertionOrderLineItemPreview->IABSize;
         $Banner->Height = $InsertionOrderLineItemPreview->Height;
         $Banner->Width = $InsertionOrderLineItemPreview->Width;
         $Banner->Weight = $InsertionOrderLineItemPreview->Weight;
         $Banner->BidAmount = $InsertionOrderLineItemPreview->BidAmount;
         $Banner->AdTag = $InsertionOrderLineItemPreview->AdTag;
         $Banner->DeliveryType = $InsertionOrderLineItemPreview->DeliveryType;
         $Banner->LandingPageTLD = $InsertionOrderLineItemPreview->LandingPageTLD;
         $Banner->ImpressionsCounter = $InsertionOrderLineItemPreview->ImpressionsCounter;
         $Banner->BidsCounter = $InsertionOrderLineItemPreview->BidsCounter;
         $Banner->CurrentSpend = $InsertionOrderLineItemPreview->CurrentSpend;
         $Banner->Active = $banner_active;
         $Banner->DateCreated = date("Y-m-d H:i:s");
         // if the banner was deleted and there is no corresponding production banner, don't save it
         if ($banner_active == 0 && $InsertionOrderLineItemPreview->InsertionOrderLineItemID == null) {
             continue;
         }
         $banner_id = $InsertionOrderLineItemFactory->saveInsertionOrderLineItem($Banner);
         // if the banner was deleted there's no reason to continue to copy it's properties here
         if ($banner_active == 0) {
             continue;
         }
         if ($Banner->ImpressionType == 'video') {
             /*
              * VIDEO RESTRICTIONS
              */
             $params = array();
             $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
             $InsertionOrderLineItemVideoRestrictionsPreview = $InsertionOrderLineItemVideoRestrictionsPreviewFactory->get_row($params);
             if ($InsertionOrderLineItemVideoRestrictionsPreview != null) {
                 $VideoRestrictions = new \model\InsertionOrderLineItemVideoRestrictions();
                 $VideoRestrictions->InsertionOrderLineItemID = $banner_id;
                 $VideoRestrictions->GeoCountry = $InsertionOrderLineItemVideoRestrictionsPreview->GeoCountry;
                 $VideoRestrictions->GeoState = $InsertionOrderLineItemVideoRestrictionsPreview->GeoState;
                 $VideoRestrictions->GeoCity = $InsertionOrderLineItemVideoRestrictionsPreview->GeoCity;
                 $VideoRestrictions->MimesCommaSeparated = $InsertionOrderLineItemVideoRestrictionsPreview->MimesCommaSeparated;
                 $VideoRestrictions->MinDuration = $InsertionOrderLineItemVideoRestrictionsPreview->MinDuration;
                 $VideoRestrictions->MaxDuration = $InsertionOrderLineItemVideoRestrictionsPreview->MaxDuration;
                 $VideoRestrictions->ApisSupportedCommaSeparated = $InsertionOrderLineItemVideoRestrictionsPreview->ApisSupportedCommaSeparated;
                 $VideoRestrictions->ProtocolsCommaSeparated = $InsertionOrderLineItemVideoRestrictionsPreview->ProtocolsCommaSeparated;
                 $VideoRestrictions->DeliveryCommaSeparated = $InsertionOrderLineItemVideoRestrictionsPreview->DeliveryCommaSeparated;
                 $VideoRestrictions->PlaybackCommaSeparated = $InsertionOrderLineItemVideoRestrictionsPreview->PlaybackCommaSeparated;
                 $VideoRestrictions->StartDelay = $InsertionOrderLineItemVideoRestrictionsPreview->StartDelay;
                 $VideoRestrictions->Linearity = $InsertionOrderLineItemVideoRestrictionsPreview->Linearity;
                 $VideoRestrictions->FoldPos = $InsertionOrderLineItemVideoRestrictionsPreview->FoldPos;
                 $VideoRestrictions->MinHeight = $InsertionOrderLineItemVideoRestrictionsPreview->MinHeight;
                 $VideoRestrictions->MinWidth = $InsertionOrderLineItemVideoRestrictionsPreview->MinWidth;
                 $VideoRestrictions->Secure = $InsertionOrderLineItemVideoRestrictionsPreview->Secure;
                 $VideoRestrictions->Optout = $InsertionOrderLineItemVideoRestrictionsPreview->Optout;
                 $VideoRestrictions->Vertical = $InsertionOrderLineItemVideoRestrictionsPreview->Vertical;
                 $VideoRestrictions->DateCreated = date("Y-m-d H:i:s");
                 $VideoRestrictions->DateUpdated = date("Y-m-d H:i:s");
                 $InsertionOrderLineItemVideoRestrictionsFactory->saveInsertionOrderLineItemVideoRestrictions($VideoRestrictions);
                 $InsertionOrderLineItemRestrictionsFactory->deleteInsertionOrderLineItemRestrictions($banner_id);
             }
         } else {
             /*
              * BANNER RESTRICTIONS
              */
             $params = array();
             $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
             $InsertionOrderLineItemRestrictionsPreview = $InsertionOrderLineItemRestrictionsPreviewFactory->get_row($params);
             if ($InsertionOrderLineItemRestrictionsPreview != null) {
                 $BannerRestrictions = new \model\InsertionOrderLineItemRestrictions();
                 $BannerRestrictions->InsertionOrderLineItemID = $banner_id;
                 $BannerRestrictions->GeoCountry = $InsertionOrderLineItemRestrictionsPreview->GeoCountry;
                 $BannerRestrictions->GeoState = $InsertionOrderLineItemRestrictionsPreview->GeoState;
                 $BannerRestrictions->GeoCity = $InsertionOrderLineItemRestrictionsPreview->GeoCity;
                 $BannerRestrictions->AdTagType = $InsertionOrderLineItemRestrictionsPreview->AdTagType;
                 $BannerRestrictions->AdPositionMinLeft = $InsertionOrderLineItemRestrictionsPreview->AdPositionMinLeft;
                 $BannerRestrictions->AdPositionMaxLeft = $InsertionOrderLineItemRestrictionsPreview->AdPositionMaxLeft;
                 $BannerRestrictions->AdPositionMinTop = $InsertionOrderLineItemRestrictionsPreview->AdPositionMinTop;
                 $BannerRestrictions->AdPositionMaxTop = $InsertionOrderLineItemRestrictionsPreview->AdPositionMaxTop;
                 $BannerRestrictions->FoldPos = $InsertionOrderLineItemRestrictionsPreview->FoldPos;
                 $BannerRestrictions->Freq = $InsertionOrderLineItemRestrictionsPreview->Freq;
                 $BannerRestrictions->Timezone = $InsertionOrderLineItemRestrictionsPreview->Timezone;
                 $BannerRestrictions->InIframe = $InsertionOrderLineItemRestrictionsPreview->InIframe;
                 $BannerRestrictions->MinScreenResolutionWidth = $InsertionOrderLineItemRestrictionsPreview->MinScreenResolutionWidth;
                 $BannerRestrictions->MaxScreenResolutionWidth = $InsertionOrderLineItemRestrictionsPreview->MaxScreenResolutionWidth;
                 $BannerRestrictions->MinScreenResolutionHeight = $InsertionOrderLineItemRestrictionsPreview->MinScreenResolutionHeight;
                 $BannerRestrictions->MaxScreenResolutionHeight = $InsertionOrderLineItemRestrictionsPreview->MaxScreenResolutionHeight;
                 $BannerRestrictions->HttpLanguage = $InsertionOrderLineItemRestrictionsPreview->HttpLanguage;
                 $BannerRestrictions->BrowserUserAgentGrep = $InsertionOrderLineItemRestrictionsPreview->BrowserUserAgentGrep;
                 $BannerRestrictions->Secure = $InsertionOrderLineItemRestrictionsPreview->Secure;
                 $BannerRestrictions->Optout = $InsertionOrderLineItemRestrictionsPreview->Optout;
                 $BannerRestrictions->Vertical = $InsertionOrderLineItemRestrictionsPreview->Vertical;
                 $BannerRestrictions->DateCreated = date("Y-m-d H:i:s");
                 $BannerRestrictions->DateUpdated = date("Y-m-d H:i:s");
                 $InsertionOrderLineItemRestrictionsFactory->saveInsertionOrderLineItemRestrictions($BannerRestrictions);
                 $InsertionOrderLineItemVideoRestrictionsFactory->deleteInsertionOrderLineItemVideoRestrictions($banner_id);
             }
         }
         /*
          * PMP DEALS
          */
         // first delete the existing ones, then re-insert
         $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory->deletePmpDealPublisherWebsiteToInsertionOrderLineItemByInsertionOrderLineItemID($banner_id);
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewList = $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory->get($params);
         foreach ($PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewList as $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview) {
             $PmpDealPublisherWebsiteToInsertionOrderLineItem = new \model\PmpDealPublisherWebsiteToInsertionOrderLineItem();
             $PmpDealPublisherWebsiteToInsertionOrderLineItem->PublisherWebsiteID = $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteID;
             $PmpDealPublisherWebsiteToInsertionOrderLineItem->PublisherWebsiteLocal = $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteLocal;
             $PmpDealPublisherWebsiteToInsertionOrderLineItem->PublisherWebsiteDescription = $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteDescription;
             $PmpDealPublisherWebsiteToInsertionOrderLineItem->InsertionOrderLineItemID = $banner_id;
             $PmpDealPublisherWebsiteToInsertionOrderLineItem->Enabled = $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->Enabled;
             $PmpDealPublisherWebsiteToInsertionOrderLineItemFactory->savePmpDealPublisherWebsiteToInsertionOrderLineItem($PmpDealPublisherWebsiteToInsertionOrderLineItem);
         }
         /*
          * SSP RTB CHANNELS
          */
         // first delete the existing ones, then re-insert
         $SspRtbChannelToInsertionOrderLineItemFactory->deleteSspRtbChannelToInsertionOrderLineItemByInsertionOrderLineItemID($banner_id);
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
         $SspRtbChannelToInsertionOrderLineItemPreviewList = $SspRtbChannelToInsertionOrderLineItemPreviewFactory->get($params);
         foreach ($SspRtbChannelToInsertionOrderLineItemPreviewList as $SspRtbChannelToInsertionOrderLineItemPreview) {
             $SspRtbChannelToInsertionOrderLineItem = new \model\SspRtbChannelToInsertionOrderLineItem();
             $SspRtbChannelToInsertionOrderLineItem->SspPublisherChannelID = $SspRtbChannelToInsertionOrderLineItemPreview->SspPublisherChannelID;
             $SspRtbChannelToInsertionOrderLineItem->SspPublisherChannelDescription = $SspRtbChannelToInsertionOrderLineItemPreview->SspPublisherChannelDescription;
             $SspRtbChannelToInsertionOrderLineItem->SspExchange = $SspRtbChannelToInsertionOrderLineItemPreview->SspExchange;
             $SspRtbChannelToInsertionOrderLineItem->InsertionOrderLineItemID = $banner_id;
             $SspRtbChannelToInsertionOrderLineItem->Enabled = $SspRtbChannelToInsertionOrderLineItemPreview->Enabled;
             $SspRtbChannelToInsertionOrderLineItemFactory->saveSspRtbChannelToInsertionOrderLineItem($SspRtbChannelToInsertionOrderLineItem);
         }
         /*
          * DOMAIN EXCLUSIONS
          */
         // first delete the existing ones, then re-insert
         $InsertionOrderLineItemDomainExclusionFactory->deleteInsertionOrderLineItemDomainExclusionByBannerID($banner_id);
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
         $InsertionOrderLineItemDomainExclusionPreviewList = $InsertionOrderLineItemDomainExclusionPreviewFactory->get($params);
         foreach ($InsertionOrderLineItemDomainExclusionPreviewList as $InsertionOrderLineItemDomainExclusionPreview) {
             $BannerDomainExclusion = new \model\InsertionOrderLineItemDomainExclusion();
             $BannerDomainExclusion->InsertionOrderLineItemID = $banner_id;
             $BannerDomainExclusion->ExclusionType = $InsertionOrderLineItemDomainExclusionPreview->ExclusionType;
             $BannerDomainExclusion->DomainName = $InsertionOrderLineItemDomainExclusionPreview->DomainName;
             $BannerDomainExclusion->DateCreated = date("Y-m-d H:i:s");
             $BannerDomainExclusion->DateUpdated = date("Y-m-d H:i:s");
             $InsertionOrderLineItemDomainExclusionFactory->saveInsertionOrderLineItemDomainExclusion($BannerDomainExclusion);
         }
         /*
          * DOMAIN EXCLUSIVE INCLUSIONS
          */
         // first delete the existing ones, then re-insert
         $InsertionOrderLineItemDomainExclusiveInclusionFactory->deleteInsertionOrderLineItemDomainExclusiveInclusionByBannerID($banner_id);
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
         $InsertionOrderLineItemDomainExclusiveInclusionPreviewList = $InsertionOrderLineItemDomainExclusiveInclusionPreviewFactory->get($params);
         foreach ($InsertionOrderLineItemDomainExclusiveInclusionPreviewList as $InsertionOrderLineItemDomainExclusiveInclusionPreview) {
             $BannerDomainExclusiveInclusion = new \model\InsertionOrderLineItemDomainExclusiveInclusion();
             $BannerDomainExclusiveInclusion->InsertionOrderLineItemID = $banner_id;
             $BannerDomainExclusiveInclusion->InclusionType = $InsertionOrderLineItemDomainExclusiveInclusionPreview->InclusionType;
             $BannerDomainExclusiveInclusion->DomainName = $InsertionOrderLineItemDomainExclusiveInclusionPreview->DomainName;
             $BannerDomainExclusiveInclusion->DateCreated = date("Y-m-d H:i:s");
             $BannerDomainExclusiveInclusion->DateUpdated = date("Y-m-d H:i:s");
             $InsertionOrderLineItemDomainExclusiveInclusionFactory->saveInsertionOrderLineItemDomainExclusiveInclusion($BannerDomainExclusiveInclusion);
         }
     }
     return $ad_campaign_id;
 }