diff --git a/src/applications/config/controller/PhabricatorConfigEditController.php b/src/applications/config/controller/PhabricatorConfigEditController.php index f7ba0a54a4..57f083c42b 100644 --- a/src/applications/config/controller/PhabricatorConfigEditController.php +++ b/src/applications/config/controller/PhabricatorConfigEditController.php @@ -486,7 +486,6 @@ final class PhabricatorConfigEditController if (is_array($value)) { $value = implode("\n", $value); } - $value = phutil_escape_html_newlines($value); } $table[] = hsprintf( diff --git a/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php b/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php index 453a9036aa..3d6c38384b 100644 --- a/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php +++ b/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php @@ -79,6 +79,7 @@ final class PhabricatorDiffusionConfigOptions array('/[Ii]ssues?:?(\s*,?\s*#\d+)+/', '/(\d+)/'), pht('Issue #123, #456')) ->addExample(array('/(?addExample('/[A-Z]{2,}-\d+/', pht('JIRA-1234')) ->setDescription(pht( 'Regular expression to link external bug tracker. See '. 'http://tortoisesvn.net/docs/release/TortoiseSVN_en/'. diff --git a/src/applications/diffusion/controller/DiffusionCommitController.php b/src/applications/diffusion/controller/DiffusionCommitController.php index 6e2d5c2d63..e3b40a08a3 100644 --- a/src/applications/diffusion/controller/DiffusionCommitController.php +++ b/src/applications/diffusion/controller/DiffusionCommitController.php @@ -106,7 +106,7 @@ final class DiffusionCommitController extends DiffusionController { $message = $commit_data->getCommitMessage(); $revision = $commit->getCommitIdentifier(); - $message = $repository->linkBugtraq($message, $revision); + $message = $this->linkBugtraq($message); $message = $engine->markupText($message); @@ -999,4 +999,27 @@ final class DiffusionCommitController extends DiffusionController { return $view; } + private function linkBugtraq($corpus) { + $url = PhabricatorEnv::getEnvConfig('bugtraq.url'); + if (!strlen($url)) { + return $corpus; + } + + $regexes = PhabricatorEnv::getEnvConfig('bugtraq.logregex'); + if (!$regexes) { + return $corpus; + } + + $parser = id(new PhutilBugtraqParser()) + ->setBugtraqPattern("[[ {$url} | %BUGID% ]]") + ->setBugtraqCaptureExpression(array_shift($regexes)); + + $select = array_shift($regexes); + if ($select) { + $parser->setBugtraqSelectExpression($select); + } + + return $parser->processCorpus($corpus); + } + } diff --git a/src/applications/repository/storage/PhabricatorRepository.php b/src/applications/repository/storage/PhabricatorRepository.php index d1cc0a5ab5..00708edf13 100644 --- a/src/applications/repository/storage/PhabricatorRepository.php +++ b/src/applications/repository/storage/PhabricatorRepository.php @@ -692,58 +692,6 @@ final class PhabricatorRepository extends PhabricatorRepositoryDAO } - /** - * Link external bug tracking system if defined. - * - * @param string Plain text. - * @param string Commit identifier. - * @return string Remarkup - */ - public function linkBugtraq($message, $revision = null) { - $bugtraq_url = PhabricatorEnv::getEnvConfig('bugtraq.url'); - list($bugtraq_re, $id_re) = - PhabricatorEnv::getEnvConfig('bugtraq.logregex') + - array('', ''); - - switch ($this->getVersionControlSystem()) { - case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: - // TODO: Get bugtraq:logregex and bugtraq:url from SVN properties. - break; - } - - if (!$bugtraq_url || $bugtraq_re == '') { - return $message; - } - - $matches = null; - $flags = PREG_SET_ORDER | PREG_OFFSET_CAPTURE; - preg_match_all($bugtraq_re, $message, $matches, $flags); - foreach ($matches as $match) { - list($all, $all_offset) = array_shift($match); - - if ($id_re != '') { - // Match substrings with bug IDs - preg_match_all($id_re, $all, $match, PREG_OFFSET_CAPTURE); - list(, $match) = $match; - } else { - $all_offset = 0; - } - - $match = array_reverse($match); - foreach ($match as $val) { - list($s, $offset) = $val; - $message = substr_replace( - $message, - '[[ '.str_replace('%BUGID%', $s, $bugtraq_url).' | '.$s.' ]]', - $offset + $all_offset, - strlen($s)); - } - } - - return $message; - } - - /* -( PhabricatorPolicyInterface )----------------------------------------- */