Skip to content

Commit

Permalink
add oldest and latest
Browse files Browse the repository at this point in the history
  • Loading branch information
QuentinGab committed Nov 8, 2024
1 parent 39d9ae0 commit ebdce5c
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
68 changes: 68 additions & 0 deletions src/ReferrerSources.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,74 @@ public function getLast(string $source): ?ReferrerSource
return $values[$key] ?? null;
}

/**
* Oldest source based on timestamp
*
* @return null|ReferrerSource<mixed>
*/
public function getOldest(): ?ReferrerSource
{
/** @var null|ReferrerSource<mixed> $oldest */
$oldest = null;

foreach ($this as $values) {
foreach ($values as $value) {

if (! $oldest) {
$oldest = $value;
} elseif (
! $oldest->timestamp &&
$value->timestamp
) {
$oldest = $value;
} elseif (
$oldest->timestamp &&
$value->timestamp &&
$value->timestamp < $oldest->timestamp
) {
$oldest = $value;
}

}
}

return $oldest;
}

/**
* Most recent source based on timestamp
*
* @return null|ReferrerSource<mixed>
*/
public function getLatest(): ?ReferrerSource
{
/** @var null|ReferrerSource<mixed> $latest */
$latest = null;

foreach ($this as $values) {
foreach ($values as $value) {

if (! $latest) {
$latest = $value;
} elseif (
! $latest->timestamp &&
$value->timestamp
) {
$latest = $value;
} elseif (
$latest->timestamp &&
$value->timestamp &&
$value->timestamp >= $latest->timestamp
) {
$latest = $value;
}

}
}

return $latest;
}

/**
* @param ReferrerSource<mixed> $source
* @return $this
Expand Down
2 changes: 2 additions & 0 deletions src/Sources/ReferrerSource.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
*/
abstract class ReferrerSource implements Arrayable, Stringable
{
public ?float $timestamp = null;

abstract public static function fromRequest(Request $request): static;

/**
Expand Down

0 comments on commit ebdce5c

Please sign in to comment.