Exemple #1
0
 /**
  * 
  * @return Ambigous <\Zend\View\Model\ViewModel, \Zend\View\Model\ViewModel>
  */
 public function newlineitemAction()
 {
     $initialized = $this->initialize();
     if ($initialized !== true) {
         return $initialized;
     }
     $ImpressionType = $this->getRequest()->getPost('ImpressionType');
     if ($ImpressionType != 'banner' && $ImpressionType != 'image' && $ImpressionType != 'video') {
         die("Required Field: ImpressionType was missing");
     }
     $needed_input_banner = array('bannername', 'startdate', 'enddate', 'ismobile', 'iabsize', 'height', 'width', 'bidamount', 'adtag', 'landingpagetld');
     $needed_input_video = array('bannername', 'startdate', 'enddate', 'bidamount', 'adtag', 'landingpagetld');
     $adtag = $this->getRequest()->getPost('adtag');
     if ($ImpressionType == 'video') {
         $this->validateInput($needed_input_video);
     } elseif ($ImpressionType == 'image') {
         $this->validateInput($needed_input_banner);
         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");
         }
     } else {
         $this->validateInput($needed_input_banner);
     }
     $campaignid = $this->getRequest()->getPost('campaignid');
     $campaign_preview_id = $this->getRequest()->getPost('campaignpreviewid');
     $bannerid = $this->getRequest()->getPost('bannerid');
     $banner_preview_id = $this->getRequest()->getPost('bannerpreviewid');
     $ispreview = $this->getRequest()->getPost('ispreview');
     $px_feeds = $this->getRequest()->getPost('px-feeds');
     $pc_feeds = $this->getRequest()->getPost('pc-feeds');
     $ssp_feeds = $this->getRequest()->getPost('ssp-feeds');
     $pc_feeds = is_array($pc_feeds) ? $pc_feeds : array();
     $px_feeds = is_array($px_feeds) ? $px_feeds : array();
     $ssp_feeds = is_array($ssp_feeds) ? $ssp_feeds : array();
     $exchange_feeds = array_merge($pc_feeds, $px_feeds);
     if ($ispreview != true) {
         /*
          * THIS METHOD CHECKS IF THERE IS AN EXISTING PREVIEW MODE CAMPAIGN
          * IF NOT, IT CHECKS THE ACL PERMISSIONS ON THE PRODUCTION BANNER/CAMPAIGN REFERENCED
          * THEN IT CREATES A PREVIEW VERSION OF THE AD CAMPAIGN
          */
         if ($bannerid != null) {
             $update_data = array('type' => 'InsertionOrderLineItemID', 'id' => $bannerid);
         } else {
             $update_data = array('type' => 'InsertionOrderID', 'id' => $campaignid);
         }
         $return_val = \transformation\TransformPreview::previewCheckInsertionOrderID($campaignid, $this->auth, $this->config_handle, $this->getServiceLocator()->get('mail.transport'), $update_data);
         if ($return_val !== null) {
             if ($bannerid != null) {
                 $campaign_preview_id = $return_val["InsertionOrderPreviewID"];
                 $banner_preview_id = $return_val["InsertionOrderLineItemPreviewID"];
             } else {
                 $campaign_preview_id = $return_val["InsertionOrderPreviewID"];
             }
         }
     }
     // ACL PREVIEW PERMISSIONS CHECK
     transformation\CheckPermissions::checkEditPermissionInsertionOrderPreview($campaign_preview_id, $this->auth, $this->config_handle);
     $bannername = $this->getRequest()->getPost('bannername');
     $startdate = $this->getRequest()->getPost('startdate');
     $enddate = $this->getRequest()->getPost('enddate');
     $ismobile = $this->getRequest()->getPost('ismobile');
     $iabsize = $this->getRequest()->getPost('iabsize');
     $height = $this->getRequest()->getPost('height');
     $width = $this->getRequest()->getPost('width');
     $weight = $this->getRequest()->getPost('weight');
     $bidamount = $this->getRequest()->getPost('bidamount');
     $landingpagetld = $this->getRequest()->getPost('landingpagetld');
     $bannerid = $this->getRequest()->getPost('bannerid');
     if ($ImpressionType == 'video') {
         $mimes = $this->getRequest()->getPost("Mimes");
         if ($mimes && is_array($mimes) && count($mimes) > 0) {
             $mimes = join(',', $mimes);
         } else {
             $mimes = "";
         }
         $protocols = $this->getRequest()->getPost("Protocols");
         if ($protocols && is_array($protocols) && count($protocols) > 0) {
             $protocols = join(',', $protocols);
         } else {
             $protocols = "";
         }
         $apis_supported = $this->getRequest()->getPost("ApisSupported");
         if ($apis_supported && is_array($apis_supported) && count($apis_supported) > 0) {
             $apis_supported = join(',', $apis_supported);
         } else {
             $apis_supported = "";
         }
         $delivery = $this->getRequest()->getPost("Delivery");
         if ($delivery && is_array($delivery) && count($delivery) > 0) {
             $delivery = join(',', $delivery);
         } else {
             $delivery = "";
         }
         $playback = $this->getRequest()->getPost("Playback");
         if ($playback && is_array($playback) && count($playback) > 0) {
             $playback = join(',', $playback);
         } else {
             $playback = "";
         }
         $start_delay = $this->getRequest()->getPost("StartDelay");
         $linearity = $this->getRequest()->getPost("Linearity");
     }
     $BannerPreview = new \model\InsertionOrderLineItemPreview();
     if ($banner_preview_id != null) {
         $BannerPreview->InsertionOrderLineItemPreviewID = $banner_preview_id;
     }
     $BannerPreview->UserID = $this->auth->getEffectiveUserID();
     $BannerPreview->Name = $bannername;
     $BannerPreview->InsertionOrderPreviewID = $campaign_preview_id;
     $BannerPreview->StartDate = date("Y-m-d H:i:s", strtotime($startdate));
     $BannerPreview->EndDate = date("Y-m-d H:i:s", strtotime($enddate));
     $BannerPreview->ImpressionType = $ImpressionType;
     $BannerPreview->IsMobile = $ismobile;
     $BannerPreview->IABSize = $iabsize;
     $BannerPreview->Height = $height;
     $BannerPreview->Width = $width;
     $BannerPreview->Weight = $weight == null ? 5 : $weight;
     $BannerPreview->BidAmount = $bidamount;
     $BannerPreview->AdTag = trim($adtag);
     $BannerPreview->DeliveryType = 'js';
     $BannerPreview->LandingPageTLD = $landingpagetld;
     $BannerPreview->ImpressionsCounter = 0;
     $BannerPreview->BidsCounter = 0;
     $BannerPreview->CurrentSpend = 0;
     $BannerPreview->Active = 1;
     $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';
     $InsertionOrderLineItemPreviewFactory = \_factory\InsertionOrderLineItemPreview::get_instance();
     $banner_preview_id_new = $InsertionOrderLineItemPreviewFactory->saveInsertionOrderLineItemPreview($BannerPreview);
     if ($banner_preview_id_new != null) {
         $banner_preview_id = $banner_preview_id_new;
     }
     if ($BannerPreview->InsertionOrderLineItemPreviewID == null) {
         $BannerPreview->InsertionOrderLineItemPreviewID = $banner_preview_id;
     }
     $InsertionOrderLineItemVideoRestrictionsPreviewFactory = \_factory\InsertionOrderLineItemVideoRestrictionsPreview::get_instance();
     $InsertionOrderLineItemRestrictionsPreviewFactory = \_factory\InsertionOrderLineItemRestrictionsPreview::get_instance();
     if ($ImpressionType == 'video') {
         $params = array();
         $params["InsertionOrderLineItemPreviewID"] = $banner_preview_id;
         $InsertionOrderLineItemVideoRestrictionsPreview = $InsertionOrderLineItemVideoRestrictionsPreviewFactory->get_row($params);
         if ($InsertionOrderLineItemVideoRestrictionsPreview == null) {
             $InsertionOrderLineItemVideoRestrictionsPreview = new \model\InsertionOrderLineItemVideoRestrictionsPreview();
         }
         $InsertionOrderLineItemVideoRestrictionsPreview->InsertionOrderLineItemPreviewID = $banner_preview_id;
         $InsertionOrderLineItemVideoRestrictionsPreview->DateCreated = date("Y-m-d H:i:s");
         $InsertionOrderLineItemVideoRestrictionsPreview->MimesCommaSeparated = trim($mimes);
         $InsertionOrderLineItemVideoRestrictionsPreview->ProtocolsCommaSeparated = trim($protocols);
         $InsertionOrderLineItemVideoRestrictionsPreview->ApisSupportedCommaSeparated = trim($apis_supported);
         $InsertionOrderLineItemVideoRestrictionsPreview->DeliveryCommaSeparated = trim($delivery);
         $InsertionOrderLineItemVideoRestrictionsPreview->PlaybackCommaSeparated = trim($playback);
         $InsertionOrderLineItemVideoRestrictionsPreview->StartDelay = trim($start_delay);
         $InsertionOrderLineItemVideoRestrictionsPreview->Linearity = trim($linearity);
         $InsertionOrderLineItemVideoRestrictionsPreviewFactory->saveInsertionOrderLineItemVideoRestrictionsPreview($InsertionOrderLineItemVideoRestrictionsPreview);
         $InsertionOrderLineItemRestrictionsPreviewFactory->deleteInsertionOrderLineItemRestrictionsPreview($banner_preview_id);
     } else {
         $InsertionOrderLineItemVideoRestrictionsPreviewFactory->deleteInsertionOrderLineItemVideoRestrictionsPreview($banner_preview_id);
     }
     /*
      * Private Exchange Feeds
      * 
      * wipe out existing preview data first
      */
     $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory = \_factory\PmpDealPublisherWebsiteToInsertionOrderLineItemPreview::get_instance();
     $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory->deletePmpDealPublisherWebsiteToInsertionOrderLineItemByInsertionOrderLineItemPreviewID($banner_preview_id);
     foreach ($exchange_feeds as $raw_feed_data) {
         $raw_feed_data = rawurldecode($raw_feed_data);
         $exchange_feed_data = \util\AuthHelper::parse_feed_id($raw_feed_data);
         if ($exchange_feed_data === null) {
             continue;
         }
         $exchange_feed_id = intval($exchange_feed_data["id"]);
         $exchange_feed_description = $exchange_feed_data["description"];
         $is_local = false;
         if (!$this->is_super_admin) {
             $authorized = \util\AuthHelper::domain_user_authorized_px_publisher_website_passthru($this->config_handle, $this->auth->getUserID(), $exchange_feed_id, $is_local);
             if (!$authorized) {
                 $viewModel = new ViewModel(array('admin_email' => $this->config_handle['mail']['reply-to']['email'], 'refresh_url' => '/private-exchange/editlineitem/' . $banner_preview_id . '?ispreview=true'));
                 return $viewModel->setTemplate('dashboard-manager/demand/creditapp.phtml');
             }
         } else {
             $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance();
             $params = array();
             $params["PublisherWebsiteID"] = $exchange_feed_id;
             $PublisherWebsite = $PublisherWebsiteFactory->get_row_cached($this->config_handle, $params);
             $ret_val = \util\AuthHelper::domain_user_authorized_publisher_passthru($this->auth->getEffectiveUserID(), $PublisherWebsite->DomainOwnerID);
             if ($ret_val === true) {
                 $is_local = true;
             }
         }
         $params = array();
         $params["PublisherWebsiteID"] = $exchange_feed_id;
         $_PmpDealPublisherWebsiteToInsertionOrderLineItemPreview = $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory->get_row($params);
         $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview = new \model\PmpDealPublisherWebsiteToInsertionOrderLineItemPreview();
         if ($_PmpDealPublisherWebsiteToInsertionOrderLineItemPreview != null) {
             $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PmpDealPublisherWebsiteToInsertionOrderPreviewID = $_PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewID;
         }
         $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteID = $exchange_feed_id;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteLocal = $is_local;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->PublisherWebsiteDescription = $exchange_feed_description;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->InsertionOrderLineItemPreviewID = $banner_preview_id;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemPreview->Enabled = 1;
         $PmpDealPublisherWebsiteToInsertionOrderLineItemPreviewFactory->savePmpDealPublisherWebsiteToInsertionOrderLineItemPreview($PmpDealPublisherWebsiteToInsertionOrderLineItemPreview);
     }
     /*
      * SSP RTB Feeds
      * 
      * wipe out existing preview data first
      */
     $SspRtbChannelToInsertionOrderLineItemPreviewFactory = \_factory\SspRtbChannelToInsertionOrderLineItemPreview::get_instance();
     $SspRtbChannelToInsertionOrderLineItemPreviewFactory->deleteSspRtbChannelToInsertionOrderLineItemByInsertionOrderLineItemPreviewID($banner_preview_id);
     /*
      * If they are adding inventory from SSP RTB Channels
      * make sure they are approved for that
      */
     if (!$this->is_super_admin && count($ssp_feeds) >= 1) {
         if (!\util\CreditHelper::wasApprovedForSspRtbInventoryAuthUserID($this->auth->getUserID())) {
             $viewModel = new ViewModel(array('admin_email' => $this->config_handle['mail']['reply-to']['email'], 'refresh_url' => '/private-exchange/editlineitem/' . $banner_preview_id . '?ispreview=true'));
             return $viewModel->setTemplate('dashboard-manager/demand/creditapp.phtml');
         }
     }
     foreach ($ssp_feeds as $raw_feed_data) {
         $raw_feed_data = rawurldecode($raw_feed_data);
         $ssp_feed_data = \util\AuthHelper::parse_feed_id($raw_feed_data);
         if ($ssp_feed_data === null) {
             continue;
         }
         $ssp_feed_id = $ssp_feed_data["id"];
         $ssp_exchange = $ssp_feed_data["exchange"];
         $ssp_feed_id = str_replace('__COLON__', ':', $ssp_feed_id);
         $ssp_exchange = str_replace('__COLON__', ':', $ssp_exchange);
         $ssp_feed_description = $ssp_feed_data["description"];
         if (!$this->is_super_admin) {
             $authorized = \util\AuthHelper::domain_user_authorized_ssp_passthru($this->auth->getUserID(), $ssp_feed_id);
             if (!$authorized) {
                 die("You are not authorized to add inventory from SSP RTB Channel: " . $ssp_feed_id . ' - ' . $ssp_feed_description . " <br />Please contact an administrator for more information.");
             }
         }
         $params = array();
         $params["SspPublisherChannelID"] = $ssp_feed_id;
         $_SspRtbChannelToInsertionOrderLineItemPreview = $SspRtbChannelToInsertionOrderLineItemPreviewFactory->get_row($params);
         $SspRtbChannelToInsertionOrderLineItemPreview = new \model\SspRtbChannelToInsertionOrderLineItemPreview();
         if ($_SspRtbChannelToInsertionOrderLineItemPreview != null) {
             $SspRtbChannelToInsertionOrderLineItemPreview->SspRtbChannelToInsertionOrderLineItemPreviewID = $_SspRtbChannelToInsertionOrderLineItemPreview->SspRtbChannelToInsertionOrderLineItemPreviewID;
         }
         $SspRtbChannelToInsertionOrderLineItemPreview->SspPublisherChannelID = $ssp_feed_id;
         $SspRtbChannelToInsertionOrderLineItemPreview->SspPublisherChannelDescription = $ssp_feed_description;
         $SspRtbChannelToInsertionOrderLineItemPreview->SspExchange = $ssp_exchange;
         $SspRtbChannelToInsertionOrderLineItemPreview->InsertionOrderLineItemPreviewID = $banner_preview_id;
         $SspRtbChannelToInsertionOrderLineItemPreview->Enabled = 1;
         $SspRtbChannelToInsertionOrderLineItemPreviewFactory->saveSspRtbChannelToInsertionOrderLineItemPreview($SspRtbChannelToInsertionOrderLineItemPreview);
     }
     $refresh_url = "/private-exchange/viewlineitem/" . $BannerPreview->InsertionOrderPreviewID . "?ispreview=true";
     $viewModel = new ViewModel(array('refresh_url' => $refresh_url));
     return $viewModel->setTemplate('dashboard-manager/demand/interstitial.phtml');
 }
Exemple #2
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;
 }