@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.4 kB view raw
1<?php 2 3final class PhabricatorProjectsSearchEngineExtension 4 extends PhabricatorSearchEngineExtension { 5 6 const EXTENSIONKEY = 'projects'; 7 8 public function isExtensionEnabled() { 9 return PhabricatorApplication::isClassInstalled( 10 PhabricatorProjectApplication::class); 11 } 12 13 public function getExtensionName() { 14 return pht('Support for Projects'); 15 } 16 17 public function getExtensionOrder() { 18 return 3000; 19 } 20 21 public function supportsObject($object) { 22 return ($object instanceof PhabricatorProjectInterface); 23 } 24 25 public function applyConstraintsToQuery( 26 $object, 27 $query, 28 PhabricatorSavedQuery $saved, 29 array $map) { 30 31 if (!empty($map['projectPHIDs'])) { 32 $query->withEdgeLogicConstraints( 33 PhabricatorProjectObjectHasProjectEdgeType::EDGECONST, 34 $map['projectPHIDs']); 35 } 36 } 37 38 public function getSearchFields($object) { 39 $fields = array(); 40 41 $fields[] = id(new PhabricatorProjectSearchField()) 42 ->setKey('projectPHIDs') 43 ->setConduitKey('projects') 44 ->setAliases(array('project', 'projects', 'tag', 'tags')) 45 ->setLabel(pht('Project Tags')) 46 ->setDescription( 47 pht('Search for objects tagged with given projects.')); 48 49 return $fields; 50 } 51 52 public function getSearchAttachments($object) { 53 return array( 54 id(new PhabricatorProjectsSearchEngineAttachment()) 55 ->setAttachmentKey('projects'), 56 ); 57 } 58 59 60}