diff options
author | sgiehl <stefan@matomo.org> | 2022-07-06 16:49:36 +0300 |
---|---|---|
committer | sgiehl <stefan@matomo.org> | 2022-07-06 16:49:36 +0300 |
commit | 630d38acfee07bb8f7839f797bab60ee735978aa (patch) | |
tree | dd9f0933126e1179b5858b0a5ca4b35d1d517f9d | |
parent | 7ca5b3c432532f9ed11cf7cdbe01c3b57270c368 (diff) |
Update referrer information of a visit only within the first three page views, if it wasn't set beforerefupdate
-rw-r--r-- | plugins/Referrers/Columns/Base.php | 19 | ||||
-rw-r--r-- | plugins/Referrers/Columns/Campaign.php | 2 | ||||
-rw-r--r-- | plugins/Referrers/Columns/Keyword.php | 2 | ||||
-rw-r--r-- | plugins/Referrers/Columns/ReferrerName.php | 2 | ||||
-rw-r--r-- | plugins/Referrers/Columns/ReferrerType.php | 2 | ||||
-rw-r--r-- | plugins/Referrers/Columns/ReferrerUrl.php | 2 |
6 files changed, 16 insertions, 13 deletions
diff --git a/plugins/Referrers/Columns/Base.php b/plugins/Referrers/Columns/Base.php index 0d9a658f79..9146b6f1ac 100644 --- a/plugins/Referrers/Columns/Base.php +++ b/plugins/Referrers/Columns/Base.php @@ -670,7 +670,7 @@ abstract class Base extends VisitDimension } } - protected function isReferrerInformationNew(Visitor $visitor, $information) + protected function isReferrerInformationNew(Visitor $visitor, $information): bool { foreach (['referer_keyword', 'referer_name', 'referer_type'] as $infoName) { if ($this->hasReferrerColumnChanged($visitor, $information, $infoName)) { @@ -680,7 +680,7 @@ abstract class Base extends VisitDimension return false; } - protected function hasReferrerColumnChanged(Visitor $visitor, $information, $infoName) + protected function hasReferrerColumnChanged(Visitor $visitor, $information, $infoName): bool { $existing = mb_strtolower($visitor->getVisitorColumn($infoName) ?? ''); $new = mb_strtolower($information[$infoName] ?? ''); @@ -693,29 +693,32 @@ abstract class Base extends VisitDimension return $result; } - protected function doesLastActionHaveSameReferrer(Visitor $visitor, $referrerType) + protected function doesLastActionHaveSameReferrer(Visitor $visitor, $referrerType): bool { return $visitor->getVisitorColumn('referer_type') == $referrerType; } - protected function getReferrerCampaignQueryParam(Request $request, $paramName) + protected function getReferrerCampaignQueryParam(Request $request, $paramName): string { return trim(urldecode($request->getParam($paramName))); } - private function truncateReferrerName($name) + private function truncateReferrerName($name): string { return mb_substr($name, 0, 255); } - private function truncateReferrerKeyword($refererKeyword) + private function truncateReferrerKeyword($refererKeyword): string { return mb_substr($refererKeyword, 0, 255); } - protected function isCurrentReferrerDirectEntry(Visitor $visitor) + protected function shallReferrerDetailsBeUpdated(Visitor $visitor): bool { $referrerType = $visitor->getVisitorColumn('referer_type'); - return $referrerType == Common::REFERRER_TYPE_DIRECT_ENTRY; + $actionCount = $visitor->getVisitorColumn('visit_total_actions'); + + // only update a referrer if it wasn't set previously and there hadn't been more than 2 actions tracked + return $referrerType == Common::REFERRER_TYPE_DIRECT_ENTRY && $actionCount < 3; } } diff --git a/plugins/Referrers/Columns/Campaign.php b/plugins/Referrers/Columns/Campaign.php index 1bc00d8c0a..08d615d69c 100644 --- a/plugins/Referrers/Columns/Campaign.php +++ b/plugins/Referrers/Columns/Campaign.php @@ -46,7 +46,7 @@ class Campaign extends Base // we just update the existing referrer information instead of creating a visit. if ($information['referer_type'] == Common::REFERRER_TYPE_CAMPAIGN && $this->isReferrerInformationNew($visitor, $information) - && !$this->isCurrentReferrerDirectEntry($visitor) + && !$this->shallReferrerDetailsBeUpdated($visitor) ) { Common::printDebug("Existing visit detected, but creating new visit because campaign information is different than last action."); diff --git a/plugins/Referrers/Columns/Keyword.php b/plugins/Referrers/Columns/Keyword.php index f6de4caf5c..797b480019 100644 --- a/plugins/Referrers/Columns/Keyword.php +++ b/plugins/Referrers/Columns/Keyword.php @@ -39,7 +39,7 @@ class Keyword extends Base public function onExistingVisit(Request $request, Visitor $visitor, $action) { $information = $this->getReferrerInformationFromRequest($request, $visitor); - if ($this->isCurrentReferrerDirectEntry($visitor) + if ($this->shallReferrerDetailsBeUpdated($visitor) && $information['referer_type'] != Common::REFERRER_TYPE_DIRECT_ENTRY ) { return $information['referer_keyword']; diff --git a/plugins/Referrers/Columns/ReferrerName.php b/plugins/Referrers/Columns/ReferrerName.php index facd6d2725..de05d2a575 100644 --- a/plugins/Referrers/Columns/ReferrerName.php +++ b/plugins/Referrers/Columns/ReferrerName.php @@ -40,7 +40,7 @@ class ReferrerName extends Base public function onExistingVisit(Request $request, Visitor $visitor, $action) { $information = $this->getReferrerInformationFromRequest($request, $visitor); - if ($this->isCurrentReferrerDirectEntry($visitor) + if ($this->shallReferrerDetailsBeUpdated($visitor) && $information['referer_type'] != Common::REFERRER_TYPE_DIRECT_ENTRY ) { return $information['referer_name']; diff --git a/plugins/Referrers/Columns/ReferrerType.php b/plugins/Referrers/Columns/ReferrerType.php index e9ef9bf1cc..2fa7787f5b 100644 --- a/plugins/Referrers/Columns/ReferrerType.php +++ b/plugins/Referrers/Columns/ReferrerType.php @@ -58,7 +58,7 @@ class ReferrerType extends Base public function onExistingVisit(Request $request, Visitor $visitor, $action) { $information = $this->getReferrerInformationFromRequest($request, $visitor); - if ($this->isCurrentReferrerDirectEntry($visitor) + if ($this->shallReferrerDetailsBeUpdated($visitor) && $information['referer_type'] != Common::REFERRER_TYPE_DIRECT_ENTRY ) { return $information['referer_type']; diff --git a/plugins/Referrers/Columns/ReferrerUrl.php b/plugins/Referrers/Columns/ReferrerUrl.php index bf009484df..50ca31c4a5 100644 --- a/plugins/Referrers/Columns/ReferrerUrl.php +++ b/plugins/Referrers/Columns/ReferrerUrl.php @@ -53,7 +53,7 @@ class ReferrerUrl extends Base public function onExistingVisit(Request $request, Visitor $visitor, $action) { $information = $this->getReferrerInformationFromRequest($request, $visitor); - if ($this->isCurrentReferrerDirectEntry($visitor) + if ($this->shallReferrerDetailsBeUpdated($visitor) && $information['referer_type'] != Common::REFERRER_TYPE_DIRECT_ENTRY ) { return $this->trimUrl($information['referer_url']); |