@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
phorge
phabricator
1<?php
2
3abstract class PhabricatorHovercardEngineExtension extends Phobject {
4
5 private $viewer;
6
7 final public function getExtensionKey() {
8 return $this->getPhobjectClassConstant('EXTENSIONKEY');
9 }
10
11 final public function setViewer($viewer) {
12 $this->viewer = $viewer;
13 return $this;
14 }
15
16 final public function getViewer() {
17 return $this->viewer;
18 }
19
20 abstract public function isExtensionEnabled();
21
22 abstract public function getExtensionName();
23
24 abstract public function canRenderObjectHovercard($object);
25
26 public function getExtensionOrder() {
27 return 5000;
28 }
29
30 public function willRenderHovercards(array $objects) {
31 return null;
32 }
33
34 abstract public function renderHovercard(
35 PHUIHovercardView $hovercard,
36 PhabricatorObjectHandle $handle,
37 $object,
38 $data);
39
40 final public static function getAllExtensions() {
41 return id(new PhutilClassMapQuery())
42 ->setAncestorClass(self::class)
43 ->setUniqueMethod('getExtensionKey')
44 ->setSortMethod('getExtensionOrder')
45 ->execute();
46 }
47
48 final public static function getAllEnabledExtensions() {
49 $extensions = self::getAllExtensions();
50
51 foreach ($extensions as $key => $extension) {
52 if (!$extension->isExtensionEnabled()) {
53 unset($extensions[$key]);
54 }
55 }
56
57 return $extensions;
58 }
59
60}