Changeset View
Changeset View
Standalone View
Standalone View
src/applications/search/index/PhabricatorFulltextEngine.php
| Show All 20 Lines | abstract class PhabricatorFulltextEngine | ||||
| abstract protected function buildAbstractDocument( | abstract protected function buildAbstractDocument( | ||||
| PhabricatorSearchAbstractDocument $document, | PhabricatorSearchAbstractDocument $document, | ||||
| $object); | $object); | ||||
| final public function buildFulltextIndexes() { | final public function buildFulltextIndexes() { | ||||
| $object = $this->getObject(); | $object = $this->getObject(); | ||||
| $extensions = PhabricatorFulltextEngineExtension::getAllExtensions(); | $extensions = PhabricatorFulltextEngineExtension::getAllExtensions(); | ||||
| $enrich_extensions = array(); | |||||
| $index_extensions = array(); | |||||
| foreach ($extensions as $key => $extension) { | foreach ($extensions as $key => $extension) { | ||||
| if (!$extension->shouldIndexFulltextObject($object)) { | if ($extension->shouldEnrichFulltextObject($object)) { | ||||
| unset($extensions[$key]); | $enrich_extensions[] = $extension; | ||||
| } | |||||
| if ($extension->shouldIndexFulltextObject($object)) { | |||||
| $index_extensions[] = $extension; | |||||
| } | } | ||||
| } | } | ||||
| $document = $this->newAbstractDocument($object); | $document = $this->newAbstractDocument($object); | ||||
| $this->buildAbstractDocument($document, $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); | $extension->indexFulltextObject($object, $document); | ||||
| } | } | ||||
| PhabricatorSearchService::reindexAbstractDocument($document); | PhabricatorSearchService::reindexAbstractDocument($document); | ||||
| } | } | ||||
| protected function newAbstractDocument($object) { | protected function newAbstractDocument($object) { | ||||
| $phid = $object->getPHID(); | $phid = $object->getPHID(); | ||||
| return id(new PhabricatorSearchAbstractDocument()) | return id(new PhabricatorSearchAbstractDocument()) | ||||
| ->setPHID($phid) | ->setPHID($phid) | ||||
| ->setDocumentType(phid_get_type($phid)); | ->setDocumentType(phid_get_type($phid)); | ||||
| } | } | ||||
| } | } | ||||