diff --git a/src/applications/conduit/query/ConduitResultSearchEngineExtension.php b/src/applications/conduit/query/ConduitResultSearchEngineExtension.php --- a/src/applications/conduit/query/ConduitResultSearchEngineExtension.php +++ b/src/applications/conduit/query/ConduitResultSearchEngineExtension.php @@ -25,7 +25,7 @@ return $object->getFieldSpecificationsForConduit(); } - public function getFieldValuesForConduit($object) { + public function getFieldValuesForConduit($object, $data) { return $object->getFieldValuesForConduit(); } diff --git a/src/applications/policy/engineextension/PhabricatorPolicySearchEngineExtension.php b/src/applications/policy/engineextension/PhabricatorPolicySearchEngineExtension.php --- a/src/applications/policy/engineextension/PhabricatorPolicySearchEngineExtension.php +++ b/src/applications/policy/engineextension/PhabricatorPolicySearchEngineExtension.php @@ -30,7 +30,7 @@ ); } - public function getFieldValuesForConduit($object) { + public function getFieldValuesForConduit($object, $data) { $capabilities = $object->getCapabilities(); $map = array(); diff --git a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php --- a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php +++ b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php @@ -1138,6 +1138,11 @@ if ($objects) { $field_extensions = $this->getConduitFieldExtensions(); + $extension_data = array(); + foreach ($field_extensions as $key => $extension) { + $extension_data[$key] = $extension->loadExtensionConduitData($objects); + } + $attachment_data = array(); foreach ($attachments as $key => $attachment) { $attachment_data[$key] = $attachment->loadAttachmentData( @@ -1148,7 +1153,8 @@ foreach ($objects as $object) { $field_map = $this->getObjectWireFieldsForConduit( $object, - $field_extensions); + $field_extensions, + $extension_data); $attachment_map = array(); foreach ($attachments as $key => $attachment) { @@ -1312,11 +1318,13 @@ protected function getObjectWireFieldsForConduit( $object, - array $field_extensions) { + array $field_extensions, + array $extension_data) { $fields = array(); - foreach ($field_extensions as $extension) { - $fields += $extension->getFieldValuesForConduit($object); + foreach ($field_extensions as $key => $extension) { + $data = idx($extension_data, $key, array()); + $fields += $extension->getFieldValuesForConduit($object, $data); } return $fields; diff --git a/src/applications/search/engineextension/PhabricatorLiskSearchEngineExtension.php b/src/applications/search/engineextension/PhabricatorLiskSearchEngineExtension.php --- a/src/applications/search/engineextension/PhabricatorLiskSearchEngineExtension.php +++ b/src/applications/search/engineextension/PhabricatorLiskSearchEngineExtension.php @@ -44,7 +44,7 @@ ); } - public function getFieldValuesForConduit($object) { + public function getFieldValuesForConduit($object, $data) { return array( 'dateCreated' => (int)$object->getDateCreated(), 'dateModified' => (int)$object->getDateModified(), diff --git a/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php b/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php --- a/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php +++ b/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php @@ -56,7 +56,11 @@ return array(); } - public function getFieldValuesForConduit($object) { + public function loadExtensionConduitData(array $objects) { + return null; + } + + public function getFieldValuesForConduit($object, $data) { return array(); } diff --git a/src/applications/spaces/engineextension/PhabricatorSpacesSearchEngineExtension.php b/src/applications/spaces/engineextension/PhabricatorSpacesSearchEngineExtension.php --- a/src/applications/spaces/engineextension/PhabricatorSpacesSearchEngineExtension.php +++ b/src/applications/spaces/engineextension/PhabricatorSpacesSearchEngineExtension.php @@ -63,7 +63,7 @@ ); } - public function getFieldValuesForConduit($object) { + public function getFieldValuesForConduit($object, $data) { return array( 'spacePHID' => $object->getSpacePHID(), ); diff --git a/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldSearchEngineExtension.php b/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldSearchEngineExtension.php --- a/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldSearchEngineExtension.php +++ b/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldSearchEngineExtension.php @@ -80,7 +80,7 @@ return $map; } - public function getFieldValuesForConduit($object) { + public function getFieldValuesForConduit($object, $data) { // TODO: This is currently very inefficient. We should bulk-load these // field values instead.