@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
at upstream/main 91 lines 2.8 kB view raw
1<?php 2 3final class PhabricatorSubscriptionsEditEngineExtension 4 extends PhabricatorEditEngineExtension { 5 6 const EXTENSIONKEY = 'subscriptions.subscribers'; 7 const FIELDKEY = 'subscriberPHIDs'; 8 9 const EDITKEY_ADD = 'subscribers.add'; 10 const EDITKEY_SET = 'subscribers.set'; 11 const EDITKEY_REMOVE = 'subscribers.remove'; 12 13 public function getExtensionPriority() { 14 return 750; 15 } 16 17 public function isExtensionEnabled() { 18 return true; 19 } 20 21 public function getExtensionName() { 22 return pht('Subscriptions'); 23 } 24 25 public function supportsObject( 26 PhabricatorEditEngine $engine, 27 PhabricatorApplicationTransactionInterface $object) { 28 return ($object instanceof PhabricatorSubscribableInterface); 29 } 30 31 public function buildCustomEditFields( 32 PhabricatorEditEngine $engine, 33 PhabricatorApplicationTransactionInterface $object) { 34 35 $subscribers_type = PhabricatorTransactions::TYPE_SUBSCRIBERS; 36 37 $object_phid = $object->getPHID(); 38 if ($object_phid) { 39 $sub_phids = PhabricatorSubscribersQuery::loadSubscribersForPHID( 40 $object_phid); 41 } else { 42 $sub_phids = array(); 43 } 44 45 $viewer = $engine->getViewer(); 46 47 $subscribers_field = id(new PhabricatorSubscribersEditField()) 48 ->setKey(self::FIELDKEY) 49 ->setLabel(pht('Subscribers')) 50 ->setEditTypeKey('subscribers') 51 ->setAliases(array('subscriber', 'subscribers')) 52 ->setIsCopyable(true) 53 ->setUseEdgeTransactions(true) 54 ->setCommentActionLabel(pht('Change Subscribers')) 55 ->setCommentActionOrder(9000) 56 ->setDescription(pht('Choose subscribers.')) 57 ->setTransactionType($subscribers_type) 58 ->setValue($sub_phids) 59 ->setViewer($viewer); 60 61 $subscriber_datasource = id(new PhabricatorMetaMTAMailableDatasource()) 62 ->setViewer($viewer); 63 64 $edit_add = $subscribers_field->getConduitEditType(self::EDITKEY_ADD) 65 ->setConduitDescription(pht('Add subscribers.')); 66 67 $edit_set = $subscribers_field->getConduitEditType(self::EDITKEY_SET) 68 ->setConduitDescription( 69 pht('Set subscribers, overwriting current value.')); 70 71 $edit_rem = $subscribers_field->getConduitEditType(self::EDITKEY_REMOVE) 72 ->setConduitDescription(pht('Remove subscribers.')); 73 74 $subscribers_field->getBulkEditType(self::EDITKEY_ADD) 75 ->setBulkEditLabel(pht('Add subscribers')) 76 ->setDatasource($subscriber_datasource); 77 78 $subscribers_field->getBulkEditType(self::EDITKEY_SET) 79 ->setBulkEditLabel(pht('Set subscribers to')) 80 ->setDatasource($subscriber_datasource); 81 82 $subscribers_field->getBulkEditType(self::EDITKEY_REMOVE) 83 ->setBulkEditLabel(pht('Remove subscribers')) 84 ->setDatasource($subscriber_datasource); 85 86 return array( 87 $subscribers_field, 88 ); 89 } 90 91}