diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -2849,6 +2849,7 @@ '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 @@ '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 --- /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 --- a/src/applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php +++ b/src/applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php @@ -49,5 +49,12 @@ return $fields; } + public function getSearchAttachments() { + return array( + id(new PhabricatorProjectsSearchEngineAttachment()) + ->setAttachmentKey('projects'), + ); + } + }