From e783bdc456e8407f4d25c1f4330467d0666f3546 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya <alejandrocelaya@gmail.com> Date: Tue, 21 Nov 2023 10:01:27 +0100 Subject: [PATCH] Set referrer when sending visits to Matomo --- .../src/EventDispatcher/Matomo/SendVisitToMatomo.php | 3 ++- module/Core/src/Matomo/MatomoTrackerBuilder.php | 9 ++++++--- module/Core/src/Visit/Entity/Visit.php | 5 +++++ .../EventDispatcher/Matomo/SendVisitToMatomoTest.php | 2 ++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/module/Core/src/EventDispatcher/Matomo/SendVisitToMatomo.php b/module/Core/src/EventDispatcher/Matomo/SendVisitToMatomo.php index 4e0bcb86..ad9660cb 100644 --- a/module/Core/src/EventDispatcher/Matomo/SendVisitToMatomo.php +++ b/module/Core/src/EventDispatcher/Matomo/SendVisitToMatomo.php @@ -47,7 +47,8 @@ class SendVisitToMatomo $tracker ->setUrl($this->resolveUrlToTrack($visit)) ->setCustomTrackingParameter('type', $visit->type()->value) - ->setUserAgent($visit->userAgent()); + ->setUserAgent($visit->userAgent()) + ->setUrlReferrer($visit->referer()); $location = $visit->getVisitLocation(); if ($location !== null) { diff --git a/module/Core/src/Matomo/MatomoTrackerBuilder.php b/module/Core/src/Matomo/MatomoTrackerBuilder.php index 393e0472..4bad6799 100644 --- a/module/Core/src/Matomo/MatomoTrackerBuilder.php +++ b/module/Core/src/Matomo/MatomoTrackerBuilder.php @@ -36,9 +36,12 @@ class MatomoTrackerBuilder implements MatomoTrackerBuilderInterface ->setRequestMethodNonBulk('POST') // Set a reasonable timeout ->setRequestTimeout(self::MATOMO_DEFAULT_TIMEOUT) - ->setRequestConnectTimeout(self::MATOMO_DEFAULT_TIMEOUT) - // We don't want to bulk send, as every request to Shlink will create a new tracker - ->disableBulkTracking(); + ->setRequestConnectTimeout(self::MATOMO_DEFAULT_TIMEOUT); + + // We don't want to bulk send, as every request to Shlink will create a new tracker + $tracker->disableBulkTracking(); + // Disable cookies, as they are ignored anyway + $tracker->disableCookieSupport(); return $tracker; } diff --git a/module/Core/src/Visit/Entity/Visit.php b/module/Core/src/Visit/Entity/Visit.php index a735a3fb..255a55f4 100644 --- a/module/Core/src/Visit/Entity/Visit.php +++ b/module/Core/src/Visit/Entity/Visit.php @@ -193,6 +193,11 @@ class Visit extends AbstractEntity implements JsonSerializable return $this->userAgent; } + public function referer(): string + { + return $this->referer; + } + public function jsonSerialize(): array { return [ diff --git a/module/Core/test/EventDispatcher/Matomo/SendVisitToMatomoTest.php b/module/Core/test/EventDispatcher/Matomo/SendVisitToMatomoTest.php index b76a1d31..94c66623 100644 --- a/module/Core/test/EventDispatcher/Matomo/SendVisitToMatomoTest.php +++ b/module/Core/test/EventDispatcher/Matomo/SendVisitToMatomoTest.php @@ -71,6 +71,7 @@ class SendVisitToMatomoTest extends TestCase $tracker = $this->createMock(MatomoTracker::class); $tracker->expects($this->once())->method('setUrl')->willReturn($tracker); $tracker->expects($this->once())->method('setUserAgent')->willReturn($tracker); + $tracker->expects($this->once())->method('setUrlReferrer')->willReturn($tracker); $tracker->expects($this->once())->method('doTrackPageView')->with(''); if ($visit->isOrphan()) { @@ -125,6 +126,7 @@ class SendVisitToMatomoTest extends TestCase $tracker = $this->createMock(MatomoTracker::class); $tracker->expects($this->once())->method('setUrl')->with($expectedTrackedUrl)->willReturn($tracker); $tracker->expects($this->once())->method('setUserAgent')->willReturn($tracker); + $tracker->expects($this->once())->method('setUrlReferrer')->willReturn($tracker); $tracker->expects($this->any())->method('setCustomTrackingParameter')->willReturn($tracker); $tracker->expects($this->once())->method('doTrackPageView');