diff options
-rwxr-xr-x | config/global.ini.php | 2 | ||||
-rw-r--r-- | core/Tracker/Request.php | 11 | ||||
-rw-r--r-- | core/Tracker/Visit.php | 13 | ||||
-rw-r--r-- | plugins/CoreHome/Tracker/VisitRequestProcessor.php | 4 | ||||
-rw-r--r-- | tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png | 4 |
5 files changed, 30 insertions, 4 deletions
diff --git a/config/global.ini.php b/config/global.ini.php index 88870eaa6b..2f7bbc0216 100755 --- a/config/global.ini.php +++ b/config/global.ini.php @@ -755,6 +755,8 @@ enable_tracking_failures_notification = 1 [Tracker] +enable_userid_overwrites_visitorid = 0 + ; Matomo uses "Privacy by default" model. When one of your users visit multiple of your websites tracked in this Matomo, ; Matomo will create for this user a fingerprint that will be different across the multiple websites. ; If you want to track unique users across websites you may set this setting to 1. diff --git a/core/Tracker/Request.php b/core/Tracker/Request.php index f307e7ff95..19a6bf001a 100644 --- a/core/Tracker/Request.php +++ b/core/Tracker/Request.php @@ -751,6 +751,17 @@ class Request { $found = false; + if (TrackerConfig::getConfigValue('enable_userid_overwrites_visitorid')) { + // If User ID is set it takes precedence + $userId = $this->getForcedUserId(); + if ($userId) { + $userIdHashed = $this->getUserIdHashed($userId); + $idVisitor = $this->truncateIdAsVisitorId($userIdHashed); + Common::printDebug("Request will be recorded for this user_id = " . $userId . " (idvisitor = $idVisitor)"); + $found = true; + } + } + // Was a Visitor ID "forced" (@see Tracking API setVisitorId()) for this request? if (!$found) { $idVisitor = $this->getForcedVisitorId(); diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php index 1801d2c1fa..e4d62789dd 100644 --- a/core/Tracker/Visit.php +++ b/core/Tracker/Visit.php @@ -562,7 +562,18 @@ class Visit implements VisitInterface // Might update the idvisitor when it was forced or overwritten for this visit $valuesToUpdate['idvisitor'] = $this->request->getVisitorId(); } - + + if (TrackerConfig::getConfigValue('enable_userid_overwrites_visitorid')) { + // User ID takes precedence and overwrites idvisitor value + $userId = $this->request->getForcedUserId(); + if ($userId) { + $userIdHash = $this->request->getUserIdHashed($userId); + $binIdVisitor = Common::hex2bin($userIdHash); + $this->visitProperties->setProperty('idvisitor', $binIdVisitor); + $valuesToUpdate['idvisitor'] = $binIdVisitor; + } + } + return $valuesToUpdate; } diff --git a/plugins/CoreHome/Tracker/VisitRequestProcessor.php b/plugins/CoreHome/Tracker/VisitRequestProcessor.php index 30c5d0fd3a..b7875e087a 100644 --- a/plugins/CoreHome/Tracker/VisitRequestProcessor.php +++ b/plugins/CoreHome/Tracker/VisitRequestProcessor.php @@ -17,6 +17,7 @@ use Piwik\Tracker\Cache; use Piwik\Tracker\Request; use Piwik\Tracker\RequestProcessor; use Piwik\Tracker\Settings; +use Piwik\Tracker\TrackerConfig; use Piwik\Tracker\Visit\VisitProperties; use Piwik\Tracker\VisitExcluded; use Piwik\Tracker\VisitorRecognizer; @@ -189,7 +190,8 @@ class VisitRequestProcessor extends RequestProcessor return true; } - if (!$this->lastUserIdWasSetAndDoesMatch($visitProperties, $request)) { + if (!TrackerConfig::getConfigValue('enable_userid_overwrites_visitorid') + && !$this->lastUserIdWasSetAndDoesMatch($visitProperties, $request)) { Common::printDebug("Visitor detected, but last user_id does not match..."); return true; } diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png index 04b84372b2..72239f0ede 100644 --- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png +++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1541e3be9d9bd63c8f43bce5a775770438d51edd28db485526ea2b7719a00a50 -size 4392052 +oid sha256:eac410b554a5f086f5d743bde65eef2f4eb787b5900854fdbb2e5ac3f13a7a79 +size 4395540 |