From c775c64ec484ac52ce10773948ce28bcb2467c42 Mon Sep 17 00:00:00 2001 From: benakamoorthi <benaka.moorthi@gmail.com> Date: Thu, 15 Nov 2012 10:39:18 +0000 Subject: [PATCH] Fixes #3511, store lat/long in archived table metadata instead of label. git-svn-id: http://dev.piwik.org/svn/trunk@7478 59fd770c-687e-43c8-a1e3-f5a4ff64c105 --- plugins/UserCountry/API.php | 6 ++++-- plugins/UserCountry/UserCountry.php | 6 +++--- .../Integration/ManyVisitorsOneWebsiteTest.php | 12 +++++++----- ...torsOneWebsiteTest__UserCountry.getCity_month.xml | 10 ++++++---- ...eTest_segment_city__UserCountry.getCity_month.xml | 2 ++ ...t_segment_lat_long__UserCountry.getCity_month.xml | 4 ++-- ...est_segment_region__UserCountry.getCity_month.xml | 2 ++ 7 files changed, 26 insertions(+), 16 deletions(-) diff --git a/plugins/UserCountry/API.php b/plugins/UserCountry/API.php index 0309dc01d8..b684ebdb41 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 5cf51e690f..91e6feaf05 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 fd4e07d025..a72427b302 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 91ab989032..690e22f3f7 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 125b9def81..7604777d1d 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 13bcaaae32..82aae84260 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 8e7f059ac7..724be9b9c5 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> -- GitLab