Esempio n. 1
0
 /**
  * Ad Tag generation for zone.
  *
  * @return Ad Tag
  */
 public function generateTagAction()
 {
     $initialized = $this->initialize();
     if ($initialized !== true) {
         return $initialized;
     }
     $request = $this->getRequest();
     if ($request->isPost()) {
         $PublisherAdZoneID = $this->getRequest()->getPost('ad_id');
         $PublisherWebsiteID = intval($this->params()->fromRoute('param1', 0));
         $PublisherAdZoneFactory = \_factory\PublisherAdZone::get_instance();
         $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance();
         $params = array();
         $params["PublisherAdZoneID"] = $PublisherAdZoneID;
         $AdObject = $PublisherAdZoneFactory->get_row_object($params);
         $params = array();
         $params["PublisherWebsiteID"] = $PublisherWebsiteID;
         $PublishObject = $PublisherWebsiteFactory->get_row_object($params);
         $width = 0;
         $height = 0;
         $domain = $PublishObject->WebDomain;
         if ($AdObject->AdTemplateID != NULL && $AdObject->AdTemplateID != 0) {
             $AdTemplatesFactory = \_factory\AdTemplates::get_instance();
             $params = array();
             $params['AdTemplateID'] = $AdObject->AdTemplateID;
             $AdTemplatesObject = $AdTemplatesFactory->get_row_object($params);
             $height = $AdTemplatesObject->Height;
             $width = $AdTemplatesObject->Width;
         } else {
             $height = $AdObject->Height;
             $width = $AdObject->Width;
         }
         $delivery_adtag = $this->config_handle['delivery']['adtag'];
         $cache_buster = time();
         $effective_tag = "<script type='text/javascript' src='" . $delivery_adtag . "?pzoneid=" . $PublisherAdZoneID . "&height=" . $height . "&width=" . $width . "&tld=" . $domain . "&cb=" . $cache_buster . "'></script>";
         $data = array('result' => true, 'data' => array('tag' => htmlentities($effective_tag)));
         return $this->getResponse()->setContent(json_encode($data));
     }
 }
Esempio n. 2
0
 private function build_banner_request($config, $banner_request)
 {
     $banner_request_id = intval($banner_request["publisher_banner_id"]);
     $PublisherAdZoneFactory = \_factory\PublisherAdZone::get_instance();
     $params = array();
     $params["PublisherAdZoneID"] = $banner_request_id;
     $params["AdStatus"] = 1;
     $PublisherAdZone = $PublisherAdZoneFactory->get_row_cached($params);
     $PublisherWebsite = null;
     if ($PublisherAdZone == null) {
         return null;
     }
     $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance();
     $params = array();
     $params["PublisherWebsiteID"] = $PublisherAdZone->PublisherWebsiteID;
     $PublisherWebsite = $PublisherWebsiteFactory->get_row_cached($params);
     if ($PublisherWebsite == null) {
         return null;
     }
     /*
      * Produce the RTB request to our demand partners
      */
     $banner_request["PublisherAdZoneID"] = $PublisherAdZone->PublisherAdZoneID;
     $banner_request["AdName"] = $PublisherAdZone->AdName;
     $banner_request["WebDomain"] = $PublisherWebsite->WebDomain;
     if (!isset($banner_request["org_tld"]) || $banner_request["org_tld"] == null) {
         $banner_request["org_tld"] = $PublisherWebsite->WebDomain;
     }
     $banner_request["height"] = $PublisherAdZone->Height;
     $banner_request["width"] = $PublisherAdZone->Width;
     $banner_request["bidfloor"] = sprintf("%1.4f", $PublisherAdZone->FloorPrice);
     $banner_request["iab_category"] = $PublisherWebsite->IABCategory;
     $banner_request["iab_sub_category"] = $PublisherWebsite->IABSubCategory;
     $banner_request["website_id"] = $PublisherAdZone->PublisherWebsiteID;
     $banner_request["publisher_info_website"] = "example.com";
     // will be populated from the initial publisher signup.
     $banner_request["publisher_id"] = 1;
     // will be populated from the initial publisher signup.
     $banner_request["publisher_name"] = "Demo Publisher";
     // will be populated from the initial publisher signup.
     $banner_request["publisher_iab_category"] = null;
     $ip_address = isset($_SERVER['HTTP_X_REAL_IP']) && !empty($_SERVER['HTTP_X_REAL_IP']) ? $_SERVER['HTTP_X_REAL_IP'] : $_SERVER["REMOTE_ADDR"];
     $banner_request["ip_address"] = $ip_address;
     $banner_request["user_id"] = md5($banner_request["ip_address"]);
     $user_agent = isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"] : "";
     $banner_request["user_agent"] = $user_agent;
     $banner_request["language"] = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : null;
     /*
      * Device Type
      *
      * 1	 Mobile/Tablet
      * 2	 Personal	Computer
      */
     $detect = new \mobileutil\MobileDetect(null, $banner_request["user_agent"]);
     if ($detect->isMobile()) {
         $banner_request["devicetype"] = 1;
         if ($detect->is('iOS')) {
             $banner_request["mobile_os"] = "iOS";
             $banner_request["mobile_make"] = "Apple";
             if ($detect->isTablet()) {
                 $banner_request["mobile_model"] = "iPad";
             } else {
                 $banner_request["mobile_model"] = "iPhone";
             }
         } elseif ($detect->is('AndroidOS') || $detect->is('Chrome')) {
             $banner_request["mobile_os"] = "Android";
         }
     } else {
         $banner_request["devicetype"] = 2;
     }
     return $banner_request;
 }
