]> BookStack Code Mirror - bookstack/blob - app/Entities/Queries/PageRevisionQueries.php
Opensearch: Fixed XML declaration when php short tags enabled
[bookstack] / app / Entities / Queries / PageRevisionQueries.php
1 <?php
2
3 namespace BookStack\Entities\Queries;
4
5 use BookStack\Entities\Models\PageRevision;
6 use Illuminate\Database\Eloquent\Builder;
7
8 class PageRevisionQueries
9 {
10     public function start(): Builder
11     {
12         return PageRevision::query();
13     }
14
15     public function findLatestVersionBySlugs(string $bookSlug, string $pageSlug): ?PageRevision
16     {
17         return PageRevision::query()
18             ->whereHas('page', function (Builder $query) {
19                 $query->scopes('visible');
20             })
21             ->where('slug', '=', $pageSlug)
22             ->where('type', '=', 'version')
23             ->where('book_slug', '=', $bookSlug)
24             ->orderBy('created_at', 'desc')
25             ->first();
26     }
27
28     public function findLatestCurrentUserDraftsForPageId(int $pageId): ?PageRevision
29     {
30         /** @var ?PageRevision $revision */
31         $revision = $this->latestCurrentUserDraftsForPageId($pageId)->first();
32
33         return $revision;
34     }
35
36     public function latestCurrentUserDraftsForPageId(int $pageId): Builder
37     {
38         return $this->start()
39             ->where('created_by', '=', user()->id)
40             ->where('type', 'update_draft')
41             ->where('page_id', '=', $pageId)
42             ->orderBy('created_at', 'desc');
43     }
44 }