Commit 3555e2b4 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #2538982 by dawehner, pwolanin, Fabianx: Get rid of strtr in UrlGenerator, it is not needed

parent 5a9f6e7d
Loading
Loading
Loading
Loading
+9 −4
Changes for core/lib/Drupal/Core/Routing/UrlGenerator.php: 9 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -54,14 +54,19 @@ class UrlGenerator implements UrlGeneratorInterface {
  /**
   * Overrides characters that will not be percent-encoded in the path segment.
   *
   * The first two elements are the first two parameters of str_replace(), so
   * if you override this variable you can also use arrays for the encoded
   * and decoded characters.
   *
   * @see \Symfony\Component\Routing\Generator\UrlGenerator
   */
  protected $decodedChars = array(
  protected $decodedChars = [
    // the slash can be used to designate a hierarchical structure and we want allow using it with this meaning
    // some webservers don't allow the slash in encoded form in the path for security reasons anyway
    // see http://stackoverflow.com/questions/4069002/http-400-if-2f-part-of-get-url-in-jboss
    '%2F' => '/',
  );
    '%2F', // Map from these encoded characters.
    '/', // Map to these decoded characters.
  ];

  /**
   *  Constructs a new generator object.
@@ -211,7 +216,7 @@ protected function doGenerate(array $variables, array $defaults, array $tokens,
    }

    // The contexts base URL is already encoded (see Symfony\Component\HttpFoundation\Request)
    $url = strtr(rawurlencode($url), $this->decodedChars);
    $url = str_replace($this->decodedChars[0], $this->decodedChars[1], rawurlencode($url));

    // Drupal paths rarely include dots, so skip this processing if possible.
    if (strpos($url, '/.') !== FALSE) {