@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 PhabricatorEditEngineExtension 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 public function getExtensionPriority() {
21 return 1000;
22 }
23
24 abstract public function isExtensionEnabled();
25 abstract public function getExtensionName();
26
27 abstract public function supportsObject(
28 PhabricatorEditEngine $engine,
29 PhabricatorApplicationTransactionInterface $object);
30
31 abstract public function buildCustomEditFields(
32 PhabricatorEditEngine $engine,
33 PhabricatorApplicationTransactionInterface $object);
34
35 public function newBulkEditGroups(PhabricatorEditEngine $engine) {
36 return array();
37 }
38
39 final public static function getAllExtensions() {
40 return id(new PhutilClassMapQuery())
41 ->setAncestorClass(self::class)
42 ->setUniqueMethod('getExtensionKey')
43 ->setSortMethod('getExtensionPriority')
44 ->execute();
45 }
46
47 final public static function getAllEnabledExtensions() {
48 $extensions = self::getAllExtensions();
49
50 foreach ($extensions as $key => $extension) {
51 if (!$extension->isExtensionEnabled()) {
52 unset($extensions[$key]);
53 }
54 }
55
56 return $extensions;
57 }
58
59}