From 66ce13a0c7abdd90d96fc2725e3ea69f9e981377 Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Thu, 24 Sep 2020 17:58:45 +0200 Subject: change statement for deleting items with help from @Talon24 Signed-off-by: Benjamin Brahmer --- composer.lock | 20 ++++++++++---------- lib/Db/ItemMapper.php | 23 +++++++++++++++-------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/composer.lock b/composer.lock index e5e4ef9f0..7b31b1ac9 100644 --- a/composer.lock +++ b/composer.lock @@ -111,16 +111,16 @@ }, { "name": "debril/feed-io", - "version": "v4.7.8", + "version": "v4.7.9", "source": { "type": "git", "url": "https://github.com/alexdebril/feed-io.git", - "reference": "2fe979f7e288fff334deaa0ddeaa1f229632ab6e" + "reference": "3fbc023b52d7b97fed7e7ab0dd9a83fb9c556414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/alexdebril/feed-io/zipball/2fe979f7e288fff334deaa0ddeaa1f229632ab6e", - "reference": "2fe979f7e288fff334deaa0ddeaa1f229632ab6e", + "url": "https://api.github.com/repos/alexdebril/feed-io/zipball/3fbc023b52d7b97fed7e7ab0dd9a83fb9c556414", + "reference": "3fbc023b52d7b97fed7e7ab0dd9a83fb9c556414", "shasum": "" }, "require": { @@ -174,7 +174,7 @@ "type": "github" } ], - "time": "2020-08-17T13:46:18+00:00" + "time": "2020-09-21T08:29:55+00:00" }, { "name": "ezyang/htmlpurifier", @@ -826,16 +826,16 @@ }, { "name": "phpstan/phpstan", - "version": "0.12.43", + "version": "0.12.44", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "54221b44766cb4bdfe40d1828d5bba5dd79c38c6" + "reference": "330b45776ea77f167b150e24787412414a8fa469" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/54221b44766cb4bdfe40d1828d5bba5dd79c38c6", - "reference": "54221b44766cb4bdfe40d1828d5bba5dd79c38c6", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/330b45776ea77f167b150e24787412414a8fa469", + "reference": "330b45776ea77f167b150e24787412414a8fa469", "shasum": "" }, "require": { @@ -878,7 +878,7 @@ "type": "tidelift" } ], - "time": "2020-09-19T21:19:38+00:00" + "time": "2020-09-24T15:28:47+00:00" }, { "name": "phpunit/php-code-coverage", 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); } } -- cgit v1.2.3