mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-30 22:18:46 +02:00
migration symfony 5 4 (#300)
* symfony 5.4 (diff dev) * symfony 5.4 (working) * symfony 5.4 (update autoload) * symfony 5.4 (remove swiftmailer mailer implementation) * symfony 5.4 (php doc and split Global accessor class) ### Impacted packages: composer require php:">=7.2.5 <8.0.0" symfony/console:5.4.* symfony/dotenv:5.4.* symfony/framework-bundle:5.4.* symfony/twig-bundle:5.4.* symfony/yaml:5.4.* --update-with-dependencies composer require symfony/stopwatch:5.4.* symfony/web-profiler-bundle:5.4.* --dev --update-with-dependencies
This commit is contained in:
@@ -12,8 +12,7 @@
|
||||
namespace Symfony\Bridge\Twig\Extension;
|
||||
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
use Symfony\Component\Routing\RequestContext;
|
||||
use Symfony\Component\HttpFoundation\UrlHelper;
|
||||
use Twig\Extension\AbstractExtension;
|
||||
use Twig\TwigFunction;
|
||||
|
||||
@@ -22,21 +21,19 @@ use Twig\TwigFunction;
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class HttpFoundationExtension extends AbstractExtension
|
||||
final class HttpFoundationExtension extends AbstractExtension
|
||||
{
|
||||
private $requestStack;
|
||||
private $requestContext;
|
||||
private $urlHelper;
|
||||
|
||||
public function __construct(RequestStack $requestStack, RequestContext $requestContext = null)
|
||||
public function __construct(UrlHelper $urlHelper)
|
||||
{
|
||||
$this->requestStack = $requestStack;
|
||||
$this->requestContext = $requestContext;
|
||||
$this->urlHelper = $urlHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getFunctions()
|
||||
public function getFunctions(): array
|
||||
{
|
||||
return [
|
||||
new TwigFunction('absolute_url', [$this, 'generateAbsoluteUrl']),
|
||||
@@ -49,63 +46,11 @@ class HttpFoundationExtension extends AbstractExtension
|
||||
*
|
||||
* This method returns the path unchanged if no request is available.
|
||||
*
|
||||
* @param string $path The path
|
||||
*
|
||||
* @return string The absolute URL
|
||||
*
|
||||
* @see Request::getUriForPath()
|
||||
*/
|
||||
public function generateAbsoluteUrl($path)
|
||||
public function generateAbsoluteUrl(string $path): string
|
||||
{
|
||||
if (false !== strpos($path, '://') || '//' === substr($path, 0, 2)) {
|
||||
return $path;
|
||||
}
|
||||
|
||||
if (!$request = $this->requestStack->getMasterRequest()) {
|
||||
if (null !== $this->requestContext && '' !== $host = $this->requestContext->getHost()) {
|
||||
$scheme = $this->requestContext->getScheme();
|
||||
$port = '';
|
||||
|
||||
if ('http' === $scheme && 80 != $this->requestContext->getHttpPort()) {
|
||||
$port = ':'.$this->requestContext->getHttpPort();
|
||||
} elseif ('https' === $scheme && 443 != $this->requestContext->getHttpsPort()) {
|
||||
$port = ':'.$this->requestContext->getHttpsPort();
|
||||
}
|
||||
|
||||
if ('#' === $path[0]) {
|
||||
$queryString = $this->requestContext->getQueryString();
|
||||
$path = $this->requestContext->getPathInfo().($queryString ? '?'.$queryString : '').$path;
|
||||
} elseif ('?' === $path[0]) {
|
||||
$path = $this->requestContext->getPathInfo().$path;
|
||||
}
|
||||
|
||||
if ('/' !== $path[0]) {
|
||||
$path = rtrim($this->requestContext->getBaseUrl(), '/').'/'.$path;
|
||||
}
|
||||
|
||||
return $scheme.'://'.$host.$port.$path;
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
|
||||
if ('#' === $path[0]) {
|
||||
$path = $request->getRequestUri().$path;
|
||||
} elseif ('?' === $path[0]) {
|
||||
$path = $request->getPathInfo().$path;
|
||||
}
|
||||
|
||||
if (!$path || '/' !== $path[0]) {
|
||||
$prefix = $request->getPathInfo();
|
||||
$last = \strlen($prefix) - 1;
|
||||
if ($last !== $pos = strrpos($prefix, '/')) {
|
||||
$prefix = substr($prefix, 0, $pos).'/';
|
||||
}
|
||||
|
||||
return $request->getUriForPath($prefix.$path);
|
||||
}
|
||||
|
||||
return $request->getSchemeAndHttpHost().$path;
|
||||
return $this->urlHelper->getAbsoluteUrl($path);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -113,32 +58,10 @@ class HttpFoundationExtension extends AbstractExtension
|
||||
*
|
||||
* This method returns the path unchanged if no request is available.
|
||||
*
|
||||
* @param string $path The path
|
||||
*
|
||||
* @return string The relative path
|
||||
*
|
||||
* @see Request::getRelativeUriForPath()
|
||||
*/
|
||||
public function generateRelativePath($path)
|
||||
public function generateRelativePath(string $path): string
|
||||
{
|
||||
if (false !== strpos($path, '://') || '//' === substr($path, 0, 2)) {
|
||||
return $path;
|
||||
}
|
||||
|
||||
if (!$request = $this->requestStack->getMasterRequest()) {
|
||||
return $path;
|
||||
}
|
||||
|
||||
return $request->getRelativeUriForPath($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the extension.
|
||||
*
|
||||
* @return string The extension name
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return 'request';
|
||||
return $this->urlHelper->getRelativePath($path);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user