diff options
author | Maxence Lange <maxence@artificial-owl.com> | 2019-09-30 18:39:44 +0200 |
---|---|---|
committer | Maxence Lange <maxence@artificial-owl.com> | 2019-09-30 18:39:44 +0200 |
commit | 9a554f72be42e0370cfaf2c6dd04069fec14ebde (patch) | |
tree | cbbdc5c43f1875bda38422120a8a964a9f400fa9 /lib | |
parent | 741a49f09bd0d62a7f1477341144f765ca56cc7a (diff) |
filter DM
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Db/SocialLimitsQueryBuilder.php | 10 | ||||
-rw-r--r-- | lib/Db/StreamRequest.php | 12 |
2 files changed, 17 insertions, 5 deletions
diff --git a/lib/Db/SocialLimitsQueryBuilder.php b/lib/Db/SocialLimitsQueryBuilder.php index 188395cc..f4c21bb5 100644 --- a/lib/Db/SocialLimitsQueryBuilder.php +++ b/lib/Db/SocialLimitsQueryBuilder.php @@ -311,6 +311,16 @@ class SocialLimitsQueryBuilder extends SocialCrossQueryBuilder { /** + * @param string $recipient + */ + public function filterDest(string $recipient) { + $expr = $this->expr(); + + $this->andWhere($expr->neq('actor_id', $this->createNamedParameter($this->prim($recipient)))); + } + + + /** * @param string $actorId * @param string $type * @param string $subType diff --git a/lib/Db/StreamRequest.php b/lib/Db/StreamRequest.php index 550fe51c..96b66513 100644 --- a/lib/Db/StreamRequest.php +++ b/lib/Db/StreamRequest.php @@ -454,17 +454,19 @@ class StreamRequest extends StreamRequestBuilder { */ public function getTimelineDirect(Person $actor, int $since = 0, int $limit = 5): array { $qb = $this->getStreamSelectSql(); + + $qb->filterType(SocialAppNotification::TYPE); $qb->limitPaginate($since, $limit); + $qb->innerJoinCacheActors('ca', 's.attributed_to_prim'); + $qb->selectDestFollowing('sd', ''); $qb->innerJoinDest('recipient', 'id_prim', 'sd', 's'); $qb->limitToDest($actor->getId(), 'recipient', '', 'sd'); - $this->filterRecipient($qb, ACore::CONTEXT_PUBLIC); - $this->filterRecipient($qb, $actor->getFollowers()); - $qb->filterType(SocialAppNotification::TYPE); - - $qb->innerJoinCacheActors('ca', 's.attributed_to_prim'); + $qb->filterDest(ACore::CONTEXT_PUBLIC); + $qb->filterDest($actor->getFollowers()); + $qb->andWhere($qb->exprLimitToDBFieldInt('hidden_on_timeline', 1, 's')); return $this->getStreamsFromRequest($qb); } |