]> BookStack Code Mirror - bookstack/commitdiff
Added recycle bin empty notification response with count
authorDan Brown <redacted>
Sat, 3 Oct 2020 17:53:09 +0000 (18:53 +0100)
committerDan Brown <redacted>
Sat, 3 Oct 2020 17:53:09 +0000 (18:53 +0100)
app/Entities/Managers/TrashCan.php
app/Http/Controllers/RecycleBinController.php
resources/lang/en/settings.php

index 280694906f10952b7c296281edd45e74c6fd5e2e..aedf4d7afc3c32b487adae6264d3c292f81e4687 100644 (file)
@@ -90,10 +90,11 @@ class TrashCan
      * Remove a bookshelf from the system.
      * @throws Exception
      */
-    public function destroyShelf(Bookshelf $shelf)
+    public function destroyShelf(Bookshelf $shelf): int
     {
         $this->destroyCommonRelations($shelf);
         $shelf->forceDelete();
+        return 1;
     }
 
     /**
@@ -101,20 +102,24 @@ class TrashCan
      * Destroys any child chapters and pages.
      * @throws Exception
      */
-    public function destroyBook(Book $book)
+    public function destroyBook(Book $book): int
     {
+        $count = 0;
         $pages = $book->pages()->withTrashed()->get();
         foreach ($pages as $page) {
             $this->destroyPage($page);
+            $count++;
         }
 
         $chapters = $book->chapters()->withTrashed()->get();
         foreach ($chapters as $chapter) {
             $this->destroyChapter($chapter);
+            $count++;
         }
 
         $this->destroyCommonRelations($book);
         $book->forceDelete();
+        return $count + 1;
     }
 
     /**
@@ -122,24 +127,27 @@ class TrashCan
      * Destroys all pages within.
      * @throws Exception
      */
-    public function destroyChapter(Chapter $chapter)
+    public function destroyChapter(Chapter $chapter): int
     {
+        $count = 0;
         $pages = $chapter->pages()->withTrashed()->get();
         if (count($pages)) {
             foreach ($pages as $page) {
                 $this->destroyPage($page);
+                $count++;
             }
         }
 
         $this->destroyCommonRelations($chapter);
         $chapter->forceDelete();
+        return $count + 1;
     }
 
     /**
      * Remove a page from the system.
      * @throws Exception
      */
-    public function destroyPage(Page $page)
+    public function destroyPage(Page $page): int
     {
         $this->destroyCommonRelations($page);
 
@@ -150,6 +158,7 @@ class TrashCan
         }
 
         $page->forceDelete();
+        return 1;
     }
 
     /**
@@ -172,24 +181,27 @@ class TrashCan
     /**
      * Destroy all items that have pending deletions.
      */
-    public function destroyFromAllDeletions()
+    public function destroyFromAllDeletions(): int
     {
         $deletions = Deletion::all();
+        $deleteCount = 0;
         foreach ($deletions as $deletion) {
             // For each one we load in the relation since it may have already
             // been deleted as part of another deletion in this loop.
             $entity = $deletion->deletable()->first();
             if ($entity) {
-                $this->destroyEntity($deletion->deletable);
+                $count = $this->destroyEntity($deletion->deletable);
+                $deleteCount += $count;
             }
             $deletion->delete();
         }
+        return $deleteCount;
     }
 
     /**
      * Destroy the given entity.
      */
-    protected function destroyEntity(Entity $entity)
+    protected function destroyEntity(Entity $entity): int
     {
         if ($entity->isA('page')) {
             return $this->destroyPage($entity);
index b30eddf0c4d47f1f28ab99118c85cd41a46e5ee3..3cbc99df3e3be533be8a4b73ef3be4d4d596a5bb 100644 (file)
@@ -29,7 +29,9 @@ class RecycleBinController extends Controller
         $this->checkPermission('settings-manage');
         $this->checkPermission('restrictions-manage-all');
 
-        (new TrashCan())->destroyFromAllDeletions();
+        $deleteCount = (new TrashCan())->destroyFromAllDeletions();
+
+        $this->showSuccessNotification(trans('settings.recycle_bin_empty_notification', ['count' => $deleteCount]));
         return redirect('/settings/recycle-bin');
     }
 }
index 66a1fe30c73934b9a89f6f71d27e8cd744a9bfc7..6de6c2f1a9e8bac39ef012412861a5963943ae4c 100755 (executable)
@@ -92,6 +92,7 @@ return [
     'recycle_bin_contents_empty' => 'The recycle bin is currently empty',
     'recycle_bin_empty' => 'Empty Recycle Bin',
     'recycle_bin_empty_confirm' => 'This will permanently destroy all items in the recycle bin including content contained within each item. Are you sure you want to empty the recycle bin?',
+    'recycle_bin_empty_notification' => 'Deleted :count total items from the recycle bin.',
 
     // Audit Log
     'audit' => 'Audit Log',