Exemplo n.º 1
0
 /**
  * Test tGetCampaignConversionStatistics.
  *
  */
 function testGetCampaignConversionStatistics()
 {
     $doBanner = OA_Dal::factoryDO('banners');
     $doCampaign = OA_Dal::factoryDO('campaigns');
     $campaignId = DataGenerator::generateOne($doCampaign);
     $doBanner->campaignid = $campaignId;
     $bannerId = DataGenerator::generateOne($doBanner);
     // Test 1: Test with no data
     $oStartDate = new Date('2004-06-06 12:00:00');
     $oEndDate = new Date('2004-06-06 12:59:59');
     $aResult = $this->_dalCampaignStatistics->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate);
     $this->assertEmpty($aResult, 'No records should be returned');
     // Test 2: Test with data that is outside the range to manage
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->tracker_date_time = '2004-06-05 11:59:59';
     $doData_intermediate_ad_connection->tracker_id = 501;
     $doData_intermediate_ad_connection->ad_id = $bannerId;
     $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1';
     $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK;
     $doData_intermediate_ad_connection->connection_window = 3600;
     $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED;
     $connectionId1 = DataGenerator::generateOne($doData_intermediate_ad_connection);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId1;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 1;
     $doData_intermediate_ad_variable_value->value = 'test_value1';
     $conecctionVariableValueId = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId1;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 2;
     $doData_intermediate_ad_variable_value->value = 'test_value2';
     $conecctionVariableValueId2 = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $doVariables = OA_Dal::factoryDO('variables');
     $doVariables->variableid = 1;
     $doVariables->trackerid = 501;
     $doVariables->name = 'test_variable1_name';
     DataGenerator::generateOne($doVariables);
     $doVariables = OA_Dal::factoryDO('variables');
     $doVariables->variableid = 2;
     $doVariables->trackerid = 501;
     $doVariables->name = 'test_variable2_name';
     DataGenerator::generateOne($doVariables);
     $aResult = $this->_dalCampaignStatistics->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate);
     // Get 0 Row
     $this->assertEmpty($aResult, '0 records should be returned');
     // Test 3: Test with data that is inside the range to manage,
     //         with corresponding data_intermediate_ad_connection rows
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:15:00';
     $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 12:14:58';
     $doData_intermediate_ad_connection->tracker_id = 501;
     $doData_intermediate_ad_connection->ad_id = $bannerId;
     $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1';
     $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK;
     $doData_intermediate_ad_connection->connection_window = 3600;
     $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED;
     $connectionId2 = DataGenerator::generateOne($doData_intermediate_ad_connection);
     $aResult = $this->_dalCampaignStatistics->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate);
     // Get 1 Row
     $this->assertEqual(1, count($aResult), '1 records should be returned');
     // Check return fields names
     $aConversion = current($aResult);
     $this->assertFieldExists($aConversion, 'campaignID');
     $this->assertFieldExists($aConversion, 'trackerID');
     $this->assertFieldExists($aConversion, 'bannerID');
     $this->assertFieldExists($aConversion, 'conversionTime');
     $this->assertFieldExists($aConversion, 'conversionStatus');
     $this->assertFieldExists($aConversion, 'userIp');
     $this->assertFieldExists($aConversion, 'action');
     $this->assertFieldExists($aConversion, 'window');
     $this->assertFieldExists($aConversion, 'variables');
     // Check return fields value
     $this->assertFieldEqual($aConversion, 'campaignID', $campaignId);
     $this->assertFieldEqual($aConversion, 'trackerID', 501);
     $this->assertFieldEqual($aConversion, 'bannerID', $bannerId);
     $this->assertFieldEqual($aConversion, 'conversionTime', '2004-06-06 12:15:00');
     $this->assertFieldEqual($aConversion, 'conversionStatus', MAX_CONNECTION_STATUS_APPROVED);
     $this->assertFieldEqual($aConversion, 'userIp', '127.0.0.1');
     $this->assertFieldEqual($aConversion, 'action', MAX_CONNECTION_AD_CLICK);
     $this->assertFieldEqual($aConversion, 'window', '2');
     // Conversion without variables
     $this->assertEmpty($aConversion['variables']);
     // Test 4: Test with data that is inside the range to manage and with
     //         2 conversions
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId2;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 1;
     $doData_intermediate_ad_variable_value->value = 'test_value3';
     $conecctionVariableValueId = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId2;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 2;
     $doData_intermediate_ad_variable_value->value = 'test_value4';
     $conecctionVariableValueId2 = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:20:00';
     $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 12:19:57';
     $doData_intermediate_ad_connection->tracker_id = 501;
     $doData_intermediate_ad_connection->ad_id = $bannerId;
     $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.2';
     $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_IMPRESSION;
     $doData_intermediate_ad_connection->connection_window = 3600;
     $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED;
     $connectionId3 = DataGenerator::generateOne($doData_intermediate_ad_connection);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId3;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 1;
     $doData_intermediate_ad_variable_value->value = 'test_value5';
     $conecctionVariableValueId = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId3;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 2;
     $doData_intermediate_ad_variable_value->value = 'test_value6';
     $conecctionVariableValueId2 = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $aResult = $this->_dalCampaignStatistics->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate);
     // Get 2 Row
     $this->assertEqual(2, count($aResult), '2 records should be returned');
     $aConversion = current($aResult);
     // Check return fields value
     $this->assertFieldEqual($aConversion, 'campaignID', $campaignId);
     $this->assertFieldEqual($aConversion, 'trackerID', '501');
     $this->assertFieldEqual($aConversion, 'bannerID', $bannerId);
     $this->assertFieldEqual($aConversion, 'conversionTime', '2004-06-06 12:15:00');
     $this->assertFieldEqual($aConversion, 'conversionStatus', MAX_CONNECTION_STATUS_APPROVED);
     $this->assertFieldEqual($aConversion, 'userIp', '127.0.0.1');
     $this->assertFieldEqual($aConversion, 'action', MAX_CONNECTION_AD_CLICK);
     $this->assertFieldEqual($aConversion, 'window', '2');
     $aVariables = $aConversion['variables'];
     $this->assertFieldEqual($aVariables, 'test_variable1_name', 'test_value3');
     $this->assertFieldEqual($aVariables, 'test_variable2_name', 'test_value4');
     $aConversion = next($aResult);
     // Check return fields value
     $this->assertFieldEqual($aConversion, 'campaignID', $campaignId);
     $this->assertFieldEqual($aConversion, 'trackerID', '501');
     $this->assertFieldEqual($aConversion, 'bannerID', $bannerId);
     $this->assertFieldEqual($aConversion, 'conversionTime', '2004-06-06 12:20:00');
     $this->assertFieldEqual($aConversion, 'conversionStatus', MAX_CONNECTION_STATUS_APPROVED);
     $this->assertFieldEqual($aConversion, 'userIp', '127.0.0.2');
     $this->assertFieldEqual($aConversion, 'action', MAX_CONNECTION_AD_IMPRESSION);
     $this->assertFieldEqual($aConversion, 'window', '3');
     $aVariables = $aConversion['variables'];
     $this->assertFieldEqual($aVariables, 'test_variable1_name', 'test_value5');
     $this->assertFieldEqual($aVariables, 'test_variable2_name', 'test_value6');
     // Test 5: Test with data that is inside the range to manage but doesn't
     //         belong to the requested campaign
     $doBanner2 = OA_Dal::factoryDO('banners');
     $doCampaign2 = OA_Dal::factoryDO('campaigns');
     $campaignId2 = DataGenerator::generateOne($doCampaign2);
     $doBanner2->campaignid = $campaignId2;
     $bannerId2 = DataGenerator::generateOne($doBanner2);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:20:00';
     $doData_intermediate_ad_connection->tracker_id = 501;
     $doData_intermediate_ad_connection->ad_id = $bannerId2;
     $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.2';
     $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_IMPRESSION;
     $doData_intermediate_ad_connection->connection_window = 3600;
     $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED;
     $connectionId4 = DataGenerator::generateOne($doData_intermediate_ad_connection);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId4;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 1;
     $doData_intermediate_ad_variable_value->value = 'test_value7';
     $conecctionVariableValueId = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $aResult = $this->_dalCampaignStatistics->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate);
     // Get 2 Row
     $this->assertEqual(2, count($aResult), '2 records should be returned');
     $aConversion = current($aResult);
     // Check return fields value
     $this->assertFieldEqual($aConversion, 'campaignID', $campaignId);
     $this->assertFieldEqual($aConversion, 'trackerID', '501');
     $this->assertFieldEqual($aConversion, 'bannerID', $bannerId);
     $this->assertFieldEqual($aConversion, 'conversionTime', '2004-06-06 12:15:00');
     $this->assertFieldEqual($aConversion, 'conversionStatus', MAX_CONNECTION_STATUS_APPROVED);
     $this->assertFieldEqual($aConversion, 'userIp', '127.0.0.1');
     $this->assertFieldEqual($aConversion, 'action', MAX_CONNECTION_AD_CLICK);
     $this->assertFieldEqual($aConversion, 'window', '2');
     $aVariables = $aConversion['variables'];
     $this->assertFieldEqual($aVariables, 'test_variable1_name', 'test_value3');
     $this->assertFieldEqual($aVariables, 'test_variable2_name', 'test_value4');
     $aConversion = next($aResult);
     // Check return fields value
     $this->assertFieldEqual($aConversion, 'campaignID', $campaignId);
     $this->assertFieldEqual($aConversion, 'trackerID', '501');
     $this->assertFieldEqual($aConversion, 'bannerID', $bannerId);
     $this->assertFieldEqual($aConversion, 'conversionTime', '2004-06-06 12:20:00');
     $this->assertFieldEqual($aConversion, 'conversionStatus', MAX_CONNECTION_STATUS_APPROVED);
     $this->assertFieldEqual($aConversion, 'userIp', '127.0.0.2');
     $this->assertFieldEqual($aConversion, 'action', MAX_CONNECTION_AD_IMPRESSION);
     $this->assertFieldEqual($aConversion, 'window', '3');
     $aVariables = $aConversion['variables'];
     $this->assertFieldEqual($aVariables, 'test_variable1_name', 'test_value5');
     $this->assertFieldEqual($aVariables, 'test_variable2_name', 'test_value6');
     // Clean Up
     DataGenerator::cleanUp();
 }
