summaryrefslogtreecommitdiffstats
path: root/lib/Db/StreamRequestBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Db/StreamRequestBuilder.php')
-rw-r--r--lib/Db/StreamRequestBuilder.php22
1 files changed, 18 insertions, 4 deletions
diff --git a/lib/Db/StreamRequestBuilder.php b/lib/Db/StreamRequestBuilder.php
index 910d4641..3198887b 100644
--- a/lib/Db/StreamRequestBuilder.php
+++ b/lib/Db/StreamRequestBuilder.php
@@ -39,6 +39,7 @@ use OCA\Social\Exceptions\ItemUnknownException;
use OCA\Social\Exceptions\SocialAppConfigException;
use OCA\Social\Model\ActivityPub\ACore;
use OCA\Social\Model\ActivityPub\Actor\Person;
+use OCA\Social\Model\ActivityPub\Object\Announce;
use OCA\Social\Model\ActivityPub\Stream;
use OCA\Social\Model\InstancePath;
use OCP\DB\QueryBuilder\ICompositeExpression;
@@ -98,7 +99,8 @@ class StreamRequestBuilder extends CoreRequestBuilder {
's.object_id', 's.attributed_to', 's.in_reply_to', 's.source', 's.local',
's.instances', 's.creation', 's.hidden_on_timeline'
)
- ->from(self::TABLE_STREAMS, 's');
+ ->from(self::TABLE_STREAMS, 's')
+ ->groupBy('s.id');
$this->defaultSelectAlias = 's';
@@ -160,19 +162,26 @@ class StreamRequestBuilder extends CoreRequestBuilder {
$func = $qb->func();
$expr = $qb->expr();
+
$filter = $expr->orX();
+ $filter->add($this->exprLimitToDBFieldInt($qb, 'hidden_on_timeline', 0));
+
$filter->add(
$expr->neq(
$func->lower('attributed_to'),
$func->lower($qb->createNamedParameter($actor->getId()))
)
);
- $filter->add(
+
+ $follower = $expr->andX();
+ $follower->add(
$expr->eq(
- 'hidden_on_timeline',
- $qb->createNamedParameter('0')
+ $func->lower('f.object_id'),
+ $func->lower('attributed_to')
)
);
+ $follower->add($this->exprLimitToDBField($qb, 'actor_id', $actor->getId(), false, 'f'));
+ $filter->add($follower);
$qb->andwhere($filter);
}
@@ -188,6 +197,7 @@ class StreamRequestBuilder extends CoreRequestBuilder {
}
$on = $this->exprJoinFollowing($qb, $actor);
+ $qb->selectAlias('f.object_id', 'following_actor_id');
$qb->join($this->defaultSelectAlias, CoreRequestBuilder::TABLE_FOLLOWS, 'f', $on);
}
@@ -431,6 +441,10 @@ class StreamRequestBuilder extends CoreRequestBuilder {
$item->setAction($action);
+ if ($item->getType() === Announce::TYPE) {
+ $item->setAttributedTo($this->get('following_actor_id', $data, ''));
+ }
+
return $item;
}