From 3db175f79ddd9a426933da02d59fd417cbefe4a2 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 14 Dec 2015 06:01:04 -0800 Subject: [PATCH] Add a "content" attachment for Pastes for Conduit API Summary: Ref T9964. Builds on D14772. Allows callers to get the raw content of pastes as an attachment. Test Plan: - Read docs. - Executed attachment query. - Saw raw paste content. Reviewers: chad Reviewed By: chad Maniphest Tasks: T9964 Differential Revision: https://secure.phabricator.com/D14774 --- src/__phutil_library_map__.php | 2 ++ .../PhabricatorConduitResultInterface.php | 5 ++++ .../ConduitResultSearchEngineExtension.php | 4 ++++ .../maniphest/storage/ManiphestTask.php | 4 ++++ .../storage/PhabricatorOwnersPackage.php | 4 ++++ ...atorPasteContentSearchEngineAttachment.php | 24 +++++++++++++++++++ .../paste/storage/PhabricatorPaste.php | 7 ++++++ ...abricatorProjectsSearchEngineExtension.php | 2 +- .../PhabricatorApplicationSearchEngine.php | 3 ++- .../PhabricatorSearchEngineExtension.php | 2 +- ...atorSubscriptionsSearchEngineExtension.php | 2 +- 11 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 src/applications/paste/engineextension/PhabricatorPasteContentSearchEngineAttachment.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 446ad19af5..4a7b76ff43 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -2643,6 +2643,7 @@ phutil_register_library_map(array( 'PhabricatorPasteApplication' => 'applications/paste/application/PhabricatorPasteApplication.php', 'PhabricatorPasteArchiveController' => 'applications/paste/controller/PhabricatorPasteArchiveController.php', 'PhabricatorPasteConfigOptions' => 'applications/paste/config/PhabricatorPasteConfigOptions.php', + 'PhabricatorPasteContentSearchEngineAttachment' => 'applications/paste/engineextension/PhabricatorPasteContentSearchEngineAttachment.php', 'PhabricatorPasteController' => 'applications/paste/controller/PhabricatorPasteController.php', 'PhabricatorPasteDAO' => 'applications/paste/storage/PhabricatorPasteDAO.php', 'PhabricatorPasteEditController' => 'applications/paste/controller/PhabricatorPasteEditController.php', @@ -6883,6 +6884,7 @@ phutil_register_library_map(array( 'PhabricatorPasteApplication' => 'PhabricatorApplication', 'PhabricatorPasteArchiveController' => 'PhabricatorPasteController', 'PhabricatorPasteConfigOptions' => 'PhabricatorApplicationConfigOptions', + 'PhabricatorPasteContentSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment', 'PhabricatorPasteController' => 'PhabricatorController', 'PhabricatorPasteDAO' => 'PhabricatorLiskDAO', 'PhabricatorPasteEditController' => 'PhabricatorPasteController', diff --git a/src/applications/conduit/interface/PhabricatorConduitResultInterface.php b/src/applications/conduit/interface/PhabricatorConduitResultInterface.php index 1ffc3cc51e..77b0fff35f 100644 --- a/src/applications/conduit/interface/PhabricatorConduitResultInterface.php +++ b/src/applications/conduit/interface/PhabricatorConduitResultInterface.php @@ -5,6 +5,7 @@ interface PhabricatorConduitResultInterface public function getFieldSpecificationsForConduit(); public function getFieldValuesForConduit(); + public function getConduitSearchAttachments(); } @@ -28,4 +29,8 @@ interface PhabricatorConduitResultInterface ); } + public function getConduitSearchAttachments() { + return array(); + } + */ diff --git a/src/applications/conduit/query/ConduitResultSearchEngineExtension.php b/src/applications/conduit/query/ConduitResultSearchEngineExtension.php index f3ba5d1694..9bf4b1a346 100644 --- a/src/applications/conduit/query/ConduitResultSearchEngineExtension.php +++ b/src/applications/conduit/query/ConduitResultSearchEngineExtension.php @@ -29,4 +29,8 @@ final class ConduitResultSearchEngineExtension return $object->getFieldValuesForConduit(); } + public function getSearchAttachments($object) { + return $object->getConduitSearchAttachments(); + } + } diff --git a/src/applications/maniphest/storage/ManiphestTask.php b/src/applications/maniphest/storage/ManiphestTask.php index 4b0f484996..c698cf6718 100644 --- a/src/applications/maniphest/storage/ManiphestTask.php +++ b/src/applications/maniphest/storage/ManiphestTask.php @@ -437,4 +437,8 @@ final class ManiphestTask extends ManiphestDAO ); } + public function getConduitSearchAttachments() { + return array(); + } + } diff --git a/src/applications/owners/storage/PhabricatorOwnersPackage.php b/src/applications/owners/storage/PhabricatorOwnersPackage.php index cd63ff42fc..52b8529179 100644 --- a/src/applications/owners/storage/PhabricatorOwnersPackage.php +++ b/src/applications/owners/storage/PhabricatorOwnersPackage.php @@ -395,4 +395,8 @@ final class PhabricatorOwnersPackage ); } + public function getConduitSearchAttachments() { + return array(); + } + } diff --git a/src/applications/paste/engineextension/PhabricatorPasteContentSearchEngineAttachment.php b/src/applications/paste/engineextension/PhabricatorPasteContentSearchEngineAttachment.php new file mode 100644 index 0000000000..2d459e5501 --- /dev/null +++ b/src/applications/paste/engineextension/PhabricatorPasteContentSearchEngineAttachment.php @@ -0,0 +1,24 @@ +needRawContent(true); + } + + public function getAttachmentForObject($object, $data, $spec) { + return array( + 'data' => $object->getRawContent(), + ); + } + +} diff --git a/src/applications/paste/storage/PhabricatorPaste.php b/src/applications/paste/storage/PhabricatorPaste.php index 4998f6bd9e..52db12ef02 100644 --- a/src/applications/paste/storage/PhabricatorPaste.php +++ b/src/applications/paste/storage/PhabricatorPaste.php @@ -285,4 +285,11 @@ final class PhabricatorPaste extends PhabricatorPasteDAO ); } + public function getConduitSearchAttachments() { + return array( + id(new PhabricatorPasteContentSearchEngineAttachment()) + ->setAttachmentKey('content'), + ); + } + } diff --git a/src/applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php b/src/applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php index 7d1a8d49a5..37d00e9391 100644 --- a/src/applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php +++ b/src/applications/project/engineextension/PhabricatorProjectsSearchEngineExtension.php @@ -49,7 +49,7 @@ final class PhabricatorProjectsSearchEngineExtension return $fields; } - public function getSearchAttachments() { + public function getSearchAttachments($object) { return array( id(new PhabricatorProjectsSearchEngineAttachment()) ->setAttachmentKey('projects'), diff --git a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php index 99d8acef20..b1ca414e4e 100644 --- a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php +++ b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php @@ -1319,10 +1319,11 @@ abstract class PhabricatorApplicationSearchEngine extends Phobject { public function getConduitSearchAttachments() { $extensions = $this->getEngineExtensions(); + $object = $this->newResultObject(); $attachments = array(); foreach ($extensions as $extension) { - $extension_attachments = $extension->getSearchAttachments(); + $extension_attachments = $extension->getSearchAttachments($object); foreach ($extension_attachments as $attachment) { $attachment_key = $attachment->getAttachmentKey(); if (isset($attachments[$attachment_key])) { diff --git a/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php b/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php index a5923734ea..39af0a3fdd 100644 --- a/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php +++ b/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php @@ -40,7 +40,7 @@ abstract class PhabricatorSearchEngineExtension extends Phobject { return array(); } - public function getSearchAttachments() { + public function getSearchAttachments($object) { return array(); } diff --git a/src/applications/subscriptions/engineextension/PhabricatorSubscriptionsSearchEngineExtension.php b/src/applications/subscriptions/engineextension/PhabricatorSubscriptionsSearchEngineExtension.php index a2dc73d82a..d1945aadee 100644 --- a/src/applications/subscriptions/engineextension/PhabricatorSubscriptionsSearchEngineExtension.php +++ b/src/applications/subscriptions/engineextension/PhabricatorSubscriptionsSearchEngineExtension.php @@ -50,7 +50,7 @@ final class PhabricatorSubscriptionsSearchEngineExtension return $fields; } - public function getSearchAttachments() { + public function getSearchAttachments($object) { return array( id(new PhabricatorSubscriptionsSearchEngineAttachment()) ->setAttachmentKey('subscribers'), -- 2.51.2