Exemplo n.º 2
0
 /**
  * Gets conversion statistics for a campaign for a specified period.
  *
  * @param integer $campaignId The ID of the campaign 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 each row containing
  * <ul>
  *  <li><b>campaignID integer</b> The ID of the campaign</li>
  *  <li><b>trackerID integer</b> The ID of the tracker</li>
  *  <li><b>bannerID integer</b> The ID of the banner</li>
  *  <li><b>conversionTime date</b> The time of the conversion</li>
  *  <li><b>conversionStatus integer</b> The conversion status</li>
  *  <li><b>userIp string</b> The IP address of the conversion</li>
  *  <li><b>action integer</b> The conversion event type</li>
  *  <li><b>window integer</b> The conversion window</li>
  *  <li><b>variables array</b> array of variable values, indexed by variable name</li>
  *</ul>
  * @return boolean  True if the operation was successful and false if not.
  *
  */
 public function getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate, $localTZ, &$rsStatisticsData)
 {
     if (!$this->checkStatisticsPermissions($campaignId)) {
         return false;
     }
     if ($this->_validateForStatistics($campaignId, $oStartDate, $oEndDate)) {
         $dalCampaign = new OA_Dal_Statistics_Campaign();
         $rsStatisticsData = $dalCampaign->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate, $localTZ);
         return true;
     } else {
         return false;
     }
 }