From 9a554f72be42e0370cfaf2c6dd04069fec14ebde Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Mon, 30 Sep 2019 18:39:44 +0200 Subject: [PATCH] filter DM Signed-off-by: Maxence Lange --- lib/Db/SocialLimitsQueryBuilder.php | 10 ++++++++++ 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 @@ -310,6 +310,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 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); }