]> BookStack Code Mirror - bookstack/blobdiff - app/Sorting/BookSortController.php
Merge branch 'enhance-changelog-textarea' of github.com:shresthkapoor7/BookStack...
[bookstack] / app / Sorting / BookSortController.php
index 98d79d0fd1299d23349bb80c8f86cde3a3534e26..d70d0e6565acc33f5113fdb352cc6c76252fd997 100644 (file)
@@ -7,6 +7,7 @@ use BookStack\Entities\Queries\BookQueries;
 use BookStack\Entities\Tools\BookContents;
 use BookStack\Facades\Activity;
 use BookStack\Http\Controller;
+use BookStack\Util\DatabaseTransaction;
 use Illuminate\Http\Request;
 
 class BookSortController extends Controller
@@ -55,24 +56,26 @@ class BookSortController extends Controller
 
         // Sort via map
         if ($request->filled('sort-tree')) {
-            $sortMap = BookSortMap::fromJson($request->get('sort-tree'));
-            $booksInvolved = $sorter->sortUsingMap($sortMap);
+            (new DatabaseTransaction(function () use ($book, $request, $sorter, &$loggedActivityForBook) {
+                $sortMap = BookSortMap::fromJson($request->get('sort-tree'));
+                $booksInvolved = $sorter->sortUsingMap($sortMap);
 
-            // Rebuild permissions and add activity for involved books.
-            foreach ($booksInvolved as $bookInvolved) {
-                Activity::add(ActivityType::BOOK_SORT, $bookInvolved);
-                if ($bookInvolved->id === $book->id) {
-                    $loggedActivityForBook = true;
+                // Add activity for involved books.
+                foreach ($booksInvolved as $bookInvolved) {
+                    Activity::add(ActivityType::BOOK_SORT, $bookInvolved);
+                    if ($bookInvolved->id === $book->id) {
+                        $loggedActivityForBook = true;
+                    }
                 }
-            }
+            }))->run();
         }
 
         if ($request->filled('auto-sort')) {
             $sortSetId = intval($request->get('auto-sort')) ?: null;
-            if ($sortSetId && SortSet::query()->find($sortSetId) === null) {
+            if ($sortSetId && SortRule::query()->find($sortSetId) === null) {
                 $sortSetId = null;
             }
-            $book->sort_set_id = $sortSetId;
+            $book->sort_rule_id = $sortSetId;
             $book->save();
             $sorter->runBookAutoSort($book);
             if (!$loggedActivityForBook) {