summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBenjamin Brahmer <info@b-brahmer.de>2020-09-24 17:58:45 +0200
committerBenjamin Brahmer <info@b-brahmer.de>2020-09-25 19:18:04 +0200
commit66ce13a0c7abdd90d96fc2725e3ea69f9e981377 (patch)
tree30fc76b9a6f3fc33e732232e6174864541fe8ecf /lib
parentf26cb243ea302c27be5e6dda204eb4b97e86a6cb (diff)
change statement for deleting items with help from @Talon24
Signed-off-by: Benjamin Brahmer <info@b-brahmer.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/Db/ItemMapper.php23
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/Db/ItemMapper.php b/lib/Db/ItemMapper.php
index f0442aee9..2e08471db 100644
--- a/lib/Db/ItemMapper.php
+++ b/lib/Db/ItemMapper.php
@@ -357,20 +357,27 @@ class ItemMapper extends NewsMapper
while ($row = $result->fetch()) {
$size = (int)$row['size'];
$limit = $size - $threshold;
+ $feed_id = $row['feed_id'];
if ($limit > 0) {
- $params = [false, false, $row['feed_id'], $limit];
-
- $sql = 'DELETE FROM `*PREFIX*news_items` ' .
- 'WHERE `id` IN (' .
- 'SELECT `id` FROM `*PREFIX*news_items` ' .
+ $params = [false, false, $feed_id, $limit];
+ $sql = 'SELECT `id` FROM `*PREFIX*news_items` ' .
'WHERE `unread` = ? ' .
'AND `starred` = ? ' .
'AND `feed_id` = ? ' .
'ORDER BY `id` ASC ' .
- 'LIMIT ?' .
- ')';
-
+ 'LIMIT 1 ' .
+ 'OFFSET ? ';
+ }
+ $limit_result = $this->execute($sql, $params);
+ if ($limit_row = $limit_result->fetch()) {
+ $limit_id = (int)$limit_row['id'];
+ $params = [false, false, $feed_id, $limit_id];
+ $sql = 'DELETE FROM `*PREFIX*news_items` ' .
+ 'WHERE `unread` = ? ' .
+ 'AND `starred` = ? ' .
+ 'AND `feed_id` = ? ' .
+ 'AND `id` < ? ';
$this->execute($sql, $params);
}
}