3 namespace BookStack\References;
5 use BookStack\Entities\Models\Entity;
6 use BookStack\Entities\Models\Page;
7 use BookStack\Entities\Repos\RevisionRepo;
9 class CrossLinkReplacer
11 protected ReferenceFetcher $referenceFetcher;
12 protected RevisionRepo $revisionRepo;
14 public function __construct(ReferenceFetcher $referenceFetcher, RevisionRepo $revisionRepo)
16 $this->referenceFetcher = $referenceFetcher;
17 $this->revisionRepo = $revisionRepo;
20 public function updateEntityPageReferences(Entity $entity, string $oldLink)
22 $references = $this->referenceFetcher->getPageReferencesToEntity($entity);
23 $newLink = $entity->getUrl();
25 /** @var Reference $reference */
26 foreach ($references as $reference) {
27 /** @var Page $page */
28 $page = $reference->from;
29 $this->updateReferencesWithinPage($page, $oldLink, $newLink);
33 protected function updateReferencesWithinPage(Page $page, string $oldLink, string $newLink)
35 $page = (clone $page)->refresh();
36 $html = '';// TODO - Update HTML content
37 $markdown = '';// TODO - Update markdown content
40 $page->markdown = $markdown;
41 $page->revision_count++;
44 $summary = ''; // TODO - Get default summary from translations
45 $this->revisionRepo->storeNewForPage($page, $summary);