diff options
author | Thomas Citharel <tcit@tcit.fr> | 2017-03-30 16:24:59 +0200 |
---|---|---|
committer | Nicolas Lœuillet <nicolas@loeuillet.org> | 2017-03-31 10:46:05 +0200 |
commit | 6da1aebc946e6448dd0d5080ee88e79c2bae4666 (patch) | |
tree | 43d350623f225ee560e040cd361d628454f2b1a7 | |
parent | fa884b30ba0f8cb4231bd37fff23ef2f41ae6cfa (diff) | |
download | wallabag-6da1aebc946e6448dd0d5080ee88e79c2bae4666.tar.gz wallabag-6da1aebc946e6448dd0d5080ee88e79c2bae4666.tar.zst wallabag-6da1aebc946e6448dd0d5080ee88e79c2bae4666.zip |
Allow to remove all archived entries
Since we still support fucking SQLite, we need to retrieve all tags & annotations for archived entries before deleting them.
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
18 files changed, 205 insertions, 1 deletions
diff --git a/src/Wallabag/AnnotationBundle/Repository/AnnotationRepository.php b/src/Wallabag/AnnotationBundle/Repository/AnnotationRepository.php index 8d3f07ee..23f21c3e 100644 --- a/src/Wallabag/AnnotationBundle/Repository/AnnotationRepository.php +++ b/src/Wallabag/AnnotationBundle/Repository/AnnotationRepository.php | |||
@@ -122,4 +122,20 @@ class AnnotationRepository extends EntityRepository | |||
122 | ->setParameter('userId', $userId) | 122 | ->setParameter('userId', $userId) |
123 | ->execute(); | 123 | ->execute(); |
124 | } | 124 | } |
125 | |||
126 | /** | ||
127 | * Find all annotations related to archived entries | ||
128 | * | ||
129 | * @param $userId | ||
130 | * @return mixed | ||
131 | */ | ||
132 | public function findAllByArchivedEntriesAndUserId($userId) | ||
133 | { | ||
134 | return $this->createQueryBuilder('a') | ||
135 | ->leftJoin('a.entry', 'e') | ||
136 | ->where('a.user = :userid')->setParameter(':userid', $userId) | ||
137 | ->andWhere('e.isArchived = true') | ||
138 | ->getQuery() | ||
139 | ->getResult(); | ||
140 | } | ||
125 | } | 141 | } |
diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Wallabag/CoreBundle/Controller/ConfigController.php index 907bf78e..7dbe3f18 100644 --- a/src/Wallabag/CoreBundle/Controller/ConfigController.php +++ b/src/Wallabag/CoreBundle/Controller/ConfigController.php | |||
@@ -248,7 +248,7 @@ class ConfigController extends Controller | |||
248 | break; | 248 | break; |
249 | 249 | ||
250 | case 'entries': | 250 | case 'entries': |
251 | // SQLite doesn't care about cascading remove, so we need to manually remove associated stuf | 251 | // SQLite doesn't care about cascading remove, so we need to manually remove associated stuff |
252 | // otherwise they won't be removed ... | 252 | // otherwise they won't be removed ... |
253 | if ($this->get('doctrine')->getConnection()->getDriver() instanceof \Doctrine\DBAL\Driver\PDOSqlite\Driver) { | 253 | if ($this->get('doctrine')->getConnection()->getDriver() instanceof \Doctrine\DBAL\Driver\PDOSqlite\Driver) { |
254 | $this->getDoctrine()->getRepository('WallabagAnnotationBundle:Annotation')->removeAllByUserId($this->getUser()->getId()); | 254 | $this->getDoctrine()->getRepository('WallabagAnnotationBundle:Annotation')->removeAllByUserId($this->getUser()->getId()); |
@@ -260,6 +260,19 @@ class ConfigController extends Controller | |||
260 | $this->getDoctrine() | 260 | $this->getDoctrine() |
261 | ->getRepository('WallabagCoreBundle:Entry') | 261 | ->getRepository('WallabagCoreBundle:Entry') |
262 | ->removeAllByUserId($this->getUser()->getId()); | 262 | ->removeAllByUserId($this->getUser()->getId()); |
263 | break; | ||
264 | case 'archived': | ||
265 | if ($this->get('doctrine')->getConnection()->getDriver() instanceof \Doctrine\DBAL\Driver\PDOSqlite\Driver) { | ||
266 | $this->removeAnnotationsForArchivedByUserId($this->getUser()->getId()); | ||
267 | } | ||
268 | |||
269 | // manually remove tags to avoid orphan tag | ||
270 | $this->removeTagsForArchivedByUserId($this->getUser()->getId()); | ||
271 | |||
272 | $this->getDoctrine() | ||
273 | ->getRepository('WallabagCoreBundle:Entry') | ||
274 | ->removeArchivedByUserId($this->getUser()->getId()); | ||
275 | break; | ||
263 | } | 276 | } |
264 | 277 | ||
265 | $this->get('session')->getFlashBag()->add( | 278 | $this->get('session')->getFlashBag()->add( |
@@ -300,6 +313,50 @@ class ConfigController extends Controller | |||
300 | } | 313 | } |
301 | 314 | ||
302 | /** | 315 | /** |
316 | * Remove all tags for a given user and cleanup orphan tags. | ||
317 | * | ||
318 | * @param int $userId | ||
319 | */ | ||
320 | private function removeTagsForArchivedByUserId($userId) | ||
321 | { | ||
322 | $tags = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findTagsForArchivedArticles($userId); | ||
323 | |||
324 | if (empty($tags)) { | ||
325 | return; | ||
326 | } | ||
327 | |||
328 | $this->getDoctrine() | ||
329 | ->getRepository('WallabagCoreBundle:Entry') | ||
330 | ->removeTags($userId, $tags); | ||
331 | |||
332 | // cleanup orphan tags | ||
333 | $em = $this->getDoctrine()->getManager(); | ||
334 | |||
335 | foreach ($tags as $tag) { | ||
336 | if (count($tag->getEntries()) === 0) { | ||
337 | $em->remove($tag); | ||
338 | } | ||
339 | } | ||
340 | |||
341 | $em->flush(); | ||
342 | } | ||
343 | |||
344 | private function removeAnnotationsForArchivedByUserId($userId) | ||
345 | { | ||
346 | $em = $this->getDoctrine()->getManager(); | ||
347 | |||
348 | $archivedEntriesAnnotations = $this->getDoctrine() | ||
349 | ->getRepository('WallabagAnnotationBundle:Annotation') | ||
350 | ->findAllByArchivedEntriesAndUserId($userId); | ||
351 | |||
352 | foreach ($archivedEntriesAnnotations as $archivedEntriesAnnotation) { | ||
353 | $em->remove($archivedEntriesAnnotation); | ||
354 | } | ||
355 | |||
356 | $em->flush(); | ||
357 | } | ||
358 | |||
359 | /** | ||
303 | * Validate that a rule can be edited/deleted by the current user. | 360 | * Validate that a rule can be edited/deleted by the current user. |
304 | * | 361 | * |
305 | * @param TaggingRule $rule | 362 | * @param TaggingRule $rule |
diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index 9325d261..1f22e901 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php | |||
@@ -371,4 +371,12 @@ class EntryRepository extends EntityRepository | |||
371 | ->setParameter('userId', $userId) | 371 | ->setParameter('userId', $userId) |
372 | ->execute(); | 372 | ->execute(); |
373 | } | 373 | } |
374 | |||
375 | public function removeArchivedByUserId($userId) | ||
376 | { | ||
377 | $this->getEntityManager() | ||
378 | ->createQuery('DELETE FROM Wallabag\CoreBundle\Entity\Entry e WHERE e.user = :userId AND e.isArchived = TRUE') | ||
379 | ->setParameter('userId', $userId) | ||
380 | ->execute(); | ||
381 | } | ||
374 | } | 382 | } |
diff --git a/src/Wallabag/CoreBundle/Repository/TagRepository.php b/src/Wallabag/CoreBundle/Repository/TagRepository.php index 2182df25..b78e244e 100644 --- a/src/Wallabag/CoreBundle/Repository/TagRepository.php +++ b/src/Wallabag/CoreBundle/Repository/TagRepository.php | |||
@@ -76,4 +76,24 @@ class TagRepository extends EntityRepository | |||
76 | ->getQuery() | 76 | ->getQuery() |
77 | ->getSingleResult(); | 77 | ->getSingleResult(); |
78 | } | 78 | } |
79 | |||
80 | public function findTagsForArchivedArticles($userId) | ||
81 | { | ||
82 | $ids = $this->createQueryBuilder('t') | ||
83 | ->select('t.id') | ||
84 | ->leftJoin('t.entries', 'e') | ||
85 | ->where('e.user = :userId')->setParameter('userId', $userId) | ||
86 | ->andWhere('e.isArchived = true') | ||
87 | ->groupBy('t.id') | ||
88 | ->orderBy('t.slug') | ||
89 | ->getQuery() | ||
90 | ->getArrayResult(); | ||
91 | |||
92 | $tags = []; | ||
93 | foreach ($ids as $id) { | ||
94 | $tags[] = $this->find($id); | ||
95 | } | ||
96 | |||
97 | return $tags; | ||
98 | } | ||
79 | } | 99 | } |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml index 5d9e85e4..dfac7a65 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | # annotations: Remove ALL annotations | 110 | # annotations: Remove ALL annotations |
111 | # tags: Remove ALL tags | 111 | # tags: Remove ALL tags |
112 | # entries: Remove ALL entries | 112 | # entries: Remove ALL entries |
113 | # archived: Remove ALL archived entries | ||
113 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) | 114 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) |
114 | form_password: | 115 | form_password: |
115 | # description: "You can change your password here. Your new password should by at least 8 characters long." | 116 | # description: "You can change your password here. Your new password should by at least 8 characters long." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | # annotations_reset: Annotations reset | 529 | # annotations_reset: Annotations reset |
529 | # tags_reset: Tags reset | 530 | # tags_reset: Tags reset |
530 | # entries_reset: Entries reset | 531 | # entries_reset: Entries reset |
532 | # archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | # entry_already_saved: 'Entry already saved on %date%' | 535 | # entry_already_saved: 'Entry already saved on %date%' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml index f1952a3e..0b9df325 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | annotations: Entferne ALLE Annotationen | 110 | annotations: Entferne ALLE Annotationen |
111 | tags: Entferne ALLE Tags | 111 | tags: Entferne ALLE Tags |
112 | entries: Entferne ALLE Einträge | 112 | entries: Entferne ALLE Einträge |
113 | # archived: Remove ALL archived entries | ||
113 | confirm: Bist du wirklich sicher? (DIES KANN NICHT RÜCKGÄNGIG GEMACHT WERDEN) | 114 | confirm: Bist du wirklich sicher? (DIES KANN NICHT RÜCKGÄNGIG GEMACHT WERDEN) |
114 | form_password: | 115 | form_password: |
115 | description: "Hier kannst du dein Kennwort ändern. Dieses sollte mindestens acht Zeichen enthalten." | 116 | description: "Hier kannst du dein Kennwort ändern. Dieses sollte mindestens acht Zeichen enthalten." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | annotations_reset: Anmerkungen zurücksetzen | 529 | annotations_reset: Anmerkungen zurücksetzen |
529 | tags_reset: Tags zurücksetzen | 530 | tags_reset: Tags zurücksetzen |
530 | entries_reset: Einträge zurücksetzen | 531 | entries_reset: Einträge zurücksetzen |
532 | # archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | entry_already_saved: 'Eintrag bereits am %date% gespeichert' | 535 | entry_already_saved: 'Eintrag bereits am %date% gespeichert' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml index 8e7e3c2c..2fa3192e 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | annotations: Remove ALL annotations | 110 | annotations: Remove ALL annotations |
111 | tags: Remove ALL tags | 111 | tags: Remove ALL tags |
112 | entries: Remove ALL entries | 112 | entries: Remove ALL entries |
113 | archived: Remove ALL archived entries | ||
113 | confirm: Are you really sure? (THIS CAN'T BE UNDONE) | 114 | confirm: Are you really sure? (THIS CAN'T BE UNDONE) |
114 | form_password: | 115 | form_password: |
115 | description: "You can change your password here. Your new password should by at least 8 characters long." | 116 | description: "You can change your password here. Your new password should by at least 8 characters long." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | annotations_reset: Annotations reset | 529 | annotations_reset: Annotations reset |
529 | tags_reset: Tags reset | 530 | tags_reset: Tags reset |
530 | entries_reset: Entries reset | 531 | entries_reset: Entries reset |
532 | archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | entry_already_saved: 'Entry already saved on %date%' | 535 | entry_already_saved: 'Entry already saved on %date%' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml index 3d65c311..ce581d89 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | annotations: Eliminar TODAS las anotaciones | 110 | annotations: Eliminar TODAS las anotaciones |
111 | tags: Eliminar TODAS las etiquetas | 111 | tags: Eliminar TODAS las etiquetas |
112 | entries: Eliminar TODOS los artículos | 112 | entries: Eliminar TODOS los artículos |
113 | # archived: Remove ALL archived entries | ||
113 | confirm: ¿Estás completamente seguro? (NO SE PUEDE DESHACER) | 114 | confirm: ¿Estás completamente seguro? (NO SE PUEDE DESHACER) |
114 | form_password: | 115 | form_password: |
115 | description: "Puedes cambiar la contraseña aquí. Tu nueva contraseña debe tener al menos 8 caracteres." | 116 | description: "Puedes cambiar la contraseña aquí. Tu nueva contraseña debe tener al menos 8 caracteres." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | annotations_reset: Anotaciones reiniciadas | 529 | annotations_reset: Anotaciones reiniciadas |
529 | tags_reset: Etiquetas reiniciadas | 530 | tags_reset: Etiquetas reiniciadas |
530 | entries_reset: Artículos reiniciados | 531 | entries_reset: Artículos reiniciados |
532 | # archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | entry_already_saved: 'Artículo ya guardado el %fecha%' | 535 | entry_already_saved: 'Artículo ya guardado el %fecha%' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml index 80500d19..3e3ee12c 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | # annotations: Remove ALL annotations | 110 | # annotations: Remove ALL annotations |
111 | # tags: Remove ALL tags | 111 | # tags: Remove ALL tags |
112 | # entries: Remove ALL entries | 112 | # entries: Remove ALL entries |
113 | # archived: Remove ALL archived entries | ||
113 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) | 114 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) |
114 | form_password: | 115 | form_password: |
115 | # description: "You can change your password here. Your new password should by at least 8 characters long." | 116 | # description: "You can change your password here. Your new password should by at least 8 characters long." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | # annotations_reset: Annotations reset | 529 | # annotations_reset: Annotations reset |
529 | # tags_reset: Tags reset | 530 | # tags_reset: Tags reset |
530 | # entries_reset: Entries reset | 531 | # entries_reset: Entries reset |
532 | # archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | entry_already_saved: 'این مقاله در تاریخ %date% ذخیره شده بود' | 535 | entry_already_saved: 'این مقاله در تاریخ %date% ذخیره شده بود' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml index 4f49f777..074593a6 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | annotations: Supprimer TOUTES les annotations | 110 | annotations: Supprimer TOUTES les annotations |
111 | tags: Supprimer TOUS les tags | 111 | tags: Supprimer TOUS les tags |
112 | entries: Supprimer TOUS les articles | 112 | entries: Supprimer TOUS les articles |
113 | archived: Supprimer TOUS les articles archivés | ||
113 | confirm: Êtes-vous vraiment vraiment sûr ? (C'EST IRRÉVERSIBLE) | 114 | confirm: Êtes-vous vraiment vraiment sûr ? (C'EST IRRÉVERSIBLE) |
114 | form_password: | 115 | form_password: |
115 | description: "Vous pouvez changer ici votre mot de passe. Le mot de passe doit contenir au moins 8 caractères." | 116 | description: "Vous pouvez changer ici votre mot de passe. Le mot de passe doit contenir au moins 8 caractères." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | annotations_reset: Annotations supprimées | 529 | annotations_reset: Annotations supprimées |
529 | tags_reset: Tags supprimés | 530 | tags_reset: Tags supprimés |
530 | entries_reset: Articles supprimés | 531 | entries_reset: Articles supprimés |
532 | archived_reset: Articles archivés supprimés | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | entry_already_saved: "Article déjà sauvegardé le %date%" | 535 | entry_already_saved: "Article déjà sauvegardé le %date%" |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml index 992ff71c..0d86756a 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | # annotations: Remove ALL annotations | 110 | # annotations: Remove ALL annotations |
111 | # tags: Remove ALL tags | 111 | # tags: Remove ALL tags |
112 | # entries: Remove ALL entries | 112 | # entries: Remove ALL entries |
113 | # archived: Remove ALL archived entries | ||
113 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) | 114 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) |
114 | form_password: | 115 | form_password: |
115 | # description: "You can change your password here. Your new password should by at least 8 characters long." | 116 | # description: "You can change your password here. Your new password should by at least 8 characters long." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | # annotations_reset: Annotations reset | 529 | # annotations_reset: Annotations reset |
529 | # tags_reset: Tags reset | 530 | # tags_reset: Tags reset |
530 | # entries_reset: Entries reset | 531 | # entries_reset: Entries reset |
532 | # archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | entry_already_saved: 'Contenuto già salvato in data %date%' | 535 | entry_already_saved: 'Contenuto già salvato in data %date%' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml index f6488565..d2949c50 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | annotations: Levar TOTAS las anotacions | 110 | annotations: Levar TOTAS las anotacions |
111 | tags: Levar TOTAS las etiquetas | 111 | tags: Levar TOTAS las etiquetas |
112 | entries: Levar TOTES los articles | 112 | entries: Levar TOTES los articles |
113 | # archived: Remove ALL archived entries | ||
113 | confirm: Sètz vertadièrament segur ? (ES IRREVERSIBLE) | 114 | confirm: Sètz vertadièrament segur ? (ES IRREVERSIBLE) |
114 | form_password: | 115 | form_password: |
115 | description: "Podètz cambiar vòstre senhal aquí. Vòstre senhal deu èsser long d'almens 8 caractèrs." | 116 | description: "Podètz cambiar vòstre senhal aquí. Vòstre senhal deu èsser long d'almens 8 caractèrs." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | annotations_reset: Anotacions levadas | 529 | annotations_reset: Anotacions levadas |
529 | tags_reset: Etiquetas levadas | 530 | tags_reset: Etiquetas levadas |
530 | entries_reset: Articles levats | 531 | entries_reset: Articles levats |
532 | # archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | entry_already_saved: 'Article ja salvargardat lo %date%' | 535 | entry_already_saved: 'Article ja salvargardat lo %date%' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml index eda9bbbf..1f512942 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | annotations: Usuń WSZYSTKIE adnotacje | 110 | annotations: Usuń WSZYSTKIE adnotacje |
111 | tags: Usuń WSZYSTKIE tagi | 111 | tags: Usuń WSZYSTKIE tagi |
112 | entries: usuń WSZYTSTKIE wpisy | 112 | entries: usuń WSZYTSTKIE wpisy |
113 | # archived: Remove ALL archived entries | ||
113 | confirm: Jesteś pewien? (tej operacji NIE MOŻNA cofnąć) | 114 | confirm: Jesteś pewien? (tej operacji NIE MOŻNA cofnąć) |
114 | form_password: | 115 | form_password: |
115 | description: "Tutaj możesz zmienić swoje hasło. Twoje nowe hasło powinno mieć conajmniej 8 znaków." | 116 | description: "Tutaj możesz zmienić swoje hasło. Twoje nowe hasło powinno mieć conajmniej 8 znaków." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | annotations_reset: Zresetuj adnotacje | 529 | annotations_reset: Zresetuj adnotacje |
529 | tags_reset: Zresetuj tagi | 530 | tags_reset: Zresetuj tagi |
530 | entries_reset: Zresetuj wpisy | 531 | entries_reset: Zresetuj wpisy |
532 | # archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | entry_already_saved: 'Wpis już został dodany %date%' | 535 | entry_already_saved: 'Wpis już został dodany %date%' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml index 8a7cc6f8..2e815230 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | # annotations: Remove ALL annotations | 110 | # annotations: Remove ALL annotations |
111 | # tags: Remove ALL tags | 111 | # tags: Remove ALL tags |
112 | # entries: Remove ALL entries | 112 | # entries: Remove ALL entries |
113 | # archived: Remove ALL archived entries | ||
113 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) | 114 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) |
114 | form_password: | 115 | form_password: |
115 | # description: "You can change your password here. Your new password should by at least 8 characters long." | 116 | # description: "You can change your password here. Your new password should by at least 8 characters long." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | # annotations_reset: Annotations reset | 529 | # annotations_reset: Annotations reset |
529 | # tags_reset: Tags reset | 530 | # tags_reset: Tags reset |
530 | # entries_reset: Entries reset | 531 | # entries_reset: Entries reset |
532 | # archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | entry_already_saved: 'Entrada já foi salva em %date%' | 535 | entry_already_saved: 'Entrada já foi salva em %date%' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml index 52b6414f..16401efd 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | # annotations: Remove ALL annotations | 110 | # annotations: Remove ALL annotations |
111 | # tags: Remove ALL tags | 111 | # tags: Remove ALL tags |
112 | # entries: Remove ALL entries | 112 | # entries: Remove ALL entries |
113 | # archived: Remove ALL archived entries | ||
113 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) | 114 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) |
114 | form_password: | 115 | form_password: |
115 | # description: "You can change your password here. Your new password should by at least 8 characters long." | 116 | # description: "You can change your password here. Your new password should by at least 8 characters long." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | # annotations_reset: Annotations reset | 529 | # annotations_reset: Annotations reset |
529 | # tags_reset: Tags reset | 530 | # tags_reset: Tags reset |
530 | # entries_reset: Entries reset | 531 | # entries_reset: Entries reset |
532 | # archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | # entry_already_saved: 'Entry already saved on %date%' | 535 | # entry_already_saved: 'Entry already saved on %date%' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml index bfb7e206..a4bf7dfe 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml | |||
@@ -110,6 +110,7 @@ config: | |||
110 | # annotations: Remove ALL annotations | 110 | # annotations: Remove ALL annotations |
111 | # tags: Remove ALL tags | 111 | # tags: Remove ALL tags |
112 | # entries: Remove ALL entries | 112 | # entries: Remove ALL entries |
113 | # archived: Remove ALL archived entries | ||
113 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) | 114 | # confirm: Are you really really sure? (THIS CAN'T BE UNDONE) |
114 | form_password: | 115 | form_password: |
115 | # description: "You can change your password here. Your new password should by at least 8 characters long." | 116 | # description: "You can change your password here. Your new password should by at least 8 characters long." |
@@ -528,6 +529,7 @@ flashes: | |||
528 | # annotations_reset: Annotations reset | 529 | # annotations_reset: Annotations reset |
529 | # tags_reset: Tags reset | 530 | # tags_reset: Tags reset |
530 | # entries_reset: Entries reset | 531 | # entries_reset: Entries reset |
532 | # archived_reset: Archived entries deleted | ||
531 | entry: | 533 | entry: |
532 | notice: | 534 | notice: |
533 | entry_already_saved: 'Entry already saved on %date%' | 535 | entry_already_saved: 'Entry already saved on %date%' |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig index 5d411fdd..708ff951 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig | |||
@@ -229,6 +229,9 @@ | |||
229 | <a href="{{ path('config_reset', { type: 'tags'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red"> | 229 | <a href="{{ path('config_reset', { type: 'tags'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red"> |
230 | {{ 'config.reset.tags'|trans }} | 230 | {{ 'config.reset.tags'|trans }} |
231 | </a> | 231 | </a> |
232 | <a href="{{ path('config_reset', { type: 'archived'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red"> | ||
233 | {{ 'config.reset.archived'|trans }} | ||
234 | </a> | ||
232 | <a href="{{ path('config_reset', { type: 'entries'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red"> | 235 | <a href="{{ path('config_reset', { type: 'entries'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red"> |
233 | {{ 'config.reset.entries'|trans }} | 236 | {{ 'config.reset.entries'|trans }} |
234 | </a> | 237 | </a> |
diff --git a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php b/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php index 8f2ca1cb..b434a4c4 100644 --- a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php | |||
@@ -803,6 +803,82 @@ class ConfigControllerTest extends WallabagCoreTestCase | |||
803 | $this->assertEquals(0, $entryReset, 'Entries were reset'); | 803 | $this->assertEquals(0, $entryReset, 'Entries were reset'); |
804 | } | 804 | } |
805 | 805 | ||
806 | public function testResetArchivedEntries() | ||
807 | { | ||
808 | $this->logInAs('empty'); | ||
809 | $client = $this->getClient(); | ||
810 | |||
811 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | ||
812 | |||
813 | $user = static::$kernel->getContainer()->get('security.token_storage')->getToken()->getUser(); | ||
814 | |||
815 | $tag = new Tag(); | ||
816 | $tag->setLabel('super'); | ||
817 | $em->persist($tag); | ||
818 | |||
819 | $entry = new Entry($user); | ||
820 | $entry->setUrl('http://www.lemonde.fr/europe/article/2016/10/01/pour-le-psoe-chaque-election-s-est-transformee-en-une-agonie_5006476_3214.html'); | ||
821 | $entry->setContent('Youhou'); | ||
822 | $entry->setTitle('Youhou'); | ||
823 | $entry->addTag($tag); | ||
824 | $em->persist($entry); | ||
825 | |||
826 | $annotation = new Annotation($user); | ||
827 | $annotation->setText('annotated'); | ||
828 | $annotation->setQuote('annotated'); | ||
829 | $annotation->setRanges([]); | ||
830 | $annotation->setEntry($entry); | ||
831 | $em->persist($annotation); | ||
832 | |||
833 | $tagArchived = new Tag(); | ||
834 | $tagArchived->setLabel('super'); | ||
835 | $em->persist($tagArchived); | ||
836 | |||
837 | $entryArchived = new Entry($user); | ||
838 | $entryArchived->setUrl('http://www.lemonde.fr/europe/article/2016/10/01/pour-le-psoe-chaque-election-s-est-transformee-en-une-agonie_5006476_3214.html'); | ||
839 | $entryArchived->setContent('Youhou'); | ||
840 | $entryArchived->setTitle('Youhou'); | ||
841 | $entryArchived->addTag($tagArchived); | ||
842 | $entryArchived->setArchived(true); | ||
843 | $em->persist($entryArchived); | ||
844 | |||
845 | $annotationArchived = new Annotation($user); | ||
846 | $annotationArchived->setText('annotated'); | ||
847 | $annotationArchived->setQuote('annotated'); | ||
848 | $annotationArchived->setRanges([]); | ||
849 | $annotationArchived->setEntry($entryArchived); | ||
850 | $em->persist($annotationArchived); | ||
851 | |||
852 | $em->flush(); | ||
853 | |||
854 | $crawler = $client->request('GET', '/config#set3'); | ||
855 | |||
856 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
857 | |||
858 | $crawler = $client->click($crawler->selectLink('config.reset.archived')->link()); | ||
859 | |||
860 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
861 | $this->assertContains('flashes.config.notice.archived_reset', $client->getContainer()->get('session')->getFlashBag()->get('notice')[0]); | ||
862 | |||
863 | $entryReset = $em | ||
864 | ->getRepository('WallabagCoreBundle:Entry') | ||
865 | ->countAllEntriesByUsername($user->getId()); | ||
866 | |||
867 | $this->assertEquals(1, $entryReset, 'Entries were reset'); | ||
868 | |||
869 | $tagReset = $em | ||
870 | ->getRepository('WallabagCoreBundle:Tag') | ||
871 | ->countAllTags($user->getId()); | ||
872 | |||
873 | $this->assertEquals(1, $tagReset, 'Tags were reset'); | ||
874 | |||
875 | $annotationsReset = $em | ||
876 | ->getRepository('WallabagAnnotationBundle:Annotation') | ||
877 | ->findAnnotationsByPageId($annotationArchived->getId(), $user->getId()); | ||
878 | |||
879 | $this->assertEmpty($annotationsReset, 'Annotations were reset'); | ||
880 | } | ||
881 | |||
806 | public function testResetEntriesCascade() | 882 | public function testResetEntriesCascade() |
807 | { | 883 | { |
808 | $this->logInAs('empty'); | 884 | $this->logInAs('empty'); |