mirror of
				https://github.com/BookStackApp/BookStack.git
				synced 2025-11-03 02:13:16 +03:00 
			
		
		
		
	Moved shelf book append logic
This commit is contained in:
		@@ -104,4 +104,18 @@ class Bookshelf extends Entity
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->books()->where('id', '=', $book->id)->count() > 0;
 | 
					        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]);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,9 +3,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace BookStack\Entities\Repos;
 | 
					namespace BookStack\Entities\Repos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
use BookStack\Entities\Book;
 | 
					use BookStack\Entities\Book;
 | 
				
			||||||
use BookStack\Entities\Bookshelf;
 | 
					 | 
				
			||||||
use BookStack\Exceptions\NotFoundException;
 | 
					use BookStack\Exceptions\NotFoundException;
 | 
				
			||||||
use BookStack\Exceptions\NotifyException;
 | 
					use BookStack\Exceptions\NotifyException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -25,21 +23,6 @@ class BookRepo extends EntityRepo
 | 
				
			|||||||
        return $book;
 | 
					        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.
 | 
					     * Destroy the provided book and all its child entities.
 | 
				
			||||||
     * @param Book $book
 | 
					     * @param Book $book
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,10 +3,9 @@
 | 
				
			|||||||
use Activity;
 | 
					use Activity;
 | 
				
			||||||
use BookStack\Auth\UserRepo;
 | 
					use BookStack\Auth\UserRepo;
 | 
				
			||||||
use BookStack\Entities\Book;
 | 
					use BookStack\Entities\Book;
 | 
				
			||||||
 | 
					use BookStack\Entities\Bookshelf;
 | 
				
			||||||
use BookStack\Entities\EntityContextManager;
 | 
					use BookStack\Entities\EntityContextManager;
 | 
				
			||||||
use BookStack\Entities\Repos\BookRepo;
 | 
					use BookStack\Entities\Repos\BookRepo;
 | 
				
			||||||
use BookStack\Entities\Repos\EntityRepo;
 | 
					 | 
				
			||||||
use BookStack\Entities\ExportService;
 | 
					 | 
				
			||||||
use BookStack\Exceptions\ImageUploadException;
 | 
					use BookStack\Exceptions\ImageUploadException;
 | 
				
			||||||
use BookStack\Exceptions\NotFoundException;
 | 
					use BookStack\Exceptions\NotFoundException;
 | 
				
			||||||
use BookStack\Exceptions\NotifyException;
 | 
					use BookStack\Exceptions\NotifyException;
 | 
				
			||||||
@@ -121,16 +120,18 @@ class BookController extends Controller
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $bookshelf = null;
 | 
					        $bookshelf = null;
 | 
				
			||||||
        if ($shelfSlug !== null) {
 | 
					        if ($shelfSlug !== null) {
 | 
				
			||||||
 | 
					            /** @var Bookshelf $bookshelf */
 | 
				
			||||||
            $bookshelf = $this->bookRepo->getEntityBySlug('bookshelf', $shelfSlug);
 | 
					            $bookshelf = $this->bookRepo->getEntityBySlug('bookshelf', $shelfSlug);
 | 
				
			||||||
            $this->checkOwnablePermission('bookshelf-update', $bookshelf);
 | 
					            $this->checkOwnablePermission('bookshelf-update', $bookshelf);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /** @var Book $book */
 | 
				
			||||||
        $book = $this->bookRepo->createFromInput('book', $request->all());
 | 
					        $book = $this->bookRepo->createFromInput('book', $request->all());
 | 
				
			||||||
        $this->bookUpdateActions($book, $request);
 | 
					        $this->bookUpdateActions($book, $request);
 | 
				
			||||||
        Activity::add($book, 'book_create', $book->id);
 | 
					        Activity::add($book, 'book_create', $book->id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($bookshelf) {
 | 
					        if ($bookshelf) {
 | 
				
			||||||
            $this->bookRepo->appendBookToShelf($bookshelf, $book);
 | 
					            $bookshelf->appendBook($book);
 | 
				
			||||||
            Activity::add($bookshelf, 'bookshelf_update');
 | 
					            Activity::add($bookshelf, 'bookshelf_update');
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user