namespace BookStack\References;
-use BookStack\Model;
+use BookStack\App\Model;
+use BookStack\Entities\Queries\EntityQueries;
use BookStack\References\ModelResolvers\BookLinkModelResolver;
use BookStack\References\ModelResolvers\BookshelfLinkModelResolver;
use BookStack\References\ModelResolvers\ChapterLinkModelResolver;
use BookStack\References\ModelResolvers\CrossLinkModelResolver;
use BookStack\References\ModelResolvers\PageLinkModelResolver;
use BookStack\References\ModelResolvers\PagePermalinkModelResolver;
-use DOMDocument;
-use DOMXPath;
+use BookStack\Util\HtmlDocument;
class CrossLinkParser
{
{
$links = [];
- $html = '<body>' . $html . '</body>';
- libxml_use_internal_errors(true);
- $doc = new DOMDocument();
- $doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
-
- $xPath = new DOMXPath($doc);
- $anchors = $xPath->query('//a[@href]');
+ $doc = new HtmlDocument($html);
+ $anchors = $doc->queryXPath('//a[@href]');
/** @var \DOMElement $anchor */
foreach ($anchors as $anchor) {
*/
public static function createWithEntityResolvers(): self
{
+ $queries = app()->make(EntityQueries::class);
+
return new self([
- new PagePermalinkModelResolver(),
- new PageLinkModelResolver(),
- new ChapterLinkModelResolver(),
- new BookLinkModelResolver(),
- new BookshelfLinkModelResolver(),
+ new PagePermalinkModelResolver($queries->pages),
+ new PageLinkModelResolver($queries->pages),
+ new ChapterLinkModelResolver($queries->chapters),
+ new BookLinkModelResolver($queries->books),
+ new BookshelfLinkModelResolver($queries->shelves),
]);
}
}