X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/d676e1e824e0377cfcb1736dd1ff622e383d8d02..8cde362f6f2a71453b0c4d5544e37d8caa234b5b:/app/Http/Controllers/BookController.php diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index b9dd0e799..681ed96bb 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -9,6 +9,7 @@ use BookStack\Entities\Models\Bookshelf; use BookStack\Entities\Repos\BookRepo; use BookStack\Entities\Tools\BookContents; use BookStack\Entities\Tools\Cloner; +use BookStack\Entities\Tools\HierarchyTransformer; use BookStack\Entities\Tools\PermissionsUpdater; use BookStack\Entities\Tools\ShelfContext; use BookStack\Exceptions\ImageUploadException; @@ -166,7 +167,7 @@ class BookController extends Controller if ($request->has('image_reset')) { $validated['image'] = null; - } else if (is_null($validated['image'])) { + } elseif (array_key_exists('image', $validated) && is_null($validated['image'])) { unset($validated['image']); } @@ -266,4 +267,20 @@ class BookController extends Controller return redirect($bookCopy->getUrl()); } + + /** + * Convert the chapter to a book. + */ + public function convertToShelf(HierarchyTransformer $transformer, string $bookSlug) + { + $book = $this->bookRepo->getBySlug($bookSlug); + $this->checkOwnablePermission('book-update', $book); + $this->checkOwnablePermission('book-delete', $book); + $this->checkPermission('bookshelf-create-all'); + $this->checkPermission('book-create-all'); + + $shelf = $transformer->transformBookToShelf($book); + + return redirect($shelf->getUrl()); + } }