Esempio n. 3
0
 public function deletewebsiteAction()
 {
     $initialized = $this->initialize();
     if ($initialized !== true) {
         return $initialized;
     }
     $auth = $this->getServiceLocator()->get('AuthService');
     if (!$auth->hasIdentity()) {
         return $this->redirect()->toRoute('login');
     }
     $success = false;
     $msg = null;
     $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance();
     $PublisherAdZoneFactory = \_factory\PublisherAdZone::get_instance();
     $publisher_website_data = null;
     $request = $this->getRequest();
     if ($request->isPost()) {
         $website_id = intval($request->getPost('website_id'));
         if ($this->auth->isDomainAdmin($this->config_handle)) {
             $authorized = \util\AuthHelper::domain_user_authorized_publisher_website($this->auth->getUserID(), $website_id);
             if ($authorized === true) {
                 $params = array();
                 $params["PublisherWebsiteID"] = $website_id;
                 $publisher_website_data = $PublisherWebsiteFactory->get_row($params);
             }
         } else {
             $params = array();
             $params["PublisherWebsiteID"] = $website_id;
             $params["DomainOwnerID"] = $this->auth->getPublisherInfoID();
             $publisher_website_data = $PublisherWebsiteFactory->get_row($params);
         }
         if ($publisher_website_data == null) {
             $msg = 'Authorization Error.';
         } else {
             $success = true;
             $PublisherWebsiteFactory->delete_domain($website_id);
             $params = array();
             $params['PublisherWebsiteID'] = $website_id;
             $PublisherAdZoneList = $PublisherAdZoneFactory->get($params);
             foreach ($PublisherAdZoneList as $PublisherAdZone) {
                 $PublisherAdZoneFactory->delete_zone(intval($PublisherAdZone->PublisherAdZoneID));
             }
             $msg = '"' . $publisher_website_data->WebDomain . '" removed successfully.';
         }
     }
     $data = array('success' => $success, 'data' => array('msg' => $msg));
     $this->setJsonHeader();
     return $this->getResponse()->setContent(json_encode($data));
 }
Esempio n. 4
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');
 }
Esempio n. 5
0
 public static function domain_user_authorized_publisher_website($parent_id, $publisher_website_id)
 {
     $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance();
     $params = array();
     $params["PublisherWebsiteID"] = $publisher_website_id;
     $PublisherWebsite = $PublisherWebsiteFactory->get_row($params);
     if (!\util\AuthHelper::domain_user_authorized_publisher($parent_id, $PublisherWebsite->DomainOwnerID)) {
         die("You are not authorized to perform this action: CODE 101");
     }
     return true;
 }
Esempio n. 6
0
 private function add_publisher_website_request_params($config, &$banner_request, &$PublisherAdZone)
 {
     $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance();
     $params = array();
     $params["PublisherWebsiteID"] = $PublisherAdZone->PublisherWebsiteID;
     $PublisherWebsite = $PublisherWebsiteFactory->get_row_cached($config, $params);
     if ($PublisherWebsite == null) {
         return;
     }
     $banner_request["WebDomain"] = $PublisherWebsite->WebDomain;
     $banner_request["iab_category"] = array($PublisherWebsite->IABCategory);
     $banner_request["iab_sub_category"] = array($PublisherWebsite->IABSubCategory);
     $banner_request["website_name"] = $PublisherWebsite->Description;
     if (!isset($banner_request["org_tld"]) || $banner_request["org_tld"] == null) {
         $banner_request["org_tld"] = $PublisherWebsite->WebDomain;
     }
 }
