diff options
author | mattab <matthieu.aubry@gmail.com> | 2014-10-01 07:26:52 +0400 |
---|---|---|
committer | mattab <matthieu.aubry@gmail.com> | 2014-10-01 07:26:52 +0400 |
commit | cd1b52dd2e5807d2871e6037815cae2390c5243d (patch) | |
tree | 5e5ff7f877d60f8d477f9d21cf5b2d659acea68a /core/Tracker/Visit.php | |
parent | 2cd5f09a52fe28ff644827a58ce0f88f177b3f7e (diff) |
Fixes #6313 - When a user starts to get a User ID set, then we set this User ID to the existing visit rather than create a new visit for this user id specifically
Diffstat (limited to 'core/Tracker/Visit.php')
-rw-r--r-- | core/Tracker/Visit.php | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php index 75633d95b6..f01f34bc19 100644 --- a/core/Tracker/Visit.php +++ b/core/Tracker/Visit.php @@ -513,11 +513,7 @@ class Visit implements VisitInterface { $valuesToUpdate = array(); - // Might update the idvisitor when it was forced or overwritten for this visit - if (strlen($this->visitorInfo['idvisitor']) == Tracker::LENGTH_BINARY_ID) { - $valuesToUpdate['idvisitor'] = $this->visitorInfo['idvisitor']; - $visitor->setVisitorColumn('idvisitor', $this->visitorInfo['idvisitor']); - } + $valuesToUpdate = $this->setIdVisitorForExistingVisit($visitor, $valuesToUpdate); $dimensions = $this->getAllVisitDimensions(); $valuesToUpdate = $this->triggerHookOnDimensions($dimensions, 'onExistingVisit', $visitor, $action, $valuesToUpdate); @@ -613,4 +609,29 @@ class Visit implements VisitInterface { return Config::getInstance()->Tracker['visit_standard_length']; } + + /** + * @param $visitor + * @param $valuesToUpdate + * @return mixed + */ + private function setIdVisitorForExistingVisit($visitor, $valuesToUpdate) + { + // Might update the idvisitor when it was forced or overwritten for this visit + if (strlen($this->visitorInfo['idvisitor']) == Tracker::LENGTH_BINARY_ID) { + $binIdVisitor = $this->visitorInfo['idvisitor']; + $visitor->setVisitorColumn('idvisitor', $binIdVisitor); + $valuesToUpdate['idvisitor'] = $binIdVisitor; + } + + // User ID takes precedence and overwrites idvisitor value + $userId = $this->request->getForcedUserId(); + if ($userId) { + $userIdHash = $this->request->getUserIdHashed($userId); + $binIdVisitor = Common::hex2bin($userIdHash); + $visitor->setVisitorColumn('idvisitor', $binIdVisitor); + $valuesToUpdate['idvisitor'] = $binIdVisitor; + } + return $valuesToUpdate; + } } |