aboutsummaryrefslogtreecommitdiffhomepage
path: root/Digitigrade
diff options
context:
space:
mode:
Diffstat (limited to 'Digitigrade')
-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
5 files changed, 11 insertions, 5 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