Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/project/engineextension/PhabricatorProjectsFulltextEngineExtension.php b/src/applications/project/engineextension/PhabricatorProjectsFulltextEngineExtension.php
index 857783f811..79f395ebaa 100644
--- a/src/applications/project/engineextension/PhabricatorProjectsFulltextEngineExtension.php
+++ b/src/applications/project/engineextension/PhabricatorProjectsFulltextEngineExtension.php
@@ -1,37 +1,37 @@
<?php
final class PhabricatorProjectsFulltextEngineExtension
extends PhabricatorFulltextEngineExtension {
const EXTENSIONKEY = 'projects';
public function getExtensionName() {
return pht('Projects');
}
- public function shouldIndexFulltextObject($object) {
+ public function shouldEnrichFulltextObject($object) {
return ($object instanceof PhabricatorProjectInterface);
}
- public function indexFulltextObject(
+ public function enrichFulltextObject(
$object,
PhabricatorSearchAbstractDocument $document) {
$project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
$object->getPHID(),
PhabricatorProjectObjectHasProjectEdgeType::EDGECONST);
if (!$project_phids) {
return;
}
foreach ($project_phids as $project_phid) {
$document->addRelationship(
PhabricatorSearchRelationship::RELATIONSHIP_PROJECT,
$project_phid,
PhabricatorProjectProjectPHIDType::TYPECONST,
$document->getDocumentModified()); // Bogus timestamp.
}
}
}
diff --git a/src/applications/search/engineextension/PhabricatorLiskFulltextEngineExtension.php b/src/applications/search/engineextension/PhabricatorLiskFulltextEngineExtension.php
index 9cbe384a10..1626d248da 100644
--- a/src/applications/search/engineextension/PhabricatorLiskFulltextEngineExtension.php
+++ b/src/applications/search/engineextension/PhabricatorLiskFulltextEngineExtension.php
@@ -1,34 +1,34 @@
<?php
final class PhabricatorLiskFulltextEngineExtension
extends PhabricatorFulltextEngineExtension {
const EXTENSIONKEY = 'lisk';
public function getExtensionName() {
return pht('Lisk Builtin Properties');
}
- public function shouldIndexFulltextObject($object) {
+ public function shouldEnrichFulltextObject($object) {
if (!($object instanceof PhabricatorLiskDAO)) {
return false;
}
if (!$object->getConfigOption(LiskDAO::CONFIG_TIMESTAMPS)) {
return false;
}
return true;
}
- public function indexFulltextObject(
+ public function enrichFulltextObject(
$object,
PhabricatorSearchAbstractDocument $document) {
$document
->setDocumentCreated($object->getDateCreated())
->setDocumentModified($object->getDateModified());
}
}
diff --git a/src/applications/search/index/PhabricatorFulltextEngine.php b/src/applications/search/index/PhabricatorFulltextEngine.php
index 9f20917b3f..e1b2f4471d 100644
--- a/src/applications/search/index/PhabricatorFulltextEngine.php
+++ b/src/applications/search/index/PhabricatorFulltextEngine.php
@@ -1,53 +1,64 @@
<?php
abstract class PhabricatorFulltextEngine
extends Phobject {
private $object;
public function setObject($object) {
$this->object = $object;
return $this;
}
public function getObject() {
return $this->object;
}
protected function getViewer() {
return PhabricatorUser::getOmnipotentUser();
}
abstract protected function buildAbstractDocument(
PhabricatorSearchAbstractDocument $document,
$object);
final public function buildFulltextIndexes() {
$object = $this->getObject();
$extensions = PhabricatorFulltextEngineExtension::getAllExtensions();
+
+ $enrich_extensions = array();
+ $index_extensions = array();
foreach ($extensions as $key => $extension) {
- if (!$extension->shouldIndexFulltextObject($object)) {
- unset($extensions[$key]);
+ if ($extension->shouldEnrichFulltextObject($object)) {
+ $enrich_extensions[] = $extension;
+ }
+
+ if ($extension->shouldIndexFulltextObject($object)) {
+ $index_extensions[] = $extension;
}
}
$document = $this->newAbstractDocument($object);
$this->buildAbstractDocument($document, $object);
- foreach ($extensions as $extension) {
+ foreach ($enrich_extensions as $extension) {
+ $extension->enrichFulltextObject($object, $document);
+ }
+
+ foreach ($index_extensions as $extension) {
$extension->indexFulltextObject($object, $document);
}
PhabricatorSearchService::reindexAbstractDocument($document);
}
protected function newAbstractDocument($object) {
$phid = $object->getPHID();
return id(new PhabricatorSearchAbstractDocument())
->setPHID($phid)
->setDocumentType(phid_get_type($phid));
}
}
diff --git a/src/applications/search/index/PhabricatorFulltextEngineExtension.php b/src/applications/search/index/PhabricatorFulltextEngineExtension.php
index c52b35a58a..52aabe7c8b 100644
--- a/src/applications/search/index/PhabricatorFulltextEngineExtension.php
+++ b/src/applications/search/index/PhabricatorFulltextEngineExtension.php
@@ -1,28 +1,42 @@
<?php
abstract class PhabricatorFulltextEngineExtension extends Phobject {
final public function getExtensionKey() {
return $this->getPhobjectClassConstant('EXTENSIONKEY');
}
final protected function getViewer() {
return PhabricatorUser::getOmnipotentUser();
}
abstract public function getExtensionName();
- abstract public function shouldIndexFulltextObject($object);
+ public function shouldEnrichFulltextObject($object) {
+ return false;
+ }
- abstract public function indexFulltextObject(
+ public function enrichFulltextObject(
$object,
- PhabricatorSearchAbstractDocument $document);
+ PhabricatorSearchAbstractDocument $document) {
+ return;
+ }
+
+ public function shouldIndexFulltextObject($object) {
+ return false;
+ }
+
+ public function indexFulltextObject(
+ $object,
+ PhabricatorSearchAbstractDocument $document) {
+ return;
+ }
final public static function getAllExtensions() {
return id(new PhutilClassMapQuery())
->setAncestorClass(__CLASS__)
->setUniqueMethod('getExtensionKey')
->execute();
}
}
diff --git a/src/applications/subscriptions/engineextension/PhabricatorSubscriptionsFulltextEngineExtension.php b/src/applications/subscriptions/engineextension/PhabricatorSubscriptionsFulltextEngineExtension.php
index 3c25618ebe..e7876136a1 100644
--- a/src/applications/subscriptions/engineextension/PhabricatorSubscriptionsFulltextEngineExtension.php
+++ b/src/applications/subscriptions/engineextension/PhabricatorSubscriptionsFulltextEngineExtension.php
@@ -1,41 +1,41 @@
<?php
final class PhabricatorSubscriptionsFulltextEngineExtension
extends PhabricatorFulltextEngineExtension {
const EXTENSIONKEY = 'subscriptions';
public function getExtensionName() {
return pht('Subscribers');
}
- public function shouldIndexFulltextObject($object) {
+ public function shouldEnrichFulltextObject($object) {
return ($object instanceof PhabricatorSubscribableInterface);
}
- public function indexFulltextObject(
+ public function enrichFulltextObject(
$object,
PhabricatorSearchAbstractDocument $document) {
$subscriber_phids = PhabricatorSubscribersQuery::loadSubscribersForPHID(
$object->getPHID());
if (!$subscriber_phids) {
return;
}
$handles = id(new PhabricatorHandleQuery())
->setViewer($this->getViewer())
->withPHIDs($subscriber_phids)
->execute();
foreach ($handles as $phid => $handle) {
$document->addRelationship(
PhabricatorSearchRelationship::RELATIONSHIP_SUBSCRIBER,
$phid,
$handle->getType(),
$document->getDocumentModified()); // Bogus timestamp.
}
}
}
diff --git a/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php b/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php
index b95fc0167a..701ad34ca7 100644
--- a/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php
+++ b/src/applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php
@@ -1,44 +1,44 @@
<?php
final class PhabricatorTransactionsFulltextEngineExtension
extends PhabricatorFulltextEngineExtension {
const EXTENSIONKEY = 'transactions';
public function getExtensionName() {
return pht('Comments');
}
- public function shouldIndexFulltextObject($object) {
+ public function shouldEnrichFulltextObject($object) {
return ($object instanceof PhabricatorApplicationTransactionInterface);
}
- public function indexFulltextObject(
+ public function enrichFulltextObject(
$object,
PhabricatorSearchAbstractDocument $document) {
$query = PhabricatorApplicationTransactionQuery::newQueryForObject($object);
if (!$query) {
return;
}
$xactions = $query
->setViewer($this->getViewer())
->withObjectPHIDs(array($object->getPHID()))
->needComments(true)
->execute();
foreach ($xactions as $xaction) {
if (!$xaction->hasComment()) {
continue;
}
$comment = $xaction->getComment();
$document->addField(
PhabricatorSearchDocumentFieldType::FIELD_COMMENT,
$comment->getContent());
}
}
}
diff --git a/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldFulltextEngineExtension.php b/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldFulltextEngineExtension.php
index 8186ff5311..9e0684cacc 100644
--- a/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldFulltextEngineExtension.php
+++ b/src/infrastructure/customfield/engineextension/PhabricatorCustomFieldFulltextEngineExtension.php
@@ -1,39 +1,39 @@
<?php
final class PhabricatorCustomFieldFulltextEngineExtension
extends PhabricatorFulltextEngineExtension {
const EXTENSIONKEY = 'customfield.fields';
public function getExtensionName() {
return pht('Custom Fields');
}
- public function shouldIndexFulltextObject($object) {
+ public function shouldEnrichFulltextObject($object) {
return ($object instanceof PhabricatorCustomFieldInterface);
}
- public function indexFulltextObject(
+ public function enrichFulltextObject(
$object,
PhabricatorSearchAbstractDocument $document) {
// Rebuild the ApplicationSearch indexes. These are internal and not part
// of the fulltext search, but putting them in this workflow allows users
// to use the same tools to rebuild the indexes, which is easy to
// understand.
$field_list = PhabricatorCustomField::getObjectFields(
$object,
PhabricatorCustomField::ROLE_DEFAULT);
$field_list->setViewer($this->getViewer());
$field_list->readFieldsFromStorage($object);
// Rebuild ApplicationSearch indexes.
$field_list->rebuildIndexes($object);
// Rebuild global search indexes.
$field_list->updateAbstractDocument($document);
}
}

File Metadata

Mime Type
text/x-diff
Expires
Tue, Jun 10, 1:58 PM (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
140398
Default Alt Text
(11 KB)

Event Timeline