diff --git a/src/applications/phurl/remarkup/PhabricatorPhurlLinkRemarkupRule.php b/src/applications/phurl/remarkup/PhabricatorPhurlLinkRemarkupRule.php index aca7c14dc7..4ef59b300c 100644 --- a/src/applications/phurl/remarkup/PhabricatorPhurlLinkRemarkupRule.php +++ b/src/applications/phurl/remarkup/PhabricatorPhurlLinkRemarkupRule.php @@ -1,73 +1,74 @@ <?php final class PhabricatorPhurlLinkRemarkupRule extends PhutilRemarkupRule { public function getPriority() { return 200.0; } public function apply($text) { // `((123))` remarkup link to `/u/123` // `((alias))` remarkup link to `/u/alias` return preg_replace_callback( '/\(\(([^ )]+)\)\)/', array($this, 'markupLink'), $text); } public function markupLink(array $matches) { $engine = $this->getEngine(); $viewer = $engine->getConfig('viewer'); + $text_mode = $engine->isTextMode(); + $html_mode = $engine->isHTMLMailMode(); if (!$this->isFlatText($matches[0])) { return $matches[0]; } $ref = $matches[1]; $monogram = null; $is_monogram = '/^U(?P<id>[1-9]\d*)/'; + $query = id(new PhabricatorPhurlURLQuery()) + ->setViewer($viewer); + if (preg_match($is_monogram, $ref, $monogram)) { - $phurls = id(new PhabricatorPhurlURLQuery()) - ->setViewer($viewer) - ->withIDs(array($monogram[1])) - ->execute(); + $query->withIDs(array($monogram[1])); } else if (ctype_digit($ref)) { - $phurls = id(new PhabricatorPhurlURLQuery()) - ->setViewer($viewer) - ->withIDs(array($ref)) - ->execute(); + $query->withIDs(array($ref)); } else { - $phurls = id(new PhabricatorPhurlURLQuery()) - ->setViewer($viewer) - ->withAliases(array($ref)) - ->execute(); + $query->withAliases(array($ref)); + } + + $phurl = $query->executeOne(); + if (!$phurl) { + return $matches[0]; } - $phurl = head($phurls); + $uri = $phurl->getRedirectURI(); + $name = $phurl->getDisplayName(); - if ($phurl) { - if ($text_mode) { - return $phurl->getDisplayName(). - ' <'. - $phurl->getRedirectURI(). - '>'; - } + if ($text_mode || $html_mode) { + $uri = PhabricatorEnv::getProductionURI($uri); + } + if ($text_mode) { + return pht( + '%s <%s>', + $name, + $uri); + } else { $link = phutil_tag( 'a', array( - 'href' => $phurl->getRedirectURI(), + 'href' => $uri, 'target' => '_blank', ), - $phurl->getDisplayName()); - - return $this->getEngine()->storeText($link); - } else { - return $matches[0]; + $name); } - } + return $this->getEngine()->storeText($link); + } }