diff --git a/plugins/UserCountry/API.php b/plugins/UserCountry/API.php index 0309dc01d8ce8533f3d622fc979a7d843ec84b8d..b684ebdb419c7dfe1d63eb44fbdeec0f2f3a5aae 100644 --- a/plugins/UserCountry/API.php +++ b/plugins/UserCountry/API.php @@ -130,10 +130,12 @@ class Piwik_UserCountry_API array('label', 'region', 'Piwik_UserCountry_getElementFromStringArray', array($separator, 1, $unk))); $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'country', 'Piwik_UserCountry_getElementFromStringArray', array($separator, 2, $unk))); + + // backwards compatibility: for reports that have lat|long in label $dataTable->filter('ColumnCallbackAddMetadata', - array('label', 'lat', 'Piwik_UserCountry_getElementFromStringArray', array($separator, 3))); + array('label', 'lat', 'Piwik_UserCountry_getElementFromStringArray', array($separator, 3, false))); $dataTable->filter('ColumnCallbackAddMetadata', - array('label', 'long', 'Piwik_UserCountry_getElementFromStringArray', array($separator, 4))); + array('label', 'long', 'Piwik_UserCountry_getElementFromStringArray', array($separator, 4, false))); // add country name & region name metadata $dataTable->filter('MetadataCallbackAddMetadata', diff --git a/plugins/UserCountry/UserCountry.php b/plugins/UserCountry/UserCountry.php index 5cf51e690f7188f8a714b2e9d595ed4a448b5041..91e6feaf051183e3935d35d969a8d63e1615456e 100644 --- a/plugins/UserCountry/UserCountry.php +++ b/plugins/UserCountry/UserCountry.php @@ -512,9 +512,9 @@ class Piwik_UserCountry extends Piwik_Plugin $lat = round($lat, Piwik_UserCountry_LocationProvider::GEOGRAPHIC_COORD_PRECISION); $long = round($long, Piwik_UserCountry_LocationProvider::GEOGRAPHIC_COORD_PRECISION); - // append latitude + longitude to label - $newLabel = $label.self::LOCATION_SEPARATOR.$lat.self::LOCATION_SEPARATOR.$long; - $row->setColumn('label', $newLabel); + // set latitude + longitude metadata + $row->setMetadata('lat', $lat); + $row->setMetadata('long', $long); } } } diff --git a/tests/PHPUnit/Integration/ManyVisitorsOneWebsiteTest.php b/tests/PHPUnit/Integration/ManyVisitorsOneWebsiteTest.php index fd4e07d025b50b15c07dcc2216f37d3dc3f609d3..a72427b3021923b0a6d919d393362c646f307038 100755 --- a/tests/PHPUnit/Integration/ManyVisitorsOneWebsiteTest.php +++ b/tests/PHPUnit/Integration/ManyVisitorsOneWebsiteTest.php @@ -178,13 +178,13 @@ class Test_Piwik_Integration_ManyVisitorsOneWebsiteTest extends IntegrationTestC Piwik_UserCountry_LocationProvider::$providers = null; Piwik_UserCountry_LocationProvider::setCurrentProvider('mock_provider'); Piwik_UserCountry_LocationProvider::getCurrentProvider()->setLocations(array( - self::makeLocation('Stratford-upon-Avon', 'P3', 'gb'), // template location + self::makeLocation('Stratford-upon-Avon', 'P3', 'gb', 123.456, 21.321), // template location // same region, different city, same country self::makeLocation('Nuneaton and Bedworth', 'P3', 'gb'), - // same region, city & country - self::makeLocation('Stratford-upon-Avon', 'P3', 'gb'), + // same region, city & country (different lat/long) + self::makeLocation('Stratford-upon-Avon', 'P3', 'gb', 124.456, 22.231), // same country, different region & city self::makeLocation('London', 'H9', 'gb'), @@ -211,10 +211,12 @@ class Test_Piwik_Integration_ManyVisitorsOneWebsiteTest extends IntegrationTestC Piwik_UserCountry_LocationProvider::setCurrentProvider('default'); } - public static function makeLocation( $city, $region, $country ) + public static function makeLocation( $city, $region, $country, $lat = null, $long = null ) { return array(Piwik_UserCountry_LocationProvider::CITY_NAME_KEY => $city, Piwik_UserCountry_LocationProvider::REGION_CODE_KEY => $region, - Piwik_UserCountry_LocationProvider::COUNTRY_CODE_KEY => $country); + Piwik_UserCountry_LocationProvider::COUNTRY_CODE_KEY => $country, + Piwik_UserCountry_LocationProvider::LATITUDE_KEY => $lat, + Piwik_UserCountry_LocationProvider::LONGITUDE_KEY => $long); } } diff --git a/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest__UserCountry.getCity_month.xml b/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest__UserCountry.getCity_month.xml index 91ab989032ad55a3d79e8f67e0b677b7fe61bc18..690e22f3f71d6c9e5a44a4aedd8784fff8929ad3 100755 --- a/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest__UserCountry.getCity_month.xml +++ b/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest__UserCountry.getCity_month.xml @@ -41,11 +41,11 @@ <nb_conversions>6</nb_conversions> <revenue>30</revenue> <sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors> + <lat>49.25</lat> + <long>-123.133</long> <city_name>Vancouver</city_name> <region>BC</region> <country>ca</country> - <lat>49.25</lat> - <long>-123.133</long> <country_name>Canada</country_name> <region_name>British Columbia</region_name> <logo>plugins/UserCountry/flags/ca.png</logo> @@ -67,6 +67,8 @@ <nb_conversions>4</nb_conversions> <revenue>20</revenue> <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> + <lat>124.456</lat> + <long>22.231</long> <city_name>Stratford-upon-Avon</city_name> <region>P3</region> <country>gb</country> @@ -91,11 +93,11 @@ <nb_conversions>2</nb_conversions> <revenue>10</revenue> <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + <lat>47.249</lat> + <long>6.018</long> <city_name>Besançon</city_name> <region>A6</region> <country>fr</country> - <lat>47.249</lat> - <long>6.018</long> <country_name>France</country_name> <region_name>Franche-Comte</region_name> <logo>plugins/UserCountry/flags/fr.png</logo> diff --git a/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_city__UserCountry.getCity_month.xml b/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_city__UserCountry.getCity_month.xml index 125b9def813ab7d31aa21269c2f25ae2654ea9bd..7604777d1d62eecef5ca36f48795f2f843895f8e 100755 --- a/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_city__UserCountry.getCity_month.xml +++ b/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_city__UserCountry.getCity_month.xml @@ -17,6 +17,8 @@ <nb_conversions>4</nb_conversions> <revenue>20</revenue> <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> + <lat>124.456</lat> + <long>22.231</long> <city_name>Stratford-upon-Avon</city_name> <region>P3</region> <country>gb</country> diff --git a/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_lat_long__UserCountry.getCity_month.xml b/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_lat_long__UserCountry.getCity_month.xml index 13bcaaae32bb4285a2b73fc62719d9431a05f4d5..82aae8426012c46658d751da9023abdd866073d6 100755 --- a/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_lat_long__UserCountry.getCity_month.xml +++ b/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_lat_long__UserCountry.getCity_month.xml @@ -17,11 +17,11 @@ <nb_conversions>6</nb_conversions> <revenue>30</revenue> <sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors> + <lat>49.25</lat> + <long>-123.133</long> <city_name>Vancouver</city_name> <region>BC</region> <country>ca</country> - <lat>49.25</lat> - <long>-123.133</long> <country_name>Canada</country_name> <region_name>British Columbia</region_name> <logo>plugins/UserCountry/flags/ca.png</logo> diff --git a/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_region__UserCountry.getCity_month.xml b/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_region__UserCountry.getCity_month.xml index 8e7f059ac7262f960655314299b3e79d18255a04..724be9b9c52ed1003be59592d5646888958a7aff 100755 --- a/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_region__UserCountry.getCity_month.xml +++ b/tests/PHPUnit/Integration/expected/test_ManyVisitorsOneWebsiteTest_segment_region__UserCountry.getCity_month.xml @@ -17,6 +17,8 @@ <nb_conversions>4</nb_conversions> <revenue>20</revenue> <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> + <lat>124.456</lat> + <long>22.231</long> <city_name>Stratford-upon-Avon</city_name> <region>P3</region> <country>gb</country>