diff --git a/core/Router/RedirectBuilder.php b/core/Router/RedirectBuilder.php index 774e5fc..3ad94db 100644 --- a/core/Router/RedirectBuilder.php +++ b/core/Router/RedirectBuilder.php @@ -3,6 +3,7 @@ namespace App\Core\Router; use App\Core\Entity\Redirect; +use App\Core\String\UrlBuilder; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; @@ -13,6 +14,13 @@ use Symfony\Component\HttpFoundation\Request; */ class RedirectBuilder { + protected UrlBuilder $urlBuilder; + + public function __construct(UrlBuilder $urlBuilder) + { + $this->urlBuilder = $urlBuilder; + } + public function buildResponse(Redirect $redirect, Request $request): RedirectResponse { return new RedirectResponse( @@ -31,6 +39,8 @@ class RedirectBuilder $location = preg_replace('`'.$redirect->getRule().'`sU', $redirect->getLocation(), $data['path']); } + $location = $this->urlBuilder->replaceTags($location); + if ($redirect->getReuseQueryString() && count($request->query)) { $location .= sprintf('?%s', http_build_query($request->query->all())); } diff --git a/core/String/FileInformationBuilder.php b/core/String/FileInformationBuilder.php new file mode 100644 index 0000000..9f3aab6 --- /dev/null +++ b/core/String/FileInformationBuilder.php @@ -0,0 +1,61 @@ + + */ +class FileInformationBuilder +{ + protected FsFileManager $fsManager; + protected FileInformationRepositoryQuery $query; + + public function __construct(FsFileManager $fsManager, FileInformationRepositoryQuery $query) + { + $this->fsManager = $fsManager; + $this->query = $query; + } + + public function replaceTags(string $value) + { + preg_match_all( + '#\{\{\s*fattr://(?P[a-z0-9]+)\/(?P