]> BookStack Code Mirror - bookstack/blobdiff - app/Http/Controllers/BookController.php
French translation update
[bookstack] / app / Http / Controllers / BookController.php
index 7a0ee0f0ebc3fdeb47ad0c269712252e80b2a2dd..a9a24d2ff519a56a888e66450ba8a5e4c4e9b555 100644 (file)
@@ -3,10 +3,9 @@
 use Activity;
 use BookStack\Auth\UserRepo;
 use BookStack\Entities\Book;
+use BookStack\Entities\Bookshelf;
 use BookStack\Entities\EntityContextManager;
 use BookStack\Entities\Repos\BookRepo;
-use BookStack\Entities\Repos\EntityRepo;
-use BookStack\Entities\ExportService;
 use BookStack\Exceptions\ImageUploadException;
 use BookStack\Exceptions\NotFoundException;
 use BookStack\Exceptions\NotifyException;
@@ -55,17 +54,12 @@ class BookController extends Controller
      */
     public function index()
     {
-        $view = setting()->getUser($this->currentUser, 'books_view_type', config('app.views.books'));
-        $sort = setting()->getUser($this->currentUser, 'books_sort', 'name');
-        $order = setting()->getUser($this->currentUser, 'books_sort_order', 'asc');
-        $sortOptions = [
-            'name' => trans('common.sort_name'),
-            'created_at' => trans('common.sort_created_at'),
-            'updated_at' => trans('common.sort_updated_at'),
-        ];
+        $view = setting()->getForCurrentUser('books_view_type', config('app.views.books'));
+        $sort = setting()->getForCurrentUser('books_sort', 'name');
+        $order = setting()->getForCurrentUser('books_sort_order', 'asc');
 
         $books = $this->bookRepo->getAllPaginated('book', 18, $sort, $order);
-        $recents = $this->signedIn ? $this->bookRepo->getRecentlyViewed('book', 4, 0) : false;
+        $recents = $this->isSignedIn() ? $this->bookRepo->getRecentlyViewed('book', 4, 0) : false;
         $popular = $this->bookRepo->getPopular('book', 4, 0);
         $new = $this->bookRepo->getRecentlyCreated('book', 4, 0);
 
@@ -80,7 +74,6 @@ class BookController extends Controller
             'view' => $view,
             'sort' => $sort,
             'order' => $order,
-            'sortOptions' => $sortOptions,
         ]);
     }
 
@@ -126,16 +119,18 @@ class BookController extends Controller
 
         $bookshelf = null;
         if ($shelfSlug !== null) {
+            /** @var Bookshelf $bookshelf */
             $bookshelf = $this->bookRepo->getEntityBySlug('bookshelf', $shelfSlug);
             $this->checkOwnablePermission('bookshelf-update', $bookshelf);
         }
 
+        /** @var Book $book */
         $book = $this->bookRepo->createFromInput('book', $request->all());
         $this->bookUpdateActions($book, $request);
         Activity::add($book, 'book_create', $book->id);
 
         if ($bookshelf) {
-            $this->bookRepo->appendBookToShelf($bookshelf, $book);
+            $bookshelf->appendBook($book);
             Activity::add($bookshelf, 'bookshelf_update');
         }
 
@@ -192,6 +187,7 @@ class BookController extends Controller
      * @throws ImageUploadException
      * @throws NotFoundException
      * @throws ValidationException
+     * @throws Throwable
      */
     public function update(Request $request, string $slug)
     {
@@ -203,7 +199,7 @@ class BookController extends Controller
             'image' => $this->imageRepo->getImageValidationRules(),
         ]);
 
-         $book = $this->bookRepo->updateFromInput('book', $book, $request->all());
+         $book = $this->bookRepo->updateFromInput($book, $request->all());
          $this->bookUpdateActions($book, $request);
 
          Activity::add($book, 'book_update', $book->id);
@@ -249,7 +245,7 @@ class BookController extends Controller
      * @return Factory|View
      * @throws NotFoundException
      */
-    public function getSortItem(string $bookSlug)
+    public function sortItem(string $bookSlug)
     {
         $book = $this->bookRepo->getBySlug($bookSlug);
         $bookChildren = $this->bookRepo->getBookChildren($book);
@@ -289,10 +285,12 @@ class BookController extends Controller
         // Get the books involved in the sort
         $bookIdsInvolved = $bookIdsInvolved->unique()->toArray();
         $booksInvolved = $this->bookRepo->getManyById('book', $bookIdsInvolved, false, true);
+
         // Throw permission error if invalid ids or inaccessible books given.
         if (count($bookIdsInvolved) !== count($booksInvolved)) {
             $this->showPermissionError();
         }
+
         // Check permissions of involved books
         $booksInvolved->each(function (Book $book) {
              $this->checkOwnablePermission('book-update', $book);
@@ -307,7 +305,7 @@ class BookController extends Controller
             $chapterChanged = ($mapItem->type === 'page') && intval($model->chapter_id) !== $mapItem->parentChapter;
 
             if ($bookChanged) {
-                $this->bookRepo->changeBook($mapItem->type, $mapItem->book, $model);
+                $this->bookRepo->changeBook($model, $mapItem->book);
             }
             if ($chapterChanged) {
                 $model->chapter_id = intval($mapItem->parentChapter);
@@ -321,7 +319,7 @@ class BookController extends Controller
 
         // Rebuild permissions and add activity for involved books.
         $booksInvolved->each(function (Book $book) {
-            $this->bookRepo->buildJointPermissionsForBook($book);
+            $book->rebuildPermissions();
             Activity::add($book, 'book_sort', $book->id);
         });
 
@@ -340,7 +338,7 @@ class BookController extends Controller
     {
         $book = $this->bookRepo->getBySlug($bookSlug);
         $this->checkOwnablePermission('book-delete', $book);
-        Activity::addMessage('book_delete', 0, $book->name);
+        Activity::addMessage('book_delete', $book->name);
 
         if ($book->cover) {
             $this->imageRepo->destroyImage($book->cover);