X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/a6633642232efd164d4708967ab59e498fbff896..refs/pull/3032/head:/app/Entities/Models/Page.php diff --git a/app/Entities/Models/Page.php b/app/Entities/Models/Page.php index 739927aff..601e9630d 100644 --- a/app/Entities/Models/Page.php +++ b/app/Entities/Models/Page.php @@ -1,4 +1,6 @@ - 'boolean', + 'draft' => 'boolean', 'template' => 'boolean', ]; @@ -40,23 +44,14 @@ class Page extends BookChild */ public function scopeVisible(Builder $query): Builder { - $query = Permissions::enforceDraftVisiblityOnQuery($query); - return parent::scopeVisible($query); - } + $query = Permissions::enforceDraftVisibilityOnQuery($query); - /** - * Converts this page into a simplified array. - * @return mixed - */ - public function toSimpleArray() - { - $array = array_intersect_key($this->toArray(), array_flip($this->simpleAttributes)); - $array['url'] = $this->getUrl(); - return $array; + return parent::scopeVisible($query); } /** * Get the chapter that this page is in, If applicable. + * * @return BelongsTo */ public function chapter() @@ -66,6 +61,7 @@ class Page extends BookChild /** * Check if this page has a chapter. + * * @return bool */ public function hasChapter() @@ -75,15 +71,28 @@ class Page extends BookChild /** * Get the associated page revisions, ordered by created date. - * @return mixed + * Only provides actual saved page revision instances, Not drafts. */ - public function revisions() + public function revisions(): HasMany { - return $this->hasMany(PageRevision::class)->where('type', '=', 'version')->orderBy('created_at', 'desc')->orderBy('id', 'desc'); + return $this->allRevisions() + ->where('type', '=', 'version') + ->orderBy('created_at', 'desc') + ->orderBy('id', 'desc'); + } + + /** + * Get all revision instances assigned to this page. + * Includes all types of revisions. + */ + public function allRevisions(): HasMany + { + return $this->hasMany(PageRevision::class); } /** * Get the attachments assigned to this page. + * * @return HasMany */ public function attachments() @@ -98,7 +107,7 @@ class Page extends BookChild { $parts = [ 'books', - urlencode($this->getAttribute('bookSlug') ?? $this->book->slug), + urlencode($this->book_slug ?? $this->book->slug), $this->draft ? 'draft' : 'page', $this->draft ? $this->id : urlencode($this->slug), trim($path, '/'), @@ -108,7 +117,8 @@ class Page extends BookChild } /** - * Get the current revision for the page if existing + * Get the current revision for the page if existing. + * * @return PageRevision|null */ public function getCurrentRevision() @@ -124,6 +134,7 @@ class Page extends BookChild $refreshed = $this->refresh()->unsetRelations()->load(['tags', 'createdBy', 'updatedBy', 'ownedBy']); $refreshed->setHidden(array_diff($refreshed->getHidden(), ['html', 'markdown'])); $refreshed->html = (new PageContent($refreshed))->render(); + return $refreshed; } }