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