summaryrefslogtreecommitdiffstats
path: root/db/mysql
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2016-04-06 23:43:27 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2016-04-06 23:43:43 +0200
commit65d28653ae1a1d2a7680ccfa694dbb7e2d4d750f (patch)
tree0e005dc5c41e7ba4c2dec602cea4d6e8aa2a4e65 /db/mysql
parent4f8b81c7a353b5704d3a1d7d438077ac06dfdb4d (diff)
try marking same items as read if they contain the same content
Diffstat (limited to 'db/mysql')
-rw-r--r--db/mysql/itemmapper.php17
1 files changed, 17 insertions, 0 deletions
diff --git a/db/mysql/itemmapper.php b/db/mysql/itemmapper.php
index 5fb28880b..720f03744 100644
--- a/db/mysql/itemmapper.php
+++ b/db/mysql/itemmapper.php
@@ -63,5 +63,22 @@ class ItemMapper extends \OCA\News\Db\ItemMapper {
}
+ public function readItem($itemId, $isRead, $lastModified, $userId) {
+ if ($isRead) {
+ $sql = 'UPDATE `*PREFIX*news_items` `items`
+ JOIN `*PREFIX*news_feeds` `feeds`
+ ON `feeds`.`id` = `items`.`feed_id`
+ SET `items`.`status` = `items`.`status` & ?
+ AND `items`.`last_modified` = ?
+ WHERE `items`.`fingerprint` = ?
+ AND `feeds`.`user_id` = ?';
+ $params = [~StatusFlag::UNREAD, $lastModified,
+ $item->getFingerprint(), $userId];
+ $this->execute($sql, $params);
+ } else {
+ // no other behavior for mysql if should be marked unread
+ parent::readItem($itemId, $isRead, $lastModified, $userId);
+ }
+ }
}