@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 60 lines 1.5 kB view raw
1<?php 2 3final class PhabricatorSubscriptionsSearchEngineExtension 4 extends PhabricatorSearchEngineExtension { 5 6 const EXTENSIONKEY = 'subscriptions'; 7 8 public function isExtensionEnabled() { 9 return PhabricatorApplication::isClassInstalled( 10 PhabricatorSubscriptionsApplication::class); 11 } 12 13 public function getExtensionName() { 14 return pht('Support for Subscriptions'); 15 } 16 17 public function getExtensionOrder() { 18 return 2000; 19 } 20 21 public function supportsObject($object) { 22 return ($object instanceof PhabricatorSubscribableInterface); 23 } 24 25 public function applyConstraintsToQuery( 26 $object, 27 $query, 28 PhabricatorSavedQuery $saved, 29 array $map) { 30 31 if (!empty($map['subscriberPHIDs'])) { 32 $query->withEdgeLogicPHIDs( 33 PhabricatorObjectHasSubscriberEdgeType::EDGECONST, 34 PhabricatorQueryConstraint::OPERATOR_OR, 35 $map['subscriberPHIDs']); 36 } 37 } 38 39 public function getSearchFields($object) { 40 $fields = array(); 41 42 $fields[] = id(new PhabricatorSearchSubscribersField()) 43 ->setLabel(pht('Subscribers')) 44 ->setKey('subscriberPHIDs') 45 ->setConduitKey('subscribers') 46 ->setAliases(array('subscriber', 'subscribers')) 47 ->setDescription( 48 pht('Search for objects with certain subscribers.')); 49 50 return $fields; 51 } 52 53 public function getSearchAttachments($object) { 54 return array( 55 id(new PhabricatorSubscriptionsSearchEngineAttachment()) 56 ->setAttachmentKey('subscribers'), 57 ); 58 } 59 60}