diff options
Diffstat (limited to 'Digitigrade/Model/Interaction.php')
| -rw-r--r-- | Digitigrade/Model/Interaction.php | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Digitigrade/Model/Interaction.php b/Digitigrade/Model/Interaction.php index 4ca1a0c..ed4ef45 100644 --- a/Digitigrade/Model/Interaction.php +++ b/Digitigrade/Model/Interaction.php @@ -1,6 +1,10 @@ <?php namespace Digitigrade\Model; +use Digitigrade\Timeline\HomeTimelineItem; +use Digitigrade\Timeline\ReasonReshared; +use Digitigrade\Timeline\TimelineItem; + class Interaction extends PushableModel { public ?int $id; public string $uri; @@ -57,6 +61,22 @@ class Interaction extends PushableModel { return array_unique($instances); } + public function processTimelineAdditions() { + // basically, if this is a reshare, we need to put a home timeline item + // for all followers who can see the shared note + if ($this->kind != InteractionKind::RESHARE) + return; + $reason = new ReasonReshared($this->author); + $item = new TimelineItem($this->target, $reason); + + foreach ($this->target->getRelevantActors() as $actor) { + if (!$actor->isLocal) + return; + $user = UserAccount::findByLinkedActor($actor); + HomeTimelineItem::fromTimelineItem($item, $user)->save(); + } + } + public function jsonSerialize(): array { if ($this->deleted) { return [ |
