X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/b35b62d59ff057ce5cfbc5fb463431b086f5c830..refs/pull/5349/head:/app/Entities/Repos/PageRepo.php diff --git a/app/Entities/Repos/PageRepo.php b/app/Entities/Repos/PageRepo.php index ce7e34ae1..68b1c398f 100644 --- a/app/Entities/Repos/PageRepo.php +++ b/app/Entities/Repos/PageRepo.php @@ -11,7 +11,6 @@ use BookStack\Entities\Models\PageRevision; use BookStack\Entities\Queries\EntityQueries; use BookStack\Entities\Tools\BookContents; use BookStack\Entities\Tools\PageContent; -use BookStack\Entities\Tools\PageEditorData; use BookStack\Entities\Tools\PageEditorType; use BookStack\Entities\Tools\TrashCan; use BookStack\Exceptions\MoveOperationException; @@ -44,6 +43,7 @@ class PageRepo 'owned_by' => user()->id, 'updated_by' => user()->id, 'draft' => true, + 'editor' => PageEditorType::getSystemDefault()->value, ]); if ($parent instanceof Chapter) { @@ -87,6 +87,17 @@ class PageRepo return $draft; } + /** + * Directly update the content for the given page from the provided input. + * Used for direct content access in a way that performs required changes + * (Search index & reference regen) without performing an official update. + */ + public function setContentFromInput(Page $page, array $input): void + { + $this->updateTemplateStatusAndContentFromInput($page, $input); + $this->baseRepo->update($page, []); + } + /** * Update a page in the system. */ @@ -121,7 +132,7 @@ class PageRepo return $page; } - protected function updateTemplateStatusAndContentFromInput(Page $page, array $input) + protected function updateTemplateStatusAndContentFromInput(Page $page, array $input): void { if (isset($input['template']) && userCan('templates-manage')) { $page->template = ($input['template'] === 'true'); @@ -146,8 +157,10 @@ class PageRepo $pageContent->setNewHTML($input['html'], user()); } - if ($newEditor !== $currentEditor && userCan('editor-change')) { + if (($newEditor !== $currentEditor || empty($page->editor)) && userCan('editor-change')) { $page->editor = $newEditor->value; + } elseif (empty($page->editor)) { + $page->editor = $defaultEditor->value; } }