diff options
author | Stefan Giehl <stefan@matomo.org> | 2019-04-10 22:59:31 +0300 |
---|---|---|
committer | diosmosis <diosmosis@users.noreply.github.com> | 2019-04-10 22:59:31 +0300 |
commit | beff637e0ec74154b81ca18de50f7c9d30092e8e (patch) | |
tree | 39a82c6864c6289e8cbe3dd67e38d672d5e0821c /plugins/UserCountry | |
parent | ff1c579f1faa003e461db2534f2606bd4ac4ddaa (diff) |
Readable segment values for browser, os and country segments (#13929)
* Use readable segment value for browser and os segments instead of short codes
* readds original segments using short codes
* Adds additional segment country name to segment by (english) country name
* compare browser and os names case sensitive for segments
* use correct segments for reports
* update tests
Diffstat (limited to 'plugins/UserCountry')
4 files changed, 45 insertions, 9 deletions
diff --git a/plugins/UserCountry/API.php b/plugins/UserCountry/API.php index 34a00a4add..72b6c71142 100644 --- a/plugins/UserCountry/API.php +++ b/plugins/UserCountry/API.php @@ -56,7 +56,7 @@ class API extends \Piwik\Plugin\API } // apply filter on the whole datatable in order the inline search to work (searches are done on "beautiful" label) - $dataTable->filter('AddSegmentValue'); + $dataTable->filter('AddSegmentByLabel', ['countryCode']); $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'code')); $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'logo', __NAMESPACE__ . '\getFlagFromCode')); $dataTable->filter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\countryTranslate')); diff --git a/plugins/UserCountry/Columns/Country.php b/plugins/UserCountry/Columns/Country.php index d6e89d3789..21c40251ee 100644 --- a/plugins/UserCountry/Columns/Country.php +++ b/plugins/UserCountry/Columns/Country.php @@ -14,7 +14,9 @@ use Piwik\Container\StaticContainer; use Piwik\Intl\Data\Provider\RegionDataProvider; use Piwik\Metrics\Formatter; use Piwik\Network\IP; +use Piwik\Piwik; use Piwik\Plugin\Manager; +use Piwik\Plugin\Segment; use Piwik\Plugins\Provider\Provider as ProviderProvider; use Piwik\Plugins\UserCountry\LocationProvider; use Piwik\Tracker\Visit; @@ -33,8 +35,41 @@ class Country extends Base protected $category = 'UserCountry_VisitLocation'; protected $nameSingular = 'UserCountry_Country'; protected $namePlural = 'UserCountryMap_Countries'; - protected $segmentName = 'countryCode'; - protected $acceptValues = 'de, us, fr, in, es, etc.'; + protected $segmentName = 'countryName'; + protected $acceptValues = 'Germany, France, Spain, ...'; + + public function __construct() + { + $regionDataProvider = StaticContainer::get('Piwik\Intl\Data\Provider\RegionDataProvider'); + $countryList = $regionDataProvider->getCountryList(); + array_walk($countryList, function(&$item, $key) { + $item = Piwik::translate('Intl_Country_'.strtoupper($key), [], 'en'); + }); + + $this->sqlFilterValue = function ($val) use ($countryList) { + $result = array_search($val, $countryList); + if ($result === false) { + $result = 'UNK'; + } + return $result; + }; + $this->suggestedValuesCallback = function ($idSite, $maxValuesToReturn) use ($countryList) { + return array_values($countryList + ['Unknown']); + }; + } + + protected function configureSegments() + { + parent::configureSegments(); + $segment = new Segment(); + $segment->setSegment('countryCode'); + $segment->setName('UserCountry_CountryCode'); + $segment->setAcceptedValues('ISO 3166-1 alpha-2 country codes (de, us, fr, in, es, etc.)'); + $this->suggestedValuesCallback = null; + $this->sqlFilterValue = null; + $this->addSegment($segment); + } + public function formatValue($value, $idSite, Formatter $formatter) { diff --git a/plugins/UserCountry/lang/en.json b/plugins/UserCountry/lang/en.json index 03c530bcc1..1f2f375e7d 100644 --- a/plugins/UserCountry/lang/en.json +++ b/plugins/UserCountry/lang/en.json @@ -13,6 +13,7 @@ "Continent": "Continent", "Continents": "Continents", "Country": "Country", + "CountryCode": "Country code", "country_a1": "Anonymous Proxy", "country_a2": "Satellite Provider", "country_cat": "Catalan-speaking communities", diff --git a/plugins/UserCountry/tests/System/expected/test_AttributeHistoricalDataWithLocationsTest_testExecute_ShouldReturnLogAfterWorkingWithSomeData__UserCountry.getCountry_month.xml b/plugins/UserCountry/tests/System/expected/test_AttributeHistoricalDataWithLocationsTest_testExecute_ShouldReturnLogAfterWorkingWithSomeData__UserCountry.getCountry_month.xml index ade01286fe..79c5792f66 100644 --- a/plugins/UserCountry/tests/System/expected/test_AttributeHistoricalDataWithLocationsTest_testExecute_ShouldReturnLogAfterWorkingWithSomeData__UserCountry.getCountry_month.xml +++ b/plugins/UserCountry/tests/System/expected/test_AttributeHistoricalDataWithLocationsTest_testExecute_ShouldReturnLogAfterWorkingWithSomeData__UserCountry.getCountry_month.xml @@ -22,9 +22,9 @@ <revenue>150</revenue> <sum_daily_nb_uniq_visitors>10</sum_daily_nb_uniq_visitors> <sum_daily_nb_users>0</sum_daily_nb_users> + <segment>countryCode==cn</segment> <code>cn</code> <logo>plugins/Morpheus/icons/dist/flags/cn.png</logo> - <segment>countryCode==cn</segment> <logoHeight>16</logoHeight> </row> <row> @@ -49,9 +49,9 @@ <revenue>45</revenue> <sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors> <sum_daily_nb_users>0</sum_daily_nb_users> + <segment>countryCode==ca</segment> <code>ca</code> <logo>plugins/Morpheus/icons/dist/flags/ca.png</logo> - <segment>countryCode==ca</segment> <logoHeight>16</logoHeight> </row> <row> @@ -76,9 +76,9 @@ <revenue>20</revenue> <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> <sum_daily_nb_users>1</sum_daily_nb_users> + <segment>countryCode==fr</segment> <code>fr</code> <logo>plugins/Morpheus/icons/dist/flags/fr.png</logo> - <segment>countryCode==fr</segment> <logoHeight>16</logoHeight> </row> <row> @@ -103,9 +103,9 @@ <revenue>15</revenue> <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> <sum_daily_nb_users>0</sum_daily_nb_users> + <segment>countryCode==id</segment> <code>id</code> <logo>plugins/Morpheus/icons/dist/flags/id.png</logo> - <segment>countryCode==id</segment> <logoHeight>16</logoHeight> </row> <row> @@ -130,9 +130,9 @@ <revenue>15</revenue> <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> <sum_daily_nb_users>0</sum_daily_nb_users> + <segment>countryCode==it</segment> <code>it</code> <logo>plugins/Morpheus/icons/dist/flags/it.png</logo> - <segment>countryCode==it</segment> <logoHeight>16</logoHeight> </row> <row> @@ -157,9 +157,9 @@ <revenue>15</revenue> <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> <sum_daily_nb_users>0</sum_daily_nb_users> + <segment>countryCode==us</segment> <code>us</code> <logo>plugins/Morpheus/icons/dist/flags/us.png</logo> - <segment>countryCode==us</segment> <logoHeight>16</logoHeight> </row> </result>
\ No newline at end of file |