aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Digitigrade/Model/HomeTimelineItem.php6
-rw-r--r--Digitigrade/Model/Interaction.php2
-rw-r--r--Digitigrade/Model/Note.php2
-rw-r--r--Digitigrade/Timeline/HomeTimeline.php4
-rw-r--r--Digitigrade/Timeline/TimelineIncludeable.php2
-rw-r--r--templates/note.php4
6 files changed, 13 insertions, 7 deletions
diff --git a/Digitigrade/Model/HomeTimelineItem.php b/Digitigrade/Model/HomeTimelineItem.php
index 7e2c062..249ba91 100644
--- a/Digitigrade/Model/HomeTimelineItem.php
+++ b/Digitigrade/Model/HomeTimelineItem.php
@@ -32,12 +32,16 @@ class HomeTimelineItem extends Model {
return $hti;
}
- public function toTimelineItem(): TimelineItem {
+ public function toTimelineItem(): ?TimelineItem {
$reason = null;
if (isset($this->reasonKind)) {
$reason = $this->reasonKind::fromJsonReference(json_decode($this->reasonData));
}
$object = $this->itemKind::fromJsonReference(json_decode($this->itemData));
+ if (!isset($object)) {
+ $this->remove(); // it's invalid anyway it shouldn't be here
+ return null;
+ }
return new TimelineItem($object, $reason);
}
diff --git a/Digitigrade/Model/Interaction.php b/Digitigrade/Model/Interaction.php
index e651f45..43d02a2 100644
--- a/Digitigrade/Model/Interaction.php
+++ b/Digitigrade/Model/Interaction.php
@@ -113,7 +113,7 @@ class Interaction extends PushableModel implements Notifyable {
return $this->id;
}
- public static function fromJsonReference(mixed $reference): self {
+ public static function fromJsonReference(mixed $reference): ?self {
return self::find($reference);
}
diff --git a/Digitigrade/Model/Note.php b/Digitigrade/Model/Note.php
index ac9cc3c..94b8b60 100644
--- a/Digitigrade/Model/Note.php
+++ b/Digitigrade/Model/Note.php
@@ -316,7 +316,7 @@ class Note extends PushableModel implements TimelineIncludeable, Notifyable {
return $this->id;
}
- public static function fromJsonReference(mixed $reference): self {
+ public static function fromJsonReference(mixed $reference): ?self {
return self::find($reference);
}
diff --git a/Digitigrade/Timeline/HomeTimeline.php b/Digitigrade/Timeline/HomeTimeline.php
index a89c29a..c710992 100644
--- a/Digitigrade/Timeline/HomeTimeline.php
+++ b/Digitigrade/Timeline/HomeTimeline.php
@@ -20,7 +20,9 @@ class HomeTimeline extends Timeline {
}
private function filterItems(array $items): array {
- return array_filter($items, function (TimelineItem $item) {
+ return array_filter($items, function (?TimelineItem $item) {
+ if ($item == null)
+ return false;
$obj = $item->getObject();
if (!($obj instanceof Note))
return true;
diff --git a/Digitigrade/Timeline/TimelineIncludeable.php b/Digitigrade/Timeline/TimelineIncludeable.php
index 5406543..af288b2 100644
--- a/Digitigrade/Timeline/TimelineIncludeable.php
+++ b/Digitigrade/Timeline/TimelineIncludeable.php
@@ -4,5 +4,5 @@ namespace Digitigrade\Timeline;
interface TimelineIncludeable {
public function renderAsHtml();
public function toJsonReference(): mixed;
- public static function fromJsonReference(mixed $reference): self;
+ public static function fromJsonReference(mixed $reference): ?self;
} \ No newline at end of file
diff --git a/templates/note.php b/templates/note.php
index 19a1895..6835a0f 100644
--- a/templates/note.php
+++ b/templates/note.php
@@ -5,7 +5,7 @@ use Digitigrade\Model\NotePrivacyScope;
use Digitigrade\Model\UserAccount;
use Digitigrade\UserSettings;
-const MAX_PREVIEW_CARDS = 1;
+$MAX_PREVIEW_CARDS = 1;
$user = UserAccount::findByCurrentSession();
$prefs = $user ? new UserSettings($user) : null;
@@ -95,7 +95,7 @@ $pathToSelf = '/@/' . $note->author->getFullHandle() . '/note/' . $note->id;
$i = 0;
foreach ($note->getLinkPreviews() as $preview) {
call_template("note_link_preview", ['preview' => $preview]);
- if (++$i > MAX_PREVIEW_CARDS)
+ if (++$i > $MAX_PREVIEW_CARDS)
break;
}
?>