mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-04-30 19:25:03 -04:00
New button to delete errored feeds from a category (#7030)
* New button to delete errored feeds from a category fix https://github.com/FreshRSS/FreshRSS/issues/7025 fix https://github.com/FreshRSS/FreshRSS/issues/7026 * Remove English TODO * in error state * Feeds with errors
This commit is contained in:
committed by
GitHub
parent
b84cbce905
commit
2c7e5b829f
@@ -229,11 +229,12 @@ class FreshRSS_category_Controller extends FreshRSS_ActionController {
|
||||
}
|
||||
|
||||
$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
|
||||
|
||||
@@ -267,12 +267,16 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo {
|
||||
|
||||
/**
|
||||
* @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];
|
||||
@@ -406,13 +410,17 @@ SQL;
|
||||
|
||||
/**
|
||||
* @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 [];
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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
|
||||
|
||||
@@ -193,7 +193,7 @@ return array(
|
||||
),
|
||||
'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
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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
|
||||
|
||||
@@ -193,7 +193,7 @@ return array(
|
||||
),
|
||||
'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
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -193,7 +193,7 @@ return array(
|
||||
),
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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' => ' غیر فعال کردن',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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ä',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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
|
||||
|
||||
@@ -193,7 +193,7 @@ return array(
|
||||
),
|
||||
'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
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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' => '無効',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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' => '비활성화',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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' => 'Отключить',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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ť',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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' => '禁用',
|
||||
|
||||
@@ -18,6 +18,8 @@ return array(
|
||||
'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' => '禁用',
|
||||
|
||||
@@ -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') ?>"
|
||||
|
||||
Reference in New Issue
Block a user