/** * Take impressions from today's/yesterday's statistics and use them to augment the overall statistics. * * This step is only necessary because the underlying query builder is incapable of * joining a table to itself, which would be necessary to gather today's impressions * at the same time as those for the whole period. * * @access private * @param array $aReportData The result of * {@link Plugins_Reports_Standard_LiveCampaignDeliveryReport::_getDeliveryPerformanceDataRange()} * for the report period. * @param array $aYesterdayData The result of * {@link Plugins_Reports_Standard_LiveCampaignDeliveryReport::_getDeliveryPerformanceDataRange()} * for "yesterday". * @param OA_Admin_DaySpan $oSpanYesterday The OA_Admin_DaySpan object for "yesterday". * @param array $aTodayData The result of * {@link Plugins_Reports_Standard_LiveCampaignDeliveryReport::_getDeliveryPerformanceDataRange()} * for "today". * @param OA_Admin_DaySpan $oSpanToday The OA_Admin_DaySpan object for "today". * @return array An array of campaign information as per the $aReportData array, but also * including 'yesterdays_impressions' and 'todays_impressions', as well as * an hourly breakdown of "yesterday's" and "today's" impressions in hourly * format in 'yesterdays_impressions_by_hour' and 'todays_impressions_by_hour'. */ function _mergeDeliveryPerformanceData($aReportData, $aYesterdayData, $oSpanYesterday, $aTodayData, $oSpanToday) { $aData = array(); foreach ($aReportData as $aCampaignData) { $campaignId = $aCampaignData['campaign_id']; // Add yesterday's impressions to the campaign report period data $aCampaignDataYesterday = $this->_findMatchingCampaignData($campaignId, $aYesterdayData); $yesterdaysImpressions = $aCampaignDataYesterday['campaign_impressions']; $aCampaignData['yesterdays_impressions'] = $yesterdaysImpressions; // Get and add yesterday's impressions by hour $yesterdayDateString = $oSpanYesterday->getStartDateString(); $aYesterdaysImpressionsByHour = Admin_DA::getHourHistory(array('placement_id' => $campaignId, 'day_begin' => $yesterdayDateString, 'day_end' => $yesterdayDateString)); $aCampaignData['yesterdays_impressions_by_hour'] = $aYesterdaysImpressionsByHour; // Add today's impressions to the campaign report period data $aCampaignDataToday = $this->_findMatchingCampaignData($campaignId, $aTodayData); $todaysImpressions = $aCampaignDataToday['campaign_impressions']; $aCampaignData['todays_impressions'] = $todaysImpressions; // Get and add today's impressions by hour $todayDateString = $oSpanToday->getStartDateString(); $aTodaysImpressionsByHour = Admin_DA::getHourHistory(array('placement_id' => $campaignId, 'day_begin' => $todayDateString, 'day_end' => $todayDateString)); $aCampaignData['todays_impressions_by_hour'] = $aTodaysImpressionsByHour; // Add the newly merged data for this campaign to the return array $aData[] = $aCampaignData; } return $aData; }