summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2019-09-30 18:39:44 +0200
committerMaxence Lange <maxence@artificial-owl.com>2019-09-30 18:39:44 +0200
commit9a554f72be42e0370cfaf2c6dd04069fec14ebde (patch)
treecbbdc5c43f1875bda38422120a8a964a9f400fa9 /lib
parent741a49f09bd0d62a7f1477341144f765ca56cc7a (diff)
filter DM
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Db/SocialLimitsQueryBuilder.php10
-rw-r--r--lib/Db/StreamRequest.php12
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);
}