From 737ec9549f896514fcd5af9531795e2399e0db6a Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Fri, 9 Jun 2023 11:49:37 -0100 Subject: [PATCH] fill status.actor.avatar Signed-off-by: Maxence Lange --- lib/Db/SocialCrossQueryBuilder.php | 16 +++++++++++++--- lib/Db/StreamRequest.php | 1 + lib/Db/StreamRequestBuilder.php | 5 +++-- lib/Model/ActivityPub/ACore.php | 4 +++- lib/Model/ActivityPub/Stream.php | 10 +--------- 5 files changed, 21 insertions(+), 15 deletions(-) diff --git a/lib/Db/SocialCrossQueryBuilder.php b/lib/Db/SocialCrossQueryBuilder.php index 41e33fb9..ae9e3291 100644 --- a/lib/Db/SocialCrossQueryBuilder.php +++ b/lib/Db/SocialCrossQueryBuilder.php @@ -141,7 +141,11 @@ class SocialCrossQueryBuilder extends SocialCoreQueryBuilder { * @return Stream * @throws InvalidResourceException */ - public function parseLeftJoinStream(array $data, string $prefix = ''): Stream { + public function parseLeftJoinStream( + array $data, + string $prefix = '', + ?SocialQueryBuilder $qb = null + ): Stream { $new = []; foreach ($data as $k => $v) { if (str_starts_with($k, $prefix)) { @@ -151,11 +155,12 @@ class SocialCrossQueryBuilder extends SocialCoreQueryBuilder { $stream = new Stream(); $stream->importFromDatabase($new); + $stream->setExportFormat($qb?->getFormat() ?? 0); if ($stream->getId() === '') { throw new InvalidResourceException(); } - $actor = $this->parseLeftJoinCacheActors($data, $prefix . 'cacheactor_'); + $actor = $this->parseLeftJoinCacheActors($data, $prefix . 'cacheactor_', $qb); $stream->setActor($actor); return $stream; @@ -168,7 +173,11 @@ class SocialCrossQueryBuilder extends SocialCoreQueryBuilder { * @return Person * @throws InvalidResourceException */ - public function parseLeftJoinCacheActors(array $data, string $prefix = ''): Person { + public function parseLeftJoinCacheActors( + array $data, + string $prefix = '', + ?SocialQueryBuilder $qb = null + ): Person { $new = []; foreach ($data as $k => $v) { @@ -179,6 +188,7 @@ class SocialCrossQueryBuilder extends SocialCoreQueryBuilder { $actor = new Person(); $actor->importFromDatabase($new); + $actor->setExportFormat($qb?->getFormat() ?? 0); if (!AP::$activityPub->isActor($actor)) { throw new InvalidResourceException(); diff --git a/lib/Db/StreamRequest.php b/lib/Db/StreamRequest.php index bd29ba6b..a5f38dcf 100644 --- a/lib/Db/StreamRequest.php +++ b/lib/Db/StreamRequest.php @@ -586,6 +586,7 @@ class StreamRequest extends StreamRequestBuilder { $qb->limitToDest($actor->getId(), 'notif', '', 'sd'); $qb->linkToCacheActors('ca', 's.attributed_to_prim'); $qb->leftJoinStreamAction(); + $qb->leftJoinObjectStatus(); return $this->getStreamsFromRequest($qb); } diff --git a/lib/Db/StreamRequestBuilder.php b/lib/Db/StreamRequestBuilder.php index 620c07c8..4d4e9077 100644 --- a/lib/Db/StreamRequestBuilder.php +++ b/lib/Db/StreamRequestBuilder.php @@ -217,7 +217,7 @@ class StreamRequestBuilder extends CoreRequestBuilder { } try { - $actor = $qb->parseLeftJoinCacheActors($data, 'cacheactor_'); + $actor = $qb->parseLeftJoinCacheActors($data, 'cacheactor_', $qb); $actor->setExportFormat($qb->getFormat()); $item->setCompleteDetails(true); $item->setActor($actor); @@ -225,7 +225,8 @@ class StreamRequestBuilder extends CoreRequestBuilder { } try { - $object = $qb->parseLeftJoinStream($data, 'objectstream_'); + $object = $qb->parseLeftJoinStream($data, 'objectstream_', $qb); + $object->setExportFormat($qb->getFormat()); $item->setObject($object); } catch (InvalidResourceException $e) { } diff --git a/lib/Model/ActivityPub/ACore.php b/lib/Model/ActivityPub/ACore.php index da06209a..63fc65cb 100644 --- a/lib/Model/ActivityPub/ACore.php +++ b/lib/Model/ActivityPub/ACore.php @@ -652,7 +652,9 @@ class ACore extends Item implements JsonSerializable, IQueryRow { * @return $this */ public function setExportFormat(int $format): self { - $this->format = $format; + if ($format > 0) { + $this->format = $format; + } return $this; } diff --git a/lib/Model/ActivityPub/Stream.php b/lib/Model/ActivityPub/Stream.php index d4df8866..03714965 100644 --- a/lib/Model/ActivityPub/Stream.php +++ b/lib/Model/ActivityPub/Stream.php @@ -684,19 +684,11 @@ class Stream extends ACore implements IQueryRow, JsonSerializable { $type = ''; } - $status = null; - $statusPost = $this->getDetails('post'); - if (sizeof($statusPost) > 0) { - $status = new Stream(); - $status->importFromLocal($statusPost); - $status->setExportFormat(self::FORMAT_LOCAL); - } - $result = [ 'id' => (string)$this->getNid(), 'type' => $type, 'created_at' => date('Y-m-d\TH:i:s', $this->getPublishedTime()) . '.000Z', - 'status' => $status, + 'status' => $this->getObject(), ]; if ($this->hasActor()) {