From c0e20a11c1d46cc04ef2dc436a8f2c5a1f309fce Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 14 Dec 2015 05:41:26 -0800 Subject: [PATCH] Add a "projects" Search attachment for Conduit APIs Summary: Ref T9964. Builds on D14772. Allows callers to request project PHIDs for objects. Test Plan: {F1025468} Reviewers: chad Reviewed By: chad Maniphest Tasks: T9964 Differential Revision: https://secure.phabricator.com/D14773 --- src/__phutil_library_map__.php | 2 + ...bricatorProjectsSearchEngineAttachment.php | 43 +++++++++++++++++++ ...abricatorProjectsSearchEngineExtension.php | 7 +++ 3 files changed, 52 insertions(+) create mode 100644 src/applications/project/engineextension/PhabricatorProjectsSearchEngineAttachment.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index b59440ebc0..446ad19af5 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -2849,6 +2849,7 @@ phutil_register_library_map(array( 'PhabricatorProjectsEditEngineExtension' => 'applications/project/engineextension/PhabricatorProjectsEditEngineExtension.php', 'PhabricatorProjectsEditField' => 'applications/transactions/editfield/PhabricatorProjectsEditField.php', 'PhabricatorProjectsPolicyRule' => 'applications/project/policyrule/PhabricatorProjectsPolicyRule.php', + 'PhabricatorProjectsSearchEngineAttachment' => 'applications/project/engineextension/PhabricatorProjectsSearchEngineAttachment.php', 'PhabricatorProjectsSearchEngineExtension' => 'applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php', 'PhabricatorProtocolAdapter' => 'infrastructure/daemon/bot/adapter/PhabricatorProtocolAdapter.php', 'PhabricatorPygmentSetupCheck' => 'applications/config/check/PhabricatorPygmentSetupCheck.php', @@ -7128,6 +7129,7 @@ phutil_register_library_map(array( 'PhabricatorProjectsEditEngineExtension' => 'PhabricatorEditEngineExtension', 'PhabricatorProjectsEditField' => 'PhabricatorTokenizerEditField', 'PhabricatorProjectsPolicyRule' => 'PhabricatorPolicyRule', + 'PhabricatorProjectsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment', 'PhabricatorProjectsSearchEngineExtension' => 'PhabricatorSearchEngineExtension', 'PhabricatorProtocolAdapter' => 'Phobject', 'PhabricatorPygmentSetupCheck' => 'PhabricatorSetupCheck', diff --git a/src/applications/project/engineextension/PhabricatorProjectsSearchEngineAttachment.php b/src/applications/project/engineextension/PhabricatorProjectsSearchEngineAttachment.php new file mode 100644 index 0000000000..07904fc79e --- /dev/null +++ b/src/applications/project/engineextension/PhabricatorProjectsSearchEngineAttachment.php @@ -0,0 +1,43 @@ +withSourcePHIDs($object_phids) + ->withEdgeTypes( + array( + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST, + )); + $projects_query->execute(); + + return array( + 'projects.query' => $projects_query, + ); + } + + public function getAttachmentForObject($object, $data, $spec) { + $projects_query = $data['projects.query']; + $object_phid = $object->getPHID(); + + $project_phids = $projects_query->getDestinationPHIDs( + array($object_phid), + array(PhabricatorProjectObjectHasProjectEdgeType::EDGECONST)); + + return array( + 'projectPHIDs' => array_values($project_phids), + ); + } + +} diff --git a/src/applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php b/src/applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php index df804e142d..7d1a8d49a5 100644 --- a/src/applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php +++ b/src/applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php @@ -49,5 +49,12 @@ final class PhabricatorProjectsSearchEngineExtension return $fields; } + public function getSearchAttachments() { + return array( + id(new PhabricatorProjectsSearchEngineAttachment()) + ->setAttachmentKey('projects'), + ); + } + }