/** * Map the redirect routes. * * @param UrlGenerator $url * @param Router $router * @param Request $request * @param RedirectRepositoryInterface $redirects * @internal param Filesystem $files * @internal param Application $application */ public function map(UrlGenerator $url, Router $router, Request $request, RedirectRepositoryInterface $redirects) { if ($request->segment(1) == 'admin') { return; } /* @var RedirectInterface $redirect */ foreach ($redirects->sorted() as $redirect) { if (!starts_with($parsed = $redirect->getFrom(), ['http://', 'https://', '//'])) { $parsed = $url->to($redirect->getFrom()); } $parsed = parse_url(preg_replace_callback("/\\{[a-z]+\\?\\}/", function ($matches) { return str_replace('?', '!', $matches[0]); }, $parsed)); if (isset($parsed['host']) && $parsed['host'] == $request->getHost()) { /** * Route a domain redirect in a domain group. */ $router->group(['domain' => $parsed['host']], function () use($parsed, $router, $redirect) { $path = ltrim(preg_replace_callback("/\\{[a-z]+\\!\\}/", function ($matches) { return str_replace('!', '?', $matches[0]); }, $parsed['path']), '/'); $router->any($path ?: '/', ['uses' => 'Anomaly\\RedirectsModule\\Http\\Controller\\RedirectsController@handle', 'redirect' => $redirect->getId()])->where(['any' => '(.*)', 'path' => '(.*)']); }); } else { /** * Route a standard redirect. */ $router->any($redirect->getFrom(), ['uses' => 'Anomaly\\RedirectsModule\\Http\\Controller\\RedirectsController@handle', 'redirect' => $redirect->getId()])->where(['any' => '(.*)', 'path' => '(.*)']); } } }
/** * Map the redirect routes. * * @param Filesystem $files * @param Application $application */ public function map(Router $router, RedirectRepositoryInterface $redirects) { /* @var RedirectInterface $redirect */ foreach ($redirects->all() as $redirect) { $router->any($redirect->getFrom(), ['uses' => 'Anomaly\\RedirectsModule\\Http\\Controller\\RedirectsController@handle', 'redirect' => $redirect->getId()]); } }
/** * Handle the command. * * @param RedirectRepositoryInterface $redirects * @param Redirector $redirector * @param Parser $parser * @param Route $route * @return \Illuminate\Http\RedirectResponse */ public function handle(RedirectRepositoryInterface $redirects, Redirector $redirector, Parser $parser, Route $route) { $redirect = $redirects->find($this->id); $parameters = array_merge(array_map(function () { return null; }, array_flip($route->parameterNames())), $route->parameters()); return $redirector->to($parser->parse($redirect->getTo(), $parameters), $redirect->getStatus(), [], $redirect->isSecure()); }
/** * Handle the command. * * @param RedirectRepositoryInterface $redirects * @param Application $application * @param RedirectsModule $module * @param Filesystem $files */ public function handle(RedirectRepositoryInterface $redirects, Application $application, RedirectsModule $module, Filesystem $files) { $files->makeDirectory($application->getStoragePath('redirects'), 0777, true, true); $files->put($application->getStoragePath('redirects/routes.php'), app('Anomaly\\Streams\\Platform\\Support\\String')->render($files->get($module->getPath('resources/assets/routes.template')), ['redirects' => $redirects->all()])); }
/** * Handle the redirect. * * @param Route $route * @param RedirectResponse $response * @param RedirectRepositoryInterface $redirects * @return \Illuminate\Http\RedirectResponse */ public function handle(Route $route, RedirectResponse $response, RedirectRepositoryInterface $redirects) { return $response->create($redirects->find(array_get($route->getAction(), 'redirect'))); }