/** * Test advertiser campaign statistics. * */ function testGetAdvertiserCampaignStatistics() { $doAgency = OA_Dal::factoryDO('agency'); $doAdvertiser = OA_Dal::factoryDO('clients'); $doCampaign1 = OA_Dal::factoryDO('campaigns'); $doBanner1 = OA_Dal::factoryDO('banners'); $doCampaign1->campaignname = 'Test name 1'; $this->generateBannerWithParents($doAgency, $doAdvertiser, $doCampaign1, $doBanner1); $doCampaign2 = OA_Dal::factoryDO('campaigns'); $doBanner2 = OA_Dal::factoryDO('banners'); $doCampaign2->campaignname = 'Test name 2'; $this->generateBannerAndCampaignForAdvertiser($doAdvertiser, $doCampaign2, $doBanner2); $doBanner3 = OA_Dal::factoryDO('banners'); $this->generateBannerForCampaign($doCampaign2, $doBanner3); $doDataSummaryAdHourly = OA_Dal::factoryDO('data_summary_ad_hourly'); $doDataSummaryAdHourly->requests = 2; $doDataSummaryAdHourly->total_revenue = 5; $doDataSummaryAdHourly->clicks = 0; $doDataSummaryAdHourly->date_time = '2007-09-01'; $this->generateDataSummaryAdHourlyForBanner($doDataSummaryAdHourly, $doBanner1); $doDataSummaryAdHourly->requests = 4; $doDataSummaryAdHourly->total_revenue = 6; $doDataSummaryAdHourly->clicks = 7; $doDataSummaryAdHourly->date_time = '2007-08-29'; $this->generateDataSummaryAdHourlyForBanner($doDataSummaryAdHourly, $doBanner2); $doDataSummaryAdHourly->requests = 4; $doDataSummaryAdHourly->total_revenue = 8; $doDataSummaryAdHourly->clicks = 6; $doDataSummaryAdHourly; $this->generateDataSummaryAdHourlyForBanner($doDataSummaryAdHourly, $doBanner3); // 1. Get data existing range $rsAdvertiserDailyStatistics = $this->_dalAdvertiserStatistics->getAdvertiserCampaignStatistics($doAdvertiser->clientid, new Date('2007-07-07'), new Date('2007-09-12')); $rsAdvertiserDailyStatistics->find(); $this->assertTrue($rsAdvertiserDailyStatistics->getRowCount() == 2, '2 records should be returned'); $rsAdvertiserDailyStatistics->fetch(); $aRow1 = $rsAdvertiserDailyStatistics->toArray(); $rsAdvertiserDailyStatistics->fetch(); $aRow2 = $rsAdvertiserDailyStatistics->toArray(); $this->ensureRowSequence($aRow1, $aRow2, 'campaignid', $doCampaign1->campaignid); // 2. Check return fields names $this->assertFieldExists($aRow1, 'campaignid'); $this->assertFieldExists($aRow1, 'campaignname'); $this->assertFieldExists($aRow1, 'requests'); $this->assertFieldExists($aRow1, 'impressions'); $this->assertFieldExists($aRow1, 'clicks'); $this->assertFieldExists($aRow1, 'revenue'); // 3. Check return fields value $this->assertFieldEqual($aRow1, 'requests', 2); $this->assertFieldEqual($aRow1, 'revenue', 5.0); $this->assertFieldEqual($aRow1, 'campaignname', $doCampaign1->campaignname); $this->assertFieldEqual($aRow2, 'requests', 8); $this->assertFieldEqual($aRow2, 'revenue', 14.0); $this->assertFieldEqual($aRow2, 'clicks', 13); $this->assertFieldEqual($aRow2, 'campaignname', $doCampaign2->campaignname); // 4. Get data in not existing range $rsAdvertiserCampaignStatistics = $this->_dalAdvertiserStatistics->getAdvertiserCampaignStatistics($doAdvertiser->clientid, new Date('2001-12-01'), new Date('2006-09-19')); $rsAdvertiserCampaignStatistics->find(); $this->assertTrue($rsAdvertiserCampaignStatistics->getRowCount() == 0, 'Recordset should be empty'); }
/** * This method returns campaign statistics for an advertiser for a specified period. * * @access public * * @param integer $advertiserId The ID of the advertiser to view statistics for * @param date $oStartDate The date from which to get statistics (inclusive) * @param date $oEndDate The date to which to get statistics (inclusive) * @param bool $localTZ Should stats be using the manager TZ or UTC? * @param array &$rsStatisticsData The data returned by the function * <ul> * <li><b>campaignID integer</b> The ID of the campaign * <li><b>campaignName string (255)</b> The name of the campaign * <li><b>requests integer</b> The number of requests for the day * <li><b>impressions integer</b> The number of impressions for the day * <li><b>clicks integer</b> The number of clicks for the day * <li><b>revenue decimal</b> The revenue earned for the day * </ul> * * @return boolean True if the operation was successful and false if not. * */ function getAdvertiserCampaignStatistics($advertiserId, $oStartDate, $oEndDate, $localTZ, &$rsStatisticsData) { if (!$this->checkStatisticsPermissions($advertiserId)) { return false; } if ($this->_validateForStatistics($advertiserId, $oStartDate, $oEndDate)) { $dalAdvertiser = new OA_Dal_Statistics_Advertiser(); $rsStatisticsData = $dalAdvertiser->getAdvertiserCampaignStatistics($advertiserId, $oStartDate, $oEndDate, $localTZ); return true; } else { return false; } }