summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2019-05-29 16:47:09 -0100
committerMaxence Lange <maxence@artificial-owl.com>2019-05-29 16:47:09 -0100
commit13a03ee457475b1ae8bc9ea69c4b5790a12a56a9 (patch)
tree82b42b606b7ec7e7b443bf4b4080bea1f3701171
parent1a04aab7b21de0db24b352870a2251df23087410 (diff)
parse as Note if asked
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
-rw-r--r--lib/AP.php5
-rw-r--r--lib/Db/StreamRequest.php2
-rw-r--r--lib/Db/StreamRequestBuilder.php9
-rw-r--r--lib/Model/ActivityPub/Stream.php3
4 files changed, 16 insertions, 3 deletions
diff --git a/lib/AP.php b/lib/AP.php
index 5db1eabc..80859eae 100644
--- a/lib/AP.php
+++ b/lib/AP.php
@@ -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';