/** * Display the publisher index page, and list all domains associated. * * @return \Zend\View\Model\ViewModel */ public function indexAction() { $initialized = $this->initialize(); if ($initialized !== true) { return $initialized; } //Pull list of websites. $PublisherWebsiteFactory = \_factory\PublisherWebsite::get_instance(); $parameters = array(); // Set the parameters to empty first. $parameters['DomainOwnerID'] = $this->PublisherInfoID; $publisher_markup_rate = $this->config_handle['system']['default_publisher_markup_rate']; $publisher_impressions_network_loss_rate = $this->config_handle['system']['default_publisher_impressions_network_loss_rate']; $PublisherWebsiteList = $PublisherWebsiteFactory->get($parameters); if ($this->is_admin) { $headers = array("#", "Domain", "Domain Markup", "Imps Loss Rate", "Domain Owner", "Created", "Updated", "Approval", "Actions"); $meta_data = array("WebDomain", "DomainMarkupRate", "DomainPublisherImpressionsLossRate", "DomainOwnerID", "DateCreated", "DateUpdated", "ApprovalFlag"); // admin is logged in as a user, get the markup if any for that user if ($this->ImpersonateID != 0 && !empty($this->PublisherInfoID)) { $publisher_markup = \util\Markup::getMarkupForPublisher($this->PublisherInfoID, $this->config_handle, false); if ($publisher_markup != null) { $publisher_markup_rate = $publisher_markup->MarkupRate; } $publisher_impressions_network_loss = \util\NetworkLossCorrection::getNetworkLossCorrectionRateForPublisher($this->PublisherInfoID, $this->config_handle, false); if ($publisher_impressions_network_loss != null) { $publisher_impressions_network_loss_rate = $publisher_impressions_network_loss->CorrectionRate; } } } else { $headers = array("#", "Domain", "Created", "Updated", "Approval", "Actions"); $meta_data = array("WebDomain", "AutoApprove", "DateCreated", "DateUpdated", "ApprovalFlag"); } foreach ($PublisherWebsiteList as $PublisherWebsite) { $website_markup = \util\Markup::getMarkupForPublisherWebsite($PublisherWebsite->PublisherWebsiteID, $this->config_handle, false); if ($website_markup != null) { $website_markup_rate_list[$PublisherWebsite->PublisherWebsiteID] = $website_markup->MarkupRate * 100; } else { $website_markup_rate_list[$PublisherWebsite->PublisherWebsiteID] = $publisher_markup_rate * 100; } $website_impressions_network_loss = \util\NetworkLossCorrection::getNetworkLossCorrectionRateForPublisherWebsite($PublisherWebsite->PublisherWebsiteID, $this->config_handle, false); if ($website_impressions_network_loss != null) { $website_impressions_network_loss_rate_list[$PublisherWebsite->PublisherWebsiteID] = $website_impressions_network_loss->CorrectionRate * 100; } else { $website_impressions_network_loss_rate_list[$PublisherWebsite->PublisherWebsiteID] = $publisher_impressions_network_loss_rate * 100; } } $PublisherInfoFactory = \_factory\PublisherInfo::get_instance(); $params = array(); $params["PublisherInfoID"] = $this->PublisherInfoID; $PublisherInfo = $PublisherInfoFactory->get_row($params); $publisher_markup_rate *= 100; $publisher_impressions_network_loss_rate *= 100; $view = new ViewModel(array('true_user_name' => $this->auth->getUserName(), 'domain_list_raw' => $PublisherWebsiteList, 'domain_list' => $this->order_data_table($meta_data, $PublisherWebsiteList, $headers), 'is_admin' => $this->is_admin, 'user_id_list' => $this->user_id_list_publisher, 'domain_owner' => isset($PublisherInfo->Name) ? $PublisherInfo->Name : "", 'impersonate_id' => $this->ImpersonateID, 'effective_id' => $this->auth->getEffectiveIdentityID(), 'publisher_info_id' => $this->PublisherInfoID, 'dashboard_view' => 'publisher', 'user_identity' => $this->identity(), 'publisher_markup_rate' => $publisher_markup_rate, 'publisher_impressions_network_loss_rate' => $publisher_impressions_network_loss_rate, 'website_markup_rate_list' => isset($website_markup_rate_list) ? $website_markup_rate_list : array(), 'website_impressions_network_loss_rate_list' => isset($website_impressions_network_loss_rate_list) ? $website_impressions_network_loss_rate_list : array())); if ($this->is_admin == false || $this->is_admin == true && $this->PublisherInfoID != null && $this->auth->getEffectiveIdentityID() != 0) { $view->header_title = '<a href="/publisher/createdomain">Create New Domain</a>'; } else { $view->header_title = ' '; } return $view; }
public static function getNetworkLossCorrectionRateFromPublisherAdZone($config, $publisher_ad_zone_id, &$network_loss_rate_list) { $PublisherAdZoneFactory = \_factory\PublisherAdZone::get_instance(); $params = array(); $params['PublisherAdZoneID'] = $publisher_ad_zone_id; $PublisherAdZone = $PublisherAdZoneFactory->get_row($params); if ($PublisherAdZone === null) { return 0; } $publisher_info_id = $PublisherAdZone->AdOwnerID; $publisher_website_id = $PublisherAdZone->PublisherWebsiteID; $hash_key = $publisher_info_id . '-' . $publisher_website_id; if (isset($network_loss_rate_list[$hash_key])) { $publisher_impressions_network_loss_rate = $network_loss_rate_list[$hash_key]; } else { $publisher_impressions_network_loss_rate = \util\NetworkLossCorrection::getPublisherNetworkLossCorrectionRate($publisher_website_id, $publisher_info_id, $config, false); $network_loss_rate_list[$hash_key] = $publisher_impressions_network_loss_rate; } return $publisher_impressions_network_loss_rate; }
public function get($params = null) { // http://files.zend.com/help/Zend-Framework/zend.db.select.html $obj_list = array(); $resultSet = $this->select(function (\Zend\Db\Sql\Select $select) use($params) { foreach ($params as $name => $value) { $select->where($select->where->equalTo($name, $value)); } //$select->limit(10, 0); $select->order('PublisherAdZoneID'); }); foreach ($resultSet as $obj) { $publisher_impressions_network_loss_rate = \util\NetworkLossCorrection::getNetworkLossCorrectionRateFromPublisherAdZone($this->config, $obj->PublisherAdZoneID, $this->network_loss_rate_list); if ($publisher_impressions_network_loss_rate > 0) { $obj->TotalRequests = \util\NetworkLossCorrection::correctAmountWithNetworkLossCorrectionRateInteger($publisher_impressions_network_loss_rate, $obj->TotalRequests); $obj->TotalImpressions = \util\NetworkLossCorrection::correctAmountWithNetworkLossCorrectionRateInteger($publisher_impressions_network_loss_rate, $obj->TotalImpressions); $obj->TotalRevenue = \util\NetworkLossCorrection::correctAmountWithNetworkLossCorrectionRateMoney($publisher_impressions_network_loss_rate, $obj->TotalRevenue); } $obj_list[] = $obj; } return $obj_list; }
public function getPerTime($where_params = null, $is_super_admin = false, $is_domain_admin = false) { $obj_list = array(); $low_range = $high_range = time(); if (!empty($where_params['DateCreatedGreater'])) { $low_range = strtotime($where_params['DateCreatedGreater']); } if (!empty($where_params['DateCreatedLower'])) { $high_range = strtotime($where_params['DateCreatedLower']); } $date_span = $high_range - $low_range; // if span is greater than 2 days switch to custom reporting format $switch_to_custom_threshold = 2 * 86400; if ($date_span > $switch_to_custom_threshold) { return $this->getPerTimeCustom($where_params, $is_super_admin, $is_domain_admin); } $sql = new Sql($this->adapter); $select = $sql->select(); $select->from('PublisherImpressionsAndSpendHourly'); if (!empty($where_params['DateCreatedGreater'])) { $select->where($select->where->greaterThanOrEqualTo('DateCreated', $where_params['DateCreatedGreater'])); } if (!empty($where_params['DateCreatedLower'])) { $select->where($select->where->lessThanOrEqualTo('DateCreated', $where_params['DateCreatedLower'])); } foreach ($where_params as $name => $value) { if ($name != 'DateCreatedLower' && $name != 'DateCreatedGreater') { $select->where($select->where->equalTo($name, $value)); } } $statement = $sql->prepareStatementForSqlObject($select); $results = $statement->execute(); foreach ($results as $obj) { if ($is_super_admin) { if (empty($obj['GrossECPM'])) { $obj['GrossECPM'] = 0; } if (empty($obj['GrossExchangeECPM'])) { $obj['GrossExchangeECPM'] = 0; } } elseif ($is_domain_admin) { array_walk($obj, function ($item, $key) use(&$obj) { if (array_search($key, $this->domainAdminFields) !== FALSE) { $obj[$key] = FALSE; } }); $obj = array_filter($obj, function ($value) { return $value !== FALSE; }); } else { array_walk($obj, function ($item, $key) use(&$obj) { if (array_search($key, $this->adminFields) !== FALSE) { $obj[$key] = FALSE; } }); $obj = array_filter($obj, function ($value) { return $value !== FALSE; }); } $publisher_impressions_network_loss_rate = \util\NetworkLossCorrection::getNetworkLossCorrectionRateFromPublisherAdZone($this->config, $obj['PublisherAdZoneID'], $this->network_loss_rate_list); if (empty($obj['eCPM'])) { $obj['eCPM'] = 0; } if ($publisher_impressions_network_loss_rate > 0) { $obj['Requests'] = \util\NetworkLossCorrection::correctAmountWithNetworkLossCorrectionRateInteger($publisher_impressions_network_loss_rate, $obj['Requests']); $obj['Impressions'] = \util\NetworkLossCorrection::correctAmountWithNetworkLossCorrectionRateInteger($publisher_impressions_network_loss_rate, $obj['Impressions']); $obj['Revenue'] = \util\NetworkLossCorrection::correctAmountWithNetworkLossCorrectionRateMoney($publisher_impressions_network_loss_rate, $obj['Revenue']); if ($is_super_admin || $is_domain_admin) { $obj['GrossRevenue'] = \util\NetworkLossCorrection::correctAmountWithNetworkLossCorrectionRateMoney($publisher_impressions_network_loss_rate, $obj['GrossRevenue']); } if ($is_super_admin) { $obj['GrossExchangeECPM'] = \util\NetworkLossCorrection::correctAmountWithNetworkLossCorrectionRateMoney($publisher_impressions_network_loss_rate, $obj['GrossExchangeECPM']); } } $obj['MDYH'] = $this->re_normalize_time($obj['MDYH']); $obj_list[] = $obj; } return $obj_list; }