diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index e7ade577e..682fc5415 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -185,7 +185,7 @@ class BookController extends Controller $isPage = $bookChild->type == 'page'; $bookId = $this->bookRepo->exists($bookChild->book) ? $bookChild->book : $defaultBookId; $model = $isPage ? $this->pageRepo->getById($id) : $this->chapterRepo->getById($id); - $isPage ? $this->pageRepo->setBookId($bookId, $model) : $this->chapterRepo->setBookId($bookId, $model); + $isPage ? $this->pageRepo->changeBook($bookId, $model) : $this->chapterRepo->changeBook($bookId, $model); $model->priority = $index; if ($isPage) { $model->chapter_id = ($bookChild->parentChapter === false) ? 0 : $bookChild->parentChapter; diff --git a/app/Repos/ChapterRepo.php b/app/Repos/ChapterRepo.php index db2a72d96..c3d75ca9d 100644 --- a/app/Repos/ChapterRepo.php +++ b/app/Repos/ChapterRepo.php @@ -96,7 +96,7 @@ class ChapterRepo public function doesSlugExist($slug, $bookId, $currentId = false) { $query = $this->chapter->where('slug', '=', $slug)->where('book_id', '=', $bookId); - if($currentId) { + if ($currentId) { $query = $query->where('id', '!=', $currentId); } return $query->count() > 0; @@ -113,7 +113,7 @@ class ChapterRepo public function findSuitableSlug($name, $bookId, $currentId = false) { $slug = Str::slug($name); - while($this->doesSlugExist($slug, $bookId, $currentId)) { + while ($this->doesSlugExist($slug, $bookId, $currentId)) { $slug .= '-' . substr(md5(rand(1, 500)), 0, 3); } return $slug; @@ -139,18 +139,19 @@ class ChapterRepo } /** - * Sets a chapters book id. + * Changes the book relation of this chapter. * @param $bookId * @param Chapter $chapter * @return Chapter */ - public function setBookId($bookId, Chapter $chapter) + public function changeBook($bookId, Chapter $chapter) { $chapter->book_id = $bookId; - foreach($chapter->activity as $activity) { + foreach ($chapter->activity as $activity) { $activity->book_id = $bookId; $activity->save(); } + $chapter->slug = $this->findSuitableSlug($chapter->name, $bookId, $chapter->id); $chapter->save(); return $chapter; } diff --git a/app/Repos/PageRepo.php b/app/Repos/PageRepo.php index 3f8f81394..a52cecad3 100644 --- a/app/Repos/PageRepo.php +++ b/app/Repos/PageRepo.php @@ -309,19 +309,20 @@ class PageRepo } /** - * Sets the book id for the specified page. + * Changes the related book for the specified page. * Changes the book id of any relations to the page that store the book id. * @param int $bookId * @param Page $page * @return Page */ - public function setBookId($bookId, Page $page) + public function changeBook($bookId, Page $page) { $page->book_id = $bookId; foreach ($page->activity as $activity) { $activity->book_id = $bookId; $activity->save(); } + $page->slug = $this->findSuitableSlug($page->name, $bookId, $page->id); $page->save(); return $page; }