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; }