Esempio n. 7
0
 /**
  * Show the editing of a domain and process it.
  * 
  * @return multitype:string  \DashboardManager\model\PublisherWebsite |multitype:Ambigous <NULL, string>  \DashboardManager\model\PublisherWebsite
  */
 public function editdomainAction()
 {
     $error_message = null;
     $initialized = $this->initialize();
     if ($initialized !== true) {
         return $initialized;
     }
     $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance();
     $editResultObj = new \model\PublisherWebsite();
     $needed_input = array('WebDomain', 'Description');
     // Check to make sure the value is valid to begin with.
     $PublisherWebsiteID = intval($this->params()->fromRoute('param1', 0));
     if ($PublisherWebsiteID > 0) {
         // Only modify entries that belong to the user.
         $parameters = array("PublisherWebsiteID" => $PublisherWebsiteID, "DomainOwnerID" => $this->PublisherInfoID);
         $editResultObj = $PublisherWebsiteFactory->get_row_object($parameters);
         $request = $this->getRequest();
         // Check to make sure this entry exists for editing and make sure the user owns this entry.
         // Prevent the display of entries that the user does not own or have access.
         if (intval($editResultObj->PublisherWebsiteID) == $PublisherWebsiteID && $editResultObj->DomainOwnerID == $this->PublisherInfoID) {
             if ($request->isPost()) {
                 $validate = $this->validateInput($needed_input, false);
                 if ($validate && $editResultObj->DomainOwnerID == $this->PublisherInfoID) {
                     $web_domain = $request->getPost("WebDomain");
                     $description = $request->getPost("Description");
                     $iab_category = $request->getPost("IABCategory");
                     // Check if an entry exists with the same name. A NULL means there is no duplicate.
                     //if ($PublisherWebsiteFactory->get_row(array("WebDomain" => $web_domain)) === null):
                     $editResultObj->WebDomain = $web_domain;
                     $editResultObj->Description = $description;
                     $editResultObj->IABCategory = $iab_category;
                     try {
                         $PublisherWebsiteFactory->save_domain($editResultObj);
                         return $this->redirect()->toRoute('publisher');
                     } catch (\Zend\Db\Adapter\Exception\InvalidQueryException $e) {
                         $error_msg = "ERROR: A database error has occurred, please contact customer service.";
                     }
                     //else:
                     //$error_msg = "ERROR: A duplicate Web Domain may exist. Please try another.";
                     // endif;
                 } else {
                     $error_message = "ERROR: Required fields are not filled in or invalid input.";
                 }
             }
             // Valid entry, show edit.
         } else {
             $error_message = "ERROR: The specified domain entry ID was not found or you do not have permission to edit this entry.";
             return $this->redirect()->toRoute('publisher');
         }
     } else {
         $error_message = "An invalid domain entry ID was provided.";
         return $this->redirect()->toRoute('publisher');
     }
     return array('error_message' => $error_message, 'is_admin' => $this->is_admin, 'user_id_list' => $this->user_id_list_publisher, 'effective_id' => $this->auth->getEffectiveIdentityID(), 'impersonate_id' => $this->ImpersonateID, 'true_user_name' => $this->true_user_name, 'editResultObj' => $editResultObj, 'vertical_map' => \util\DeliveryFilterOptions::$vertical_map, 'dashboard_view' => 'publisher', 'user_identity' => $this->identity(), 'header_title' => 'Edit Domain');
 }
