Page MenuHomePhabricator

D13090.id31614.diff
No OneTemporary

D13090.id31614.diff

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
@@ -644,12 +644,14 @@
'DivinerAtomQuery' => 'applications/diviner/query/DivinerAtomQuery.php',
'DivinerAtomRef' => 'applications/diviner/atom/DivinerAtomRef.php',
'DivinerAtomSearchEngine' => 'applications/diviner/query/DivinerAtomSearchEngine.php',
+ 'DivinerAtomSearchIndexer' => 'applications/diviner/search/DivinerAtomSearchIndexer.php',
'DivinerAtomizeWorkflow' => 'applications/diviner/workflow/DivinerAtomizeWorkflow.php',
'DivinerAtomizer' => 'applications/diviner/atomizer/DivinerAtomizer.php',
'DivinerBookController' => 'applications/diviner/controller/DivinerBookController.php',
'DivinerBookItemView' => 'applications/diviner/view/DivinerBookItemView.php',
'DivinerBookPHIDType' => 'applications/diviner/phid/DivinerBookPHIDType.php',
'DivinerBookQuery' => 'applications/diviner/query/DivinerBookQuery.php',
+ 'DivinerBookSearchIndexer' => 'applications/diviner/search/DivinerBookSearchIndexer.php',
'DivinerController' => 'applications/diviner/controller/DivinerController.php',
'DivinerDAO' => 'applications/diviner/storage/DivinerDAO.php',
'DivinerDefaultRenderer' => 'applications/diviner/renderer/DivinerDefaultRenderer.php',
@@ -3875,11 +3877,13 @@
'DivinerAtomPHIDType' => 'PhabricatorPHIDType',
'DivinerAtomQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'DivinerAtomSearchEngine' => 'PhabricatorApplicationSearchEngine',
+ 'DivinerAtomSearchIndexer' => 'PhabricatorSearchDocumentIndexer',
'DivinerAtomizeWorkflow' => 'DivinerWorkflow',
'DivinerBookController' => 'DivinerController',
'DivinerBookItemView' => 'AphrontTagView',
'DivinerBookPHIDType' => 'PhabricatorPHIDType',
'DivinerBookQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
+ 'DivinerBookSearchIndexer' => 'PhabricatorSearchDocumentIndexer',
'DivinerController' => 'PhabricatorController',
'DivinerDAO' => 'PhabricatorLiskDAO',
'DivinerDefaultRenderer' => 'DivinerRenderer',
@@ -3890,6 +3894,7 @@
'DivinerLiveBook' => array(
'DivinerDAO',
'PhabricatorPolicyInterface',
+ 'PhabricatorProjectInterface',
'PhabricatorDestructibleInterface',
),
'DivinerLivePublisher' => 'DivinerPublisher',
diff --git a/src/applications/diviner/application/PhabricatorDivinerApplication.php b/src/applications/diviner/application/PhabricatorDivinerApplication.php
--- a/src/applications/diviner/application/PhabricatorDivinerApplication.php
+++ b/src/applications/diviner/application/PhabricatorDivinerApplication.php
@@ -58,4 +58,11 @@
);
}
+ public function getApplicationSearchDocumentTypes() {
+ return array(
+ DivinerAtomPHIDType::TYPECONST,
+ DivinerBookPHIDType::TYPECONST,
+ );
+ }
+
}
diff --git a/src/applications/diviner/phid/DivinerBookPHIDType.php b/src/applications/diviner/phid/DivinerBookPHIDType.php
--- a/src/applications/diviner/phid/DivinerBookPHIDType.php
+++ b/src/applications/diviner/phid/DivinerBookPHIDType.php
@@ -32,7 +32,7 @@
$handle->setName($book->getShortTitle());
$handle->setFullName($book->getTitle());
- $handle->setURI("/diviner/book/{$name}/");
+ $handle->setURI("/book/{$name}/");
}
}
diff --git a/src/applications/diviner/search/DivinerAtomSearchIndexer.php b/src/applications/diviner/search/DivinerAtomSearchIndexer.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diviner/search/DivinerAtomSearchIndexer.php
@@ -0,0 +1,30 @@
+<?php
+
+final class DivinerAtomSearchIndexer extends PhabricatorSearchDocumentIndexer {
+
+ public function getIndexableObject() {
+ return new DivinerLiveSymbol();
+ }
+
+ protected function buildAbstractDocumentByPHID($phid) {
+ $atom = $this->loadDocumentByPHID($phid);
+
+ $doc = $this->newDocument($phid)
+ ->setDocumentTitle($atom->getName())
+ ->setDocumentCreated($atom->getBook()->getDateCreated())
+ ->setDocumentModified($atom->getBook()->getDateModified());
+
+ $doc->addField(
+ PhabricatorSearchField::FIELD_BODY,
+ $atom->getSummary());
+
+ $doc->addRelationship(
+ PhabricatorSearchRelationship::RELATIONSHIP_BOOK,
+ $atom->getBookPHID(),
+ DivinerBookPHIDType::TYPECONST,
+ $atom->getBook()->getDateCreated());
+
+ return $doc;
+ }
+
+}
diff --git a/src/applications/diviner/search/DivinerBookSearchIndexer.php b/src/applications/diviner/search/DivinerBookSearchIndexer.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diviner/search/DivinerBookSearchIndexer.php
@@ -0,0 +1,31 @@
+<?php
+
+final class DivinerBookSearchIndexer extends PhabricatorSearchDocumentIndexer {
+
+ public function getIndexableObject() {
+ return new DivinerLiveBook();
+ }
+
+ protected function buildAbstractDocumentByPHID($phid) {
+ $book = $this->loadDocumentByPHID($phid);
+
+ $doc = $this->newDocument($phid)
+ ->setDocumentTitle($book->getTitle())
+ ->setDocumentCreated($book->getDateCreated())
+ ->setDocumentModified($book->getDateModified());
+
+ $doc->addField(
+ PhabricatorSearchField::FIELD_BODY,
+ $book->getPreface());
+
+ $doc->addRelationship(
+ PhabricatorSearchRelationship::RELATIONSHIP_REPOSITORY,
+ $book->getRepositoryPHID(),
+ PhabricatorRepositoryRepositoryPHIDType::TYPECONST,
+ $book->getDateCreated());
+
+ return $doc;
+ }
+
+
+}
diff --git a/src/applications/search/constants/PhabricatorSearchRelationship.php b/src/applications/search/constants/PhabricatorSearchRelationship.php
--- a/src/applications/search/constants/PhabricatorSearchRelationship.php
+++ b/src/applications/search/constants/PhabricatorSearchRelationship.php
@@ -3,6 +3,7 @@
final class PhabricatorSearchRelationship {
const RELATIONSHIP_AUTHOR = 'auth';
+ const RELATIONSHIP_BOOK = 'book';
const RELATIONSHIP_REVIEWER = 'revw';
const RELATIONSHIP_SUBSCRIBER = 'subs';
const RELATIONSHIP_COMMENTER = 'comm';

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 16, 4:53 AM (6 d, 10 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7312909
Default Alt Text
D13090.id31614.diff (5 KB)

Event Timeline