X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/ec7951749333fb9b57c3e5ce368f3427065489b3..d13abc7e1d9c204640fe9a6624a162a7cc106de6:/app/Sorting/BookSortController.php diff --git a/app/Sorting/BookSortController.php b/app/Sorting/BookSortController.php index 98d79d0fd..d70d0e656 100644 --- a/app/Sorting/BookSortController.php +++ b/app/Sorting/BookSortController.php @@ -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) {