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