diff options
Diffstat (limited to 'lib/Db/FeedMapperV2.php')
-rw-r--r-- | lib/Db/FeedMapperV2.php | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/Db/FeedMapperV2.php b/lib/Db/FeedMapperV2.php index b3d8879f3..5e346732c 100644 --- a/lib/Db/FeedMapperV2.php +++ b/lib/Db/FeedMapperV2.php @@ -153,4 +153,28 @@ class FeedMapperV2 extends NewsMapperV2 return $this->findEntities($builder); } + + /** + * @param string $userId + * @param int $id + * @param int|null $maxItemID + */ + public function read(string $userId, int $id, ?int $maxItemID = null): void + { + $builder = $this->db->getQueryBuilder(); + $builder->update(ItemMapperV2::TABLE_NAME, 'items') + ->innerJoin('items', FeedMapperV2::TABLE_NAME, 'feeds', 'items.feed_id = feeds.id') + ->setValue('unread', 0) + ->andWhere('feeds.user_id = :userId') + ->andWhere('feeds.id = :feedId') + ->setParameter('userId', $userId) + ->setParameter('feedId', $id); + + if ($maxItemID !== null) { + $builder->andWhere('items.id =< :maxItemId') + ->setParameter('maxItemId', $maxItemID); + } + + $this->db->executeUpdate($builder->getSQL()); + } } |