aboutsummaryrefslogtreecommitdiffhomepage
path: root/Digitigrade/Model/Interaction.php
diff options
context:
space:
mode:
Diffstat (limited to 'Digitigrade/Model/Interaction.php')
-rw-r--r--Digitigrade/Model/Interaction.php20
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 [