summaryrefslogtreecommitdiffstats
path: root/lib/Db/FolderMapperV2.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Db/FolderMapperV2.php')
-rw-r--r--lib/Db/FolderMapperV2.php26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/Db/FolderMapperV2.php b/lib/Db/FolderMapperV2.php
index 85e07c07f..12fa26887 100644
--- a/lib/Db/FolderMapperV2.php
+++ b/lib/Db/FolderMapperV2.php
@@ -95,4 +95,30 @@ class FolderMapperV2 extends NewsMapperV2
return $this->findEntity($builder);
}
+
+ /**
+ * @param string $userId
+ * @param int $id
+ * @param int|null $maxItemID
+ *
+ * @return void
+ */
+ 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.folder_id = :folderId')
+ ->setParameter('userId', $userId)
+ ->setParameter('folderId', $id);
+
+ if ($maxItemID !== null) {
+ $builder->andWhere('items.id =< :maxItemId')
+ ->setParameter('maxItemId', $maxItemID);
+ }
+
+ $this->db->executeUpdate($builder->getSQL());
+ }
}