Exemplo n.º 1
0
 /**
  * This method returns banner 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>bannerID integer</b> The ID of the banner
  *   <li><b>bannerName string (255)</b> The name of the banner
  *   <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 otherwise.
  *
  */
 function getAdvertiserBannerStatistics($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->getAdvertiserBannerStatistics($advertiserId, $oStartDate, $oEndDate, $localTZ);
         return true;
     } else {
         return false;
     }
 }
Exemplo n.º 2
0
 /**
  * Test advertiser banner statistics.
  *
  */
 function testGetAdvertiserBannerStatistics()
 {
     $doAgency = OA_Dal::factoryDO('agency');
     $doAdvertiser = OA_Dal::factoryDO('clients');
     $doCampaign = OA_Dal::factoryDO('campaigns');
     $doBanner1 = OA_Dal::factoryDO('banners');
     $doBanner2 = OA_Dal::factoryDO('banners');
     $doAdvertiser->clientname = "Advertiser name";
     $doCampaign->campaignname = "Campaign Name";
     $doBanner1->description = "Banner Name 1";
     $this->generateBannerWithParents($doAgency, $doAdvertiser, $doCampaign, $doBanner1);
     $doBanner2->description = "Banner name 2";
     $this->generateBannerForCampaign($doCampaign, $doBanner2);
     $doDataSummaryAdHourly = OA_Dal::factoryDO('data_summary_ad_hourly');
     $doDataSummaryAdHourly->impressions = 1;
     $doDataSummaryAdHourly->requests = 0;
     $doDataSummaryAdHourly->total_revenue = 0;
     $doDataSummaryAdHourly->clicks = 0;
     $doDataSummaryAdHourly->date_time = '2007-01-01';
     $this->generateDataSummaryAdHourlyForBanner($doDataSummaryAdHourly, $doBanner1);
     $doDataSummaryAdHourly->impressions = 0;
     $doDataSummaryAdHourly->requests = 4;
     $doDataSummaryAdHourly->total_revenue = 6;
     $doDataSummaryAdHourly->clicks = 7;
     $doDataSummaryAdHourly->date_time = '2007-02-01';
     $this->generateDataSummaryAdHourlyForBanner($doDataSummaryAdHourly, $doBanner2);
     $doDataSummaryAdHourly->impressions = 0;
     $doDataSummaryAdHourly->requests = 16;
     $doDataSummaryAdHourly->total_revenue = 4;
     $doDataSummaryAdHourly->clicks = 33;
     $doDataSummaryAdHourly->date_time = '2007-04-01';
     $this->generateDataSummaryAdHourlyForBanner($doDataSummaryAdHourly, $doBanner2);
     // 1. Get data existing range
     $rsAdvertiserDailyStatistics = $this->_dalAdvertiserStatistics->getAdvertiserBannerStatistics($doAdvertiser->clientid, new Date('2006-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, 'bannerid', $doBanner1->bannerid);
     // 2. Check return fields names
     $this->assertFieldExists($aRow1, 'campaignid');
     $this->assertFieldExists($aRow1, 'campaignname');
     $this->assertFieldExists($aRow1, 'bannerid');
     $this->assertFieldExists($aRow1, 'bannername');
     $this->assertFieldExists($aRow1, 'requests');
     $this->assertFieldExists($aRow1, 'impressions');
     $this->assertFieldExists($aRow1, 'clicks');
     $this->assertFieldExists($aRow1, 'revenue');
     $this->assertFieldExists($aRow2, 'campaignid');
     $this->assertFieldExists($aRow2, 'campaignname');
     $this->assertFieldExists($aRow2, 'bannerid');
     $this->assertFieldExists($aRow2, 'bannername');
     $this->assertFieldExists($aRow2, 'requests');
     $this->assertFieldExists($aRow2, 'impressions');
     $this->assertFieldExists($aRow2, 'clicks');
     $this->assertFieldExists($aRow2, 'revenue');
     // 3. Check return fields value
     $this->assertFieldEqual($aRow1, 'impressions', 1);
     $this->assertFieldEqual($aRow1, 'requests', 0);
     $this->assertFieldEqual($aRow1, 'revenue', 0.0);
     $this->assertFieldEqual($aRow1, 'clicks', 0);
     $this->assertFieldEqual($aRow1, 'campaignname', $doCampaign->campaignname);
     $this->assertFieldEqual($aRow1, 'bannername', $doBanner1->description);
     $this->assertFieldEqual($aRow2, 'impressions', 0);
     $this->assertFieldEqual($aRow2, 'requests', 20);
     $this->assertFieldEqual($aRow2, 'revenue', 10.0);
     $this->assertFieldEqual($aRow2, 'clicks', 40);
     $this->assertFieldEqual($aRow2, 'campaignname', $doCampaign->campaignname);
     $this->assertFieldEqual($aRow2, 'bannername', $doBanner2->description);
     // 4. Get data in not existing range
     $rsAdvertiserBannerStatistics = $this->_dalAdvertiserStatistics->getAdvertiserBannerStatistics($doAdvertiser->clientid, new Date('2001-12-01'), new Date('2006-09-19'));
     $rsAdvertiserBannerStatistics->find();
     $this->assertTrue($rsAdvertiserBannerStatistics->getRowCount() == 0, 'Recordset should be empty');
 }