aboutsummaryrefslogtreecommitdiffhomepage
path: root/Digitigrade
diff options
context:
space:
mode:
Diffstat (limited to 'Digitigrade')
-rw-r--r--Digitigrade/Model/FetchableModel.php4
-rw-r--r--Digitigrade/Model/Instance.php2
-rw-r--r--Digitigrade/Model/Note.php11
-rw-r--r--Digitigrade/Model/PushableModel.php2
4 files changed, 16 insertions, 3 deletions
diff --git a/Digitigrade/Model/FetchableModel.php b/Digitigrade/Model/FetchableModel.php
index f6e0218..c6bc291 100644
--- a/Digitigrade/Model/FetchableModel.php
+++ b/Digitigrade/Model/FetchableModel.php
@@ -81,7 +81,7 @@ abstract class FetchableModel extends Model implements RemoteFetchable {
$obj = static::createFromJson($data, $autoSave, $uri);
- $obj->finaliseAfterFetch($uri);
+ $obj->finaliseAfterFetch($uri, $data);
if (!$obj->validate() || !PolicyManager::getInstance()->check($obj)) {
return null; // and don't save
}
@@ -93,7 +93,7 @@ abstract class FetchableModel extends Model implements RemoteFetchable {
return $obj;
}
- protected function finaliseAfterFetch(string $uri) {
+ protected function finaliseAfterFetch(string $uri, ?\stdClass $data = null) {
}
protected function finaliseAfterSave() {
diff --git a/Digitigrade/Model/Instance.php b/Digitigrade/Model/Instance.php
index a10c7b9..2bcc258 100644
--- a/Digitigrade/Model/Instance.php
+++ b/Digitigrade/Model/Instance.php
@@ -48,7 +48,7 @@ class Instance extends FetchableModel {
$this->auth = $auth;
}
- protected function finaliseAfterFetch(string $uri) {
+ protected function finaliseAfterFetch(string $uri, ?\stdClass $data = null) {
$this->domain = hostname_from_uri($uri);
}
diff --git a/Digitigrade/Model/Note.php b/Digitigrade/Model/Note.php
index 4675546..6246795 100644
--- a/Digitigrade/Model/Note.php
+++ b/Digitigrade/Model/Note.php
@@ -101,6 +101,17 @@ class Note extends PushableModel implements TimelineIncludeable, Notifyable {
$this->saveFormattedContents();
}
+ protected function finaliseAfterFetch(string $uri, ?\stdClass $data = null) {
+ // have to set up mentions here because it's not able to automatically map Actor[] ?
+ $this->mentions = [];
+ foreach (($data->mentions ?? []) as $actorUri) {
+ $actor = Actor::findByUri($actorUri);
+ if ($actor != null) {
+ $this->mentions[] = $actor;
+ }
+ }
+ }
+
protected function validate(): bool {
// author has to be from the same instance as the note itself
return hostname_from_uri($this->author->uri) == hostname_from_uri($this->uri);
diff --git a/Digitigrade/Model/PushableModel.php b/Digitigrade/Model/PushableModel.php
index e773779..b30d9a7 100644
--- a/Digitigrade/Model/PushableModel.php
+++ b/Digitigrade/Model/PushableModel.php
@@ -21,6 +21,8 @@ abstract class PushableModel extends FetchableModel implements \JsonSerializable
}
$obj = static::createFromJson($data, $autoSave);
+
+ $obj->finaliseAfterFetch($data->self ?? '', $data);
if (!$obj->validate() || !PolicyManager::getInstance()->check($obj)) {
return null; // and don't save
}