Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Giehl <stefan@matomo.org>2019-04-10 22:59:31 +0300
committerdiosmosis <diosmosis@users.noreply.github.com>2019-04-10 22:59:31 +0300
commitbeff637e0ec74154b81ca18de50f7c9d30092e8e (patch)
tree39a82c6864c6289e8cbe3dd67e38d672d5e0821c /plugins/UserCountry
parentff1c579f1faa003e461db2534f2606bd4ac4ddaa (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')
-rw-r--r--plugins/UserCountry/API.php2
-rw-r--r--plugins/UserCountry/Columns/Country.php39
-rw-r--r--plugins/UserCountry/lang/en.json1
-rw-r--r--plugins/UserCountry/tests/System/expected/test_AttributeHistoricalDataWithLocationsTest_testExecute_ShouldReturnLogAfterWorkingWithSomeData__UserCountry.getCountry_month.xml12
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