3 final class DoorkeeperHyperlinkEngineExtension
4 extends PhabricatorRemarkupHyperlinkEngineExtension
{
6 const LINKENGINEKEY
= 'doorkeeper';
8 public function processHyperlinks(array $hyperlinks) {
9 $engine = $this->getEngine();
10 $viewer = $engine->getConfig('viewer');
16 $configs = id(new PhabricatorAuthProviderConfigQuery())
22 foreach ($configs as $key => $config) {
23 $provider = $config->getProvider();
24 if (($provider instanceof DoorkeeperRemarkupURIInterface
)) {
25 $providers[] = $provider;
34 foreach ($hyperlinks as $hyperlink) {
35 $uri = $hyperlink->getURI();
36 $uri = new PhutilURI($uri);
38 foreach ($providers as $provider) {
39 $ref = $provider->getDoorkeeperURIRef($uri);
41 if (($ref !== null) && !($ref instanceof DoorkeeperURIRef
)) {
44 'Expected "getDoorkeeperURIRef()" to return "null" or an '.
45 'object of type "DoorkeeperURIRef", but got %s from provider '.
47 phutil_describe_type($ref),
48 get_class($provider)));
55 $tag_id = celerity_generate_unique_node_id();
56 $href = phutil_string_cast($ref->getURI());
62 $ref->getApplicationType(),
63 $ref->getApplicationDomain(),
64 $ref->getObjectType(),
67 'view' => $ref->getDisplayMode(),
70 $text = $ref->getText();
75 $view = id(new PHUITagView())
79 ->setType(PHUITagView
::TYPE_OBJECT
)
82 $hyperlink->setResult($view);
88 Javelin
::initBehavior('doorkeeper-tag', array('tags' => $refs));