aboutsummaryrefslogtreecommitdiff
path: root/app/Models/Entry.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Models/Entry.php')
-rw-r--r--app/Models/Entry.php17
1 files changed, 14 insertions, 3 deletions
diff --git a/app/Models/Entry.php b/app/Models/Entry.php
index 6030451f2..7c0d02ddb 100644
--- a/app/Models/Entry.php
+++ b/app/Models/Entry.php
@@ -376,10 +376,21 @@ HTML;
return null;
}
- /** @return string HTML-encoded link of the entry */
- public function link(): string {
+ /**
+ * @param bool $raw Set to true to return the raw link,
+ * false (default) to attempt a fallback to the GUID if the link is empty.
+ * @return string HTML-encoded link of the entry
+ */
+ public function link(bool $raw = false): string {
+ if ($this->link === '' && !$raw) {
+ // Use the GUID as a fallback if it looks like a URL
+ if (filter_var($this->guid, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE) !== null) {
+ return $this->guid;
+ }
+ }
return $this->link;
}
+
/**
* @phpstan-return ($raw is false ? string : int)
*/
@@ -955,7 +966,7 @@ HTML;
'title' => $this->title(),
'author' => $this->authors(true),
'content' => $this->content(false),
- 'link' => $this->link(),
+ 'link' => $this->link(raw: true),
'date' => $this->date(true),
'lastSeen' => $this->lastSeen(),
'hash' => $this->hash(),