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:
authorsgiehl <stefan@matomo.org>2022-07-06 16:49:36 +0300
committersgiehl <stefan@matomo.org>2022-07-06 16:49:36 +0300
commit630d38acfee07bb8f7839f797bab60ee735978aa (patch)
treedd9f0933126e1179b5858b0a5ca4b35d1d517f9d
parent7ca5b3c432532f9ed11cf7cdbe01c3b57270c368 (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.php19
-rw-r--r--plugins/Referrers/Columns/Campaign.php2
-rw-r--r--plugins/Referrers/Columns/Keyword.php2
-rw-r--r--plugins/Referrers/Columns/ReferrerName.php2
-rw-r--r--plugins/Referrers/Columns/ReferrerType.php2
-rw-r--r--plugins/Referrers/Columns/ReferrerUrl.php2
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']);