X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/8b550991a4dbcd7a05e08e8f600b5444d5f4004d..refs/pull/2334/head:/app/Entities/BookChild.php diff --git a/app/Entities/BookChild.php b/app/Entities/BookChild.php index c76baf29a..6eac4375d 100644 --- a/app/Entities/BookChild.php +++ b/app/Entities/BookChild.php @@ -1,14 +1,31 @@ with('book') + ->whereHas('book', function (Builder $query) use ($bookSlug) { + $query->where('slug', '=', $bookSlug); + }) + ->where('slug', '=', $childSlug); + } + /** * Get the book this page sits in. * @return BelongsTo @@ -18,4 +35,26 @@ class BookChild extends Entity return $this->belongsTo(Book::class); } -} \ No newline at end of file + /** + * Change the book that this entity belongs to. + */ + public function changeBook(int $newBookId): Entity + { + $this->book_id = $newBookId; + $this->refreshSlug(); + $this->save(); + $this->refresh(); + + // Update related activity + $this->activity()->update(['book_id' => $newBookId]); + + // Update all child pages if a chapter + if ($this instanceof Chapter) { + foreach ($this->pages as $page) { + $page->changeBook($newBookId); + } + } + + return $this; + } +}