NavigationItemForm: Don't pre-optimize urls with a port-macro

fixes #2695

(cherry picked from commit d246f76268b65f752be748c8364bdd1f697de23e)
Signed-off-by: Eric Lippmann <eric.lippmann@icinga.com>
This commit is contained in:
Johannes Meyer 2017-01-23 14:56:27 +01:00 committed by Eric Lippmann
parent d74124bd12
commit b06262e824

View File

@ -97,7 +97,10 @@ class NavigationItemForm extends Form
public function getValues($suppressArrayNotation = false)
{
$values = parent::getValues($suppressArrayNotation);
if (isset($values['url']) && $values['url']) {
// The regex here specifically matches the port-macro as it's the only one preventing Url::fromPath() from
// successfully parsing the given url. Any other macro such as for the scheme or host simply gets identified
// as path which is just fine in this case.
if (isset($values['url']) && $values['url'] && !preg_match('~://.+:(\$.+\$)~', $values['url'])) {
$url = Url::fromPath($values['url']);
if ($url->getBasePath() === $this->getRequest()->getBasePath()) {
$values['url'] = $url->getRelativeUrl();