Skip to content

Commit 8d78641

Browse files
committed
Fix url validation in pageview and related tests
1 parent fee8a26 commit 8d78641

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

src/Event/PageView.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,21 @@ public function setPageTitle(null|string $title)
3636

3737
public function setPageLocation(null|string $url)
3838
{
39-
$this->page_location = $url;
39+
if ($url === null) {
40+
$this->page_location = null;
41+
} else {
42+
$model = parse_url($url);
43+
44+
if (is_array($model) && !empty($model["scheme"]) && !empty($model["host"])) {
45+
$this->page_location = implode("", [
46+
$model["scheme"] . "://" . $model["host"],
47+
"/" . ltrim($model["path"], "/"),
48+
!empty($model["query"]) ? "?" . $model["query"] : "",
49+
!empty($model["fragment"]) ? "#" . $model["fragment"] : "",
50+
]);
51+
}
52+
}
53+
4054
return $this;
4155
}
4256
}

test/Unit/EventTest.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -800,9 +800,9 @@ private function populateEventByFromArray(Type\EventType $event)
800800
{
801801
return $event::fromArray([
802802
'language' => 'en-US',
803-
'page_location' => '/',
803+
'page_location' => 'https://www.example.com/',
804804
'page_referrer' => 'https://example.com/',
805-
'page_title' => 'Home - Site',
805+
'page_title' => 'Home - Example',
806806
'screen_resolution' => '1920x1080',
807807
// ---
808808
'description' => "This is a short description",
@@ -846,7 +846,7 @@ private function populateEventByArrayable(Type\EventType $event)
846846
{
847847
$event['language'] = 'en-US';
848848
$event['page_location'] = 'https://example.com/';
849-
$event['page_referrer'] = 'https://example.com/';
849+
$event['page_referrer'] = 'https://www.example.com/';
850850
$event['page_title'] = 'Home - Example';
851851
$event['screen_resolution'] = '1920x1080';
852852

@@ -895,17 +895,15 @@ private function populateEventByMethod(
895895

896896
if ($event instanceof EventHelper) {
897897
$event->setLanguage('en-US');
898-
$event->setPageLocation('https://example.com/');
899898
$event->setPageReferrer('https://example.com/');
900-
$event->setPageTitle('Home - Example');
901899
$event->setScreenResolution('1920x1080');
902900
}
903901

904902
if (in_array('page_title', $params)) {
905903
$event->setPageTitle('Home - Example');
906904
}
907905

908-
if (in_array('page_title', $params)) {
906+
if (in_array('page_location', $params)) {
909907
$event->setPageLocation('https://example.com/');
910908
}
911909

0 commit comments

Comments
 (0)