diff options
author | Benjamin Brahmer <info@b-brahmer.de> | 2020-09-24 17:58:45 +0200 |
---|---|---|
committer | Benjamin Brahmer <info@b-brahmer.de> | 2020-09-25 19:18:04 +0200 |
commit | 66ce13a0c7abdd90d96fc2725e3ea69f9e981377 (patch) | |
tree | 30fc76b9a6f3fc33e732232e6174864541fe8ecf /lib | |
parent | f26cb243ea302c27be5e6dda204eb4b97e86a6cb (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.php | 23 |
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); } } |