X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/87e18b80684dedc761e669d375f59b548e4ab52f..refs/pull/474/head:/app/Repos/EntityRepo.php diff --git a/app/Repos/EntityRepo.php b/app/Repos/EntityRepo.php index 449e3aa7d..d87c40f9b 100644 --- a/app/Repos/EntityRepo.php +++ b/app/Repos/EntityRepo.php @@ -348,6 +348,10 @@ class EntityRepo foreach ($entities as $entity) { if ($entity->chapter_id === 0 || $entity->chapter_id === '0') continue; $parentKey = 'BookStack\\Chapter:' . $entity->chapter_id; + if (!isset($parents[$parentKey])) { + $tree[] = $entity; + continue; + } $chapter = $parents[$parentKey]; $chapter->pages->push($entity); } @@ -529,11 +533,11 @@ class EntityRepo /** * Alias method to update the book jointPermissions in the PermissionService. - * @param Collection $collection collection on entities + * @param Book $book */ - public function buildJointPermissions(Collection $collection) + public function buildJointPermissionsForBook(Book $book) { - $this->permissionService->buildJointPermissionsForEntities($collection); + $this->permissionService->buildJointPermissionsForEntity($book); } /** @@ -567,8 +571,9 @@ class EntityRepo $draftPage->slug = $this->findSuitableSlug('page', $draftPage->name, false, $draftPage->book->id); $draftPage->html = $this->formatHtml($input['html']); - $draftPage->text = strip_tags($draftPage->html); + $draftPage->text = $this->pageToPlainText($draftPage); $draftPage->draft = false; + $draftPage->revision_count = 1; $draftPage->save(); $this->savePageRevision($draftPage, trans('entities.pages_initial_revision')); @@ -593,6 +598,7 @@ class EntityRepo $revision->created_at = $page->updated_at; $revision->type = 'version'; $revision->summary = $summary; + $revision->revision_number = $page->revision_count; $revision->save(); // Clear old revisions @@ -707,6 +713,17 @@ class EntityRepo return $content; } + /** + * Get the plain text version of a page's content. + * @param Page $page + * @return string + */ + public function pageToPlainText(Page $page) + { + $html = $this->renderPage($page); + return strip_tags($html); + } + /** * Get a new draft page instance. * @param Book $book @@ -724,6 +741,7 @@ class EntityRepo if ($chapter) $page->chapter_id = $chapter->id; $book->pages()->save($page); + $page = $this->page->find($page->id); $this->permissionService->buildJointPermissionsForEntity($page); return $page; } @@ -809,9 +827,10 @@ class EntityRepo $userId = user()->id; $page->fill($input); $page->html = $this->formatHtml($input['html']); - $page->text = strip_tags($page->html); + $page->text = $this->pageToPlainText($page); if (setting('app-editor') !== 'markdown') $page->markdown = ''; $page->updated_by = $userId; + $page->revision_count++; $page->save(); // Remove all update drafts for this user & page. @@ -920,11 +939,12 @@ class EntityRepo */ public function restorePageRevision(Page $page, Book $book, $revisionId) { + $page->revision_count++; $this->savePageRevision($page); $revision = $page->revisions()->where('id', '=', $revisionId)->first(); $page->fill($revision->toArray()); $page->slug = $this->findSuitableSlug('page', $page->name, $page->id, $book->id); - $page->text = strip_tags($page->html); + $page->text = $this->pageToPlainText($page); $page->updated_by = user()->id; $page->save(); $this->searchService->indexEntity($page); @@ -944,7 +964,7 @@ class EntityRepo if ($page->draft) { $page->fill($data); if (isset($data['html'])) { - $page->text = strip_tags($data['html']); + $page->text = $this->pageToPlainText($page); } $page->save(); return $page;