Skip to content

Commit

Permalink
New button to delete errored feeds from a category (FreshRSS#7030)
Browse files Browse the repository at this point in the history
* New button to delete errored feeds from a category
fix FreshRSS#7025
fix FreshRSS#7026

* Remove English TODO

* in error state

* Feeds with errors
  • Loading branch information
Alkarex authored Dec 3, 2024
1 parent b84cbce commit 2c7e5b8
Show file tree
Hide file tree
Showing 32 changed files with 74 additions and 9 deletions.
5 changes: 3 additions & 2 deletions app/Controllers/categoryController.php
Original file line number Diff line number Diff line change
Expand Up @@ -229,11 +229,12 @@ public function emptyAction(): void {
}

$muted = Minz_Request::paramTernary('muted');
$errored = Minz_Request::paramTernary('errored');

// List feeds to remove then related user queries.
$feeds = $feedDAO->listByCategory($id, $muted);
$feeds = $feedDAO->listByCategory($id, $muted, $errored);

if ($feedDAO->deleteFeedByCategory($id, $muted)) {
if ($feedDAO->deleteFeedByCategory($id, $muted, $errored)) {
// TODO: Delete old favicons

// Remove related queries
Expand Down
12 changes: 10 additions & 2 deletions app/Models/FeedDAO.php
Original file line number Diff line number Diff line change
Expand Up @@ -267,12 +267,16 @@ public function deleteFeed(int $id): int|false {

/**
* @param bool|null $muted to include only muted feeds
* @param bool|null $errored to include only errored feeds
*/
public function deleteFeedByCategory(int $id, ?bool $muted = null): int|false {
public function deleteFeedByCategory(int $id, ?bool $muted = null, ?bool $errored = null): int|false {
$sql = 'DELETE FROM `_feed` WHERE category=?';
if ($muted) {
$sql .= ' AND ttl < 0';
}
if ($errored) {
$sql .= ' AND error <> 0';
}
$stm = $this->pdo->prepare($sql);

$values = [$id];
Expand Down Expand Up @@ -406,13 +410,17 @@ public function listTitles(int $id, int $limit = 0): array {

/**
* @param bool|null $muted to include only muted feeds
* @param bool|null $errored to include only errored feeds
* @return array<int,FreshRSS_Feed>
*/
public function listByCategory(int $cat, ?bool $muted = null): array {
public function listByCategory(int $cat, ?bool $muted = null, ?bool $errored = null): array {
$sql = 'SELECT * FROM `_feed` WHERE category=:category';
if ($muted) {
$sql .= ' AND ttl < 0';
}
if ($errored) {
$sql .= ' AND error <> 0';
}
$res = $this->fetchAssoc($sql, [':category' => $cat]);
if ($res == null) {
return [];
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/cs/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Jít zpět na vaše kanály RSS',
'cancel' => 'Zrušit',
'create' => 'Vytvořit',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Odstranění ztlumených zdrojů',
'demote' => 'Snížit úroveň',
'disable' => 'Zakázat',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/de/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Zurück zu Ihren RSS-Feeds gehen',
'cancel' => 'Abbrechen',
'create' => 'Erstellen',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Lösche stumm gestellte Feeds',
'demote' => 'Zurückstufen',
'disable' => 'Deaktivieren',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/el/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Go back to your RSS feeds', // TODO
'cancel' => 'Cancel', // TODO
'create' => 'Create', // TODO
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Delete muted feeds', // TODO
'demote' => 'Demote', // TODO
'disable' => 'Disable', // TODO
Expand Down
2 changes: 1 addition & 1 deletion app/i18n/el/sub.php
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // TODO
'method_postparams' => 'Payload for POST', // TODO
'moved_category_deleted' => 'When you delete a category, its feeds are automatically classified under <em>%s</em>.', // TODO
'moved_category_deleted' => 'When you remove a category, its feeds are automatically classified under <em>%s</em>.', // TODO
'mute' => array(
'_' => 'mute', // TODO
'state_is_muted' => 'This feed is muted', // TODO
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/en-us/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Go back to your RSS feeds', // IGNORE
'cancel' => 'Cancel', // IGNORE
'create' => 'Create', // IGNORE
'delete_all_feeds' => 'Delete all feeds', // IGNORE
'delete_errored_feeds' => 'Delete feeds with errors', // IGNORE
'delete_muted_feeds' => 'Delete muted feeds', // IGNORE
'demote' => 'Demote', // IGNORE
'disable' => 'Disable', // IGNORE
Expand Down
2 changes: 1 addition & 1 deletion app/i18n/en-us/sub.php
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // IGNORE
'method_postparams' => 'Payload for POST', // IGNORE
'moved_category_deleted' => 'When you delete a category, its feeds are automatically classified under <em>%s</em>.', // IGNORE
'moved_category_deleted' => 'When you remove a category, its feeds are automatically classified under <em>%s</em>.', // IGNORE
'mute' => array(
'_' => 'mute', // IGNORE
'state_is_muted' => 'This feed is muted', // IGNORE
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/en/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Go back to your RSS feeds',
'cancel' => 'Cancel',
'create' => 'Create',
'delete_all_feeds' => 'Delete all feeds',
'delete_errored_feeds' => 'Delete feeds with errors',
'delete_muted_feeds' => 'Delete muted feeds',
'demote' => 'Demote',
'disable' => 'Disable',
Expand Down
2 changes: 1 addition & 1 deletion app/i18n/en/sub.php
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>',
'method_postparams' => 'Payload for POST',
'moved_category_deleted' => 'When you delete a category, its feeds are automatically classified under <em>%s</em>.',
'moved_category_deleted' => 'When you remove a category, its feeds are automatically classified under <em>%s</em>.',
'mute' => array(
'_' => 'mute',
'state_is_muted' => 'This feed is muted',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/es/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← regresar a tus fuentes RSS',
'cancel' => 'Cancelar',
'create' => 'Crear',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Eliminar fuentes silenciadas',
'demote' => 'Degradar',
'disable' => 'Desactivar',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/fa/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← به فیدهای RSS خود برگردید',
'cancel' => ' لغو',
'create' => ' ایجاد کنید',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => ' فیدهای خاموش را حذف کنید',
'demote' => ' تنزل دادن',
'disable' => ' غیر فعال کردن',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/fi/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Palaa RSS-syötteisiin',
'cancel' => 'Peruuta',
'create' => 'Luo',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Poista vaimennetut syötteet',
'demote' => 'Laske tärkeyttä',
'disable' => 'Poista käytöstä',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/fr/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Retour à vos flux RSS',
'cancel' => 'Annuler',
'create' => 'Créer',
'delete_all_feeds' => 'Supprimer tous les flux',
'delete_errored_feeds' => 'Supprimer les flux en erreur',
'delete_muted_feeds' => 'Supprimer les flux désactivés',
'demote' => 'Rétrograder',
'disable' => 'Désactiver',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/he/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← חזרה להזנות הRSS שלך',
'cancel' => 'ביטול',
'create' => 'יצירה',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Delete muted feeds', // TODO
'demote' => 'Demote', // TODO
'disable' => 'Disable', // TODO
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/hu/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Vissza az RSS hírforrásokhoz',
'cancel' => 'Mégsem',
'create' => 'Létrehoz',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Némított hírforrások törlése',
'demote' => 'Lefokoz',
'disable' => 'Kikapcsol',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/id/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Go back to your RSS feeds', // TODO
'cancel' => 'Cancel', // TODO
'create' => 'Create', // TODO
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Delete muted feeds', // TODO
'demote' => 'Demote', // TODO
'disable' => 'Disable', // TODO
Expand Down
2 changes: 1 addition & 1 deletion app/i18n/id/sub.php
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@
),
'method_help' => 'The POST payload has automatic support for <code>application/x-www-form-urlencoded</code> and <code>application/json</code>', // TODO
'method_postparams' => 'Payload for POST', // TODO
'moved_category_deleted' => 'When you delete a category, its feeds are automatically classified under <em>%s</em>.', // TODO
'moved_category_deleted' => 'When you remove a category, its feeds are automatically classified under <em>%s</em>.', // TODO
'mute' => array(
'_' => 'mute', // TODO
'state_is_muted' => 'This feed is muted', // TODO
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/it/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Indietro',
'cancel' => 'Annulla',
'create' => 'Crea',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Cancella i feed mutati',
'demote' => 'Retrocedi',
'disable' => 'Disabilita',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/ja/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← RSSフィードに戻る',
'cancel' => 'キャンセル',
'create' => '作成',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'ミュートにしているフィードを削除する',
'demote' => '寄付',
'disable' => '無効',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/ko/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← RSS 피드로 돌아가기',
'cancel' => '취소',
'create' => '생성',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => '음소거된 피드 삭제',
'demote' => '목록 수준 내리기',
'disable' => '비활성화',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/lv/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Atgriezieties pie RSS barotnēm',
'cancel' => 'Atcelt',
'create' => 'Uztaisīt',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Izdzēst izslēgtās barotnes',
'demote' => 'Pazemināt amatu',
'disable' => 'Izslēgt',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/nl/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Ga terug naar je RSS feeds',
'cancel' => 'Annuleren',
'create' => 'Opslaan',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Gedempte feeds verwijderen',
'demote' => 'Degraderen',
'disable' => 'Uitzetten',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/oc/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Tornar a vòstres fluxes RSS',
'cancel' => 'Anullar',
'create' => 'Crear',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Suprimir los flux muts',
'demote' => 'Retrogradar',
'disable' => 'Desactivar',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/pl/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Wróć do subskrybowanych kanałów RSS',
'cancel' => 'Anuluj',
'create' => 'Stwórz',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Usuń wyciszone kanały',
'demote' => 'Zdegraduj',
'disable' => 'Wyłącz',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/pt-br/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Volte para o seu feeds RSS',
'cancel' => 'Cancelar',
'create' => 'Criar',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Excluir feeds silenciados',
'demote' => 'Despromover',
'disable' => 'Desabilitar',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/ru/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Вернуться к вашим RSS-лентам',
'cancel' => 'Отменить',
'create' => 'Создать',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Удалить заглушенные ленты',
'demote' => 'Понизить',
'disable' => 'Отключить',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/sk/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← Späť na vaše RSS kanály',
'cancel' => 'Zrušiť',
'create' => 'Vytvoriť',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Vymazať stíšené kanály',
'demote' => 'Degradovať',
'disable' => 'Zakázať',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/tr/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← RSS akışlarınız için geri gidin',
'cancel' => 'İptal',
'create' => 'Oluştur',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => 'Sessize alınmış akışları sil',
'demote' => 'Yöneticilikten al',
'disable' => 'Pasif',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/zh-cn/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← 返回订阅源',
'cancel' => '取消',
'create' => '创建',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => '删除已暂停的订阅源',
'demote' => '撤销管理员',
'disable' => '禁用',
Expand Down
2 changes: 2 additions & 0 deletions app/i18n/zh-tw/gen.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
'back_to_rss_feeds' => '← 返回訂閱源',
'cancel' => '取消',
'create' => '創建',
'delete_all_feeds' => 'Delete all feeds', // TODO
'delete_errored_feeds' => 'Delete feeds with errors', // TODO
'delete_muted_feeds' => '刪除已暫停的訂閱源',
'demote' => '撤銷管理員',
'disable' => '禁用',
Expand Down
8 changes: 7 additions & 1 deletion app/views/helpers/category/update.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -249,10 +249,16 @@
<?php endif;?>
<div class="form-group form-actions">
<div class="group-controls">
<button type="submit" class="btn btn-attention confirm"
data-str-confirm="<?= _t('gen.js.confirm_action_feed_cat') ?>"
formaction="<?= _url('category', 'empty', 'id', $this->category->id(), 'errored', 1) ?>"
formmethod="post"><?= _t('gen.action.delete_errored_feeds') ?></button>

<button type="submit" class="btn btn-attention confirm"
data-str-confirm="<?= _t('gen.js.confirm_action_feed_cat') ?>"
formaction="<?= _url('category', 'empty', 'id', $this->category->id()) ?>"
formmethod="post"><?= _t('gen.action.empty') ?></button>
formmethod="post"><?= _t('gen.action.delete_all_feeds') ?></button>

<?php if (!$this->category->isDefault()): ?>
<button type="submit" class="btn btn-attention confirm"
data-str-confirm="<?= _t('gen.js.confirm_action_feed_cat') ?>"
Expand Down

0 comments on commit 2c7e5b8

Please sign in to comment.