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:
authorThomas Steur <tsteur@users.noreply.github.com>2020-07-21 21:59:46 +0300
committerGitHub <noreply@github.com>2020-07-21 21:59:46 +0300
commitfa285c13550fd276e88045d9fc3593927c342cea (patch)
tree9561853419a99b9216580eb8da9b82f8f8cc2944
parent1d24a1532135b7f8e465990aa40863fb28621951 (diff)
Backport userId to overwrite visitorId feature (#16226)
* Backport userId to overwrite visitorId feature * fix ui test
-rwxr-xr-xconfig/global.ini.php2
-rw-r--r--core/Tracker/Request.php11
-rw-r--r--core/Tracker/Visit.php13
-rw-r--r--plugins/CoreHome/Tracker/VisitRequestProcessor.php4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_admin_diagnostics_configfile.png4
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