diff options
author | Maxence Lange <maxence@artificial-owl.com> | 2019-05-29 16:47:09 -0100 |
---|---|---|
committer | Maxence Lange <maxence@artificial-owl.com> | 2019-05-29 16:47:09 -0100 |
commit | 13a03ee457475b1ae8bc9ea69c4b5790a12a56a9 (patch) | |
tree | 82b42b606b7ec7e7b443bf4b4080bea1f3701171 | |
parent | 1a04aab7b21de0db24b352870a2251df23087410 (diff) |
parse as Note if asked
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
-rw-r--r-- | lib/AP.php | 5 | ||||
-rw-r--r-- | lib/Db/StreamRequest.php | 2 | ||||
-rw-r--r-- | lib/Db/StreamRequestBuilder.php | 9 | ||||
-rw-r--r-- | lib/Model/ActivityPub/Stream.php | 3 |
4 files changed, 16 insertions, 3 deletions
@@ -73,6 +73,7 @@ use OCA\Social\Model\ActivityPub\Object\Image; use OCA\Social\Model\ActivityPub\Object\Note; use OCA\Social\Model\ActivityPub\Internal\SocialAppNotification; use OCA\Social\Model\ActivityPub\Object\Tombstone; +use OCA\Social\Model\ActivityPub\Stream; use OCA\Social\Service\ConfigService; use OCP\AppFramework\QueryException; @@ -317,6 +318,10 @@ class AP { $item = new SocialAppNotification(); break; + case Stream::TYPE: + $item = new Stream(); + break; + case Person::TYPE: $item = new Person(); break; diff --git a/lib/Db/StreamRequest.php b/lib/Db/StreamRequest.php index 1555c19a..592a3389 100644 --- a/lib/Db/StreamRequest.php +++ b/lib/Db/StreamRequest.php @@ -473,7 +473,7 @@ class StreamRequest extends StreamRequestBuilder { $streams = []; $cursor = $qb->execute(); while ($data = $cursor->fetch()) { - $streams[] = $this->parseStreamSelectSql($data); + $streams[] = $this->parseStreamSelectSql($data, Note::TYPE); } $cursor->closeCursor(); diff --git a/lib/Db/StreamRequestBuilder.php b/lib/Db/StreamRequestBuilder.php index f4cbbe61..bfeeff68 100644 --- a/lib/Db/StreamRequestBuilder.php +++ b/lib/Db/StreamRequestBuilder.php @@ -32,6 +32,7 @@ namespace OCA\Social\Db; use daita\MySmallPhpTools\Traits\TArrayTools; use Doctrine\DBAL\Query\QueryBuilder; +use OCA\Social\AP; use OCA\Social\Exceptions\InvalidResourceException; use OCA\Social\Model\ActivityPub\ACore; use OCA\Social\Model\ActivityPub\Actor\Person; @@ -385,11 +386,15 @@ class StreamRequestBuilder extends CoreRequestBuilder { /** * @param array $data + * @param string $as * * @return Stream + * @throws ItemUnknownException + * @throws SocialAppConfigException */ - protected function parseStreamSelectSql($data): Stream { - $item = new Stream(); + protected function parseStreamSelectSql(array $data, string $as = Stream::TYPE): Stream { + /** @var Stream $item */ + $item = AP::$activityPub->getItemFromType($as); $item->importFromDatabase($data); $instances = json_decode($this->get('instances', $data, '[]'), true); diff --git a/lib/Model/ActivityPub/Stream.php b/lib/Model/ActivityPub/Stream.php index 8c40d0bf..d961f78c 100644 --- a/lib/Model/ActivityPub/Stream.php +++ b/lib/Model/ActivityPub/Stream.php @@ -41,6 +41,9 @@ use OCA\Social\Model\StreamAction; class Stream extends ACore implements JsonSerializable { + const TYPE = 'Stream'; + + const TYPE_PUBLIC = 'public'; const TYPE_UNLISTED = 'unlisted'; const TYPE_FOLLOWERS = 'followers'; |