public function updatePage(Page $page, $book_id, $input) { // Hold the old details to compare later $oldHtml = $page->html; $oldName = $page->name; // Prevent slug being updated if no name change if ($page->name !== $input['name']) { $page->slug = $this->findSuitableSlug($input['name'], $book_id, $page->id); } // Save page tags if present if (isset($input['tags'])) { $this->tagRepo->saveTagsToEntity($page, $input['tags']); } // Update with new details $userId = user()->id; $page->fill($input); $page->html = $this->formatHtml($input['html']); $page->text = strip_tags($page->html); if (setting('app-editor') !== 'markdown') { $page->markdown = ''; } $page->updated_by = $userId; $page->save(); // Remove all update drafts for this user & page. $this->userUpdateDraftsQuery($page, $userId)->delete(); // Save a revision after updating if ($oldHtml !== $input['html'] || $oldName !== $input['name'] || $input['summary'] !== null) { $this->saveRevision($page, $input['summary']); } return $page; }