]> BookStack Code Mirror - bookstack/blob - app/Util/CrossLinking/ModelResolvers/BookLinkModelResolver.php
Added system to extract model references from HTML content
[bookstack] / app / Util / CrossLinking / ModelResolvers / BookLinkModelResolver.php
1 <?php
2
3 namespace BookStack\Util\CrossLinking\ModelResolvers;
4
5 use BookStack\Entities\Models\Book;
6 use BookStack\Model;
7
8 class BookLinkModelResolver implements CrossLinkModelResolver
9 {
10     public function resolve(string $link): ?Model
11     {
12         $pattern = '/^' . preg_quote(url('/books'), '/') . '\/([\w-]+)' . '[#?\/$]/';
13         $matches = [];
14         $match = preg_match($pattern, $link, $matches);
15         if (!$match) {
16             return null;
17         }
18
19         $bookSlug = $matches[1];
20
21         /** @var ?Book $model */
22         $model = Book::query()->where('slug', '=',  $bookSlug)->first();
23
24         return $model;
25     }
26 }