Esempio n. 8
0
 public function privateexchangeAction()
 {
     $initialized = $this->initialize();
     if ($initialized !== true) {
         return $initialized;
     }
     $PrivateExchangeRtbChannelDailyStatsRollUpPxFilterFactory = \_factory\PrivateExchangeRtbChannelDailyStatsRollUpPxFilter::get_instance();
     $params = array();
     if ($this->auth->isSuperAdmin($this->config_handle)) {
         $params["ParentID"] = $this->auth->getEffectiveIdentityID();
     } else {
         $params["ParentID"] = $this->auth->getUserID();
     }
     $PrivateExchangeRtbChannelDailyStatsRollUpPxFilterList = $PrivateExchangeRtbChannelDailyStatsRollUpPxFilterFactory->get($params);
     $insertion_order_id = $this->getRequest()->getQuery('insertion-order-id');
     if ($insertion_order_id != null) {
         $insertion_order_id = intval($insertion_order_id);
         $markup_rate = \util\Markup::getMarkupRateByInsertionOrderIDAndUserID($insertion_order_id, $this->auth->getEffectiveIdentityID(), $this->config_handle);
     } else {
         $user_markup = \util\Markup::getMarkupForUser($this->auth->getEffectiveIdentityID(), $this->config_handle, false);
         if ($user_markup != null) {
             $markup_rate = $user_markup->MarkupRate;
         } else {
             $markup_rate = $this->config_handle['system']['default_demand_markup_rate'];
         }
     }
     $data = array();
     $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance();
     foreach ($PrivateExchangeRtbChannelDailyStatsRollUpPxFilterList as $PrivateExchangeRtbChannelDailyStatsRollUpPxFilter) {
         $site_id = $PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->PublisherWebsiteID;
         $site_name = $PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->RtbChannelSiteName;
         if (strlen($site_name) > 20) {
             $site_name = substr($site_name, 0, 20) . '&hellip;';
         }
         $publisher_name = $PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->PublisherName;
         if (strlen($publisher_name) > 20) {
             $publisher_name = substr($publisher_name, 0, 20) . '&hellip;';
         }
         $label_name = $PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->WebDomain . " - " . $site_name . " - " . $publisher_name;
         $adusted_floor_price = "";
         if ($PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->BidFloor) {
             $floor_price = floatval($PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->BidFloor);
             $params = array();
             $params["PublisherWebsiteID"] = $site_id;
             $PublisherWebsite = $PublisherWebsiteFactory->get_row_cached($this->config_handle, $params);
             if ($PublisherWebsite == null) {
                 continue;
             }
             // floor should be marked up by the private exchange domain admin rate for this publisher and website
             $px_markup_rate_for_publisher = \util\Markup::getPrivateExchangePublisherMarkupRate($site_id, $PublisherWebsite->DomainOwnerID, $this->config_handle);
             $mark_up = $floor_price * floatval($px_markup_rate_for_publisher);
             $adusted_floor_price = floatval($floor_price) + floatval($mark_up);
             // floor should be marked up by the global exchange rate for this publisher and website
             $exchange_markup_rate_for_publisher = \util\Markup::getPublisherMarkupRate($site_id, $PublisherWebsite->DomainOwnerID, $this->config_handle);
             $mark_up = $adusted_floor_price * floatval($exchange_markup_rate_for_publisher);
             $adusted_floor_price = floatval($adusted_floor_price) + floatval($mark_up);
             // floor should be marked up by the IO markup rate
             // Approximation: actual implementation is mark-down in buyrtb\workflows\OpenRTBWorkflow
             $mark_up = $adusted_floor_price * floatval($markup_rate);
             $adusted_floor_price = floatval($adusted_floor_price) + floatval($mark_up);
             $adusted_floor_price = sprintf("%1.2f", $adusted_floor_price);
         }
         $row = array(" " => '<input type="checkbox" labelname="' . rawurlencode($label_name) . '" class="ckssp" name="ckssp[]" value="' . rawurlencode($PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->PublisherWebsiteID . '::' . $label_name) . '" />', "Site ID" => $site_id, "Domain" => $PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->WebDomain, "Name" => $site_name, "IAB Cat" => $PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->IABCategory, "Daily Imps" => number_format($PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->ImpressionsOfferedCounter), "Average CPM" => $PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->BidTotalAverage, "Floor" => $adusted_floor_price, "Exchange" => $PrivateExchangeRtbChannelDailyStatsRollUpPxFilter->BuySidePartnerName);
         $data[] = $row;
     }
     $this->setJsonHeader();
     return $this->getResponse()->setContent(json_encode(array("data" => $data)));
 }
Esempio n. 9
0
 public function listAction()
 {
     $initialized = $this->initialize();
     if ($initialized !== true) {
         return $initialized;
     }
     if (!$this->auth->hasIdentity()) {
         return $this->redirect()->toRoute('login');
     } elseif (!$this->is_super_admin) {
         return $this->redirect()->toRoute('publisher');
     }
     $publisher_id = intval($this->params()->fromRoute('param1', 0));
     $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance();
     $PublisherInfoFactory = \_factory\PublisherInfo::get_instance();
     $orders = 'DateCreated DESC';
     $params = array();
     $params["DomainOwnerID"] = $publisher_id;
     $pending_list = $PublisherWebsiteFactory->get($params, $orders);
     $view = new ViewModel(array('dashboard_view' => 'account', 'pending_list' => $pending_list, 'PublisherInfoFactory' => $PublisherInfoFactory, 'vertical_map' => \util\DeliveryFilterOptions::$vertical_map, 'user_id_list' => $this->user_id_list, 'user_identity' => $this->identity(), 'true_user_name' => $this->auth->getUserName(), 'header_title' => 'Websites', 'is_super_admin' => $this->is_super_admin, 'effective_id' => $this->auth->getEffectiveIdentityID(), 'impersonate_id' => $this->ImpersonateID));
     return $view;
 }