diff --git a/app/Entities/Bookshelf.php b/app/Entities/Bookshelf.php index 745611ba7..1db348b6b 100644 --- a/app/Entities/Bookshelf.php +++ b/app/Entities/Bookshelf.php @@ -104,4 +104,18 @@ class Bookshelf extends Entity { return $this->books()->where('id', '=', $book->id)->count() > 0; } + + /** + * Add a book to the end of this shelf. + * @param Book $book + */ + public function appendBook(Book $book) + { + if (!$this->contains($book)) { + return; + } + + $maxOrder = $this->books()->max('order'); + $this->books()->attach($book->id, ['order' => $maxOrder + 1]); + } } diff --git a/app/Entities/Repos/BookRepo.php b/app/Entities/Repos/BookRepo.php index c82780fea..91bc9a1b4 100644 --- a/app/Entities/Repos/BookRepo.php +++ b/app/Entities/Repos/BookRepo.php @@ -3,9 +3,7 @@ namespace BookStack\Entities\Repos; - use BookStack\Entities\Book; -use BookStack\Entities\Bookshelf; use BookStack\Exceptions\NotFoundException; use BookStack\Exceptions\NotifyException; @@ -25,21 +23,6 @@ class BookRepo extends EntityRepo return $book; } - /** - * Append a Book to a BookShelf. - * @param Bookshelf $shelf - * @param Book $book - */ - public function appendBookToShelf(Bookshelf $shelf, Book $book) - { - if ($shelf->contains($book)) { - return; - } - - $maxOrder = $shelf->books()->max('order'); - $shelf->books()->attach($book->id, ['order' => $maxOrder + 1]); - } - /** * Destroy the provided book and all its child entities. * @param Book $book diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index 1f9caf756..1a7872030 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -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; @@ -121,16 +120,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'); }