mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-30 16:40:28 +01:00
51 lines
1.2 KiB
PHP
51 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Xentral\Components\Http;
|
|
|
|
class RedirectResponse extends Response
|
|
{
|
|
/**
|
|
* @param string $url Absolute or relative url
|
|
*
|
|
* @return self
|
|
*/
|
|
public static function createFromUrl($url)
|
|
{
|
|
$content = self::getRedirectTemplate($url);
|
|
|
|
return new self(
|
|
$content,
|
|
Response::HTTP_MOVED_TEMPORARILY,
|
|
[
|
|
'Length' => (string)strlen($content),
|
|
'Location' => $url,
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @param string $url
|
|
*
|
|
* @return string
|
|
*/
|
|
private static function getRedirectTemplate($url)
|
|
{
|
|
$template = <<<'HTML'
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta http-equiv="refresh" content="0;URL='%1$s'" />
|
|
<title>Redirecting</title>
|
|
</head>
|
|
<body>
|
|
<h1>Redirecting...</h1>
|
|
<p>You are being redirected. If nothing happens, please <a href="%1$s">follow this link</a>.</p>
|
|
</body>
|
|
</html>
|
|
HTML;
|
|
|
|
return sprintf($template, $url);
|
|
}
|
|
}
|