From afb5c3fd4100f1427f133edc42b95ad26c1ff18a Mon Sep 17 00:00:00 2001 From: Matthieu Aubry <matt@piwik.org> Date: Thu, 13 Nov 2014 14:08:05 +1300 Subject: [PATCH] Do not store Accept-language full string, only store one detected language fixes #5365 --- plugins/UserSettings/Columns/Language.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/plugins/UserSettings/Columns/Language.php b/plugins/UserSettings/Columns/Language.php index f61154c7c4..776505d773 100644 --- a/plugins/UserSettings/Columns/Language.php +++ b/plugins/UserSettings/Columns/Language.php @@ -8,6 +8,7 @@ */ namespace Piwik\Plugins\UserSettings\Columns; +use Piwik\Common; use Piwik\Piwik; use Piwik\Plugin\Dimension\VisitDimension; use Piwik\Tracker\Action; @@ -32,12 +33,23 @@ class Language extends VisitDimension */ public function onNewVisit(Request $request, Visitor $visitor, $action) { - $language = $request->getBrowserLanguage(); + return $this->getSingleLanguageFromAcceptedLanguages($request->getBrowserLanguage()); + } - if (empty($language)) { + /** + * For better privacy we store only the main language code, instead of the whole browser language string. + * + * @param $acceptLanguagesString + * @return string + */ + protected function getSingleLanguageFromAcceptedLanguages($acceptLanguagesString) + { + if (empty($acceptLanguagesString)) { return ''; } - return substr($language, 0, 20); + $allLanguageCodes = array_keys(Common::getLanguagesList()); + $languageCode = Common::extractLanguageCodeFromBrowserLanguage($acceptLanguagesString, $allLanguageCodes); + return $languageCode; } -} \ No newline at end of file +} -- GitLab