Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/search/index/indexer/differential/PhabricatorSearchDifferentialIndexer.php b/src/applications/search/index/indexer/differential/PhabricatorSearchDifferentialIndexer.php
index 5ad13064a1..8e0af71606 100644
--- a/src/applications/search/index/indexer/differential/PhabricatorSearchDifferentialIndexer.php
+++ b/src/applications/search/index/indexer/differential/PhabricatorSearchDifferentialIndexer.php
@@ -1,45 +1,102 @@
<?php
/*
* Copyright 2011 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class PhabricatorSearchDifferentialIndexer
extends PhabricatorSearchDocumentIndexer {
public static function indexRevision(DifferentialRevision $rev) {
$doc = new PhabricatorSearchAbstractDocument();
$doc->setPHID($rev->getPHID());
$doc->setDocumentType('DREV');
$doc->setDocumentTitle($rev->getTitle());
$doc->setDocumentCreated($rev->getDateCreated());
$doc->setDocumentModified($rev->getDateModified());
$doc->addField(
PhabricatorSearchField::FIELD_BODY,
$rev->getSummary());
$doc->addField(
PhabricatorSearchField::FIELD_TEST_PLAN,
$rev->getTestPlan());
$doc->addRelationship(
PhabricatorSearchRelationship::RELATIONSHIP_AUTHOR,
$rev->getAuthorPHID(),
'USER',
$rev->getDateCreated());
+ if ($rev->getStatus() != DifferentialRevisionStatus::COMMITTED &&
+ $rev->getStatus() != DifferentialRevisionStatus::ABANDONED) {
+ $doc->addRelationship(
+ PhabricatorSearchRelationship::RELATIONSHIP_OPEN,
+ $rev->getPHID(),
+ 'DREV',
+ time());
+ }
+
+ $comments = id(new DifferentialInlineComment())->loadAllWhere(
+ 'revisionID = %d AND commentID is not null',
+ $rev->getID());
+
+ $touches = array();
+
+ foreach ($comments as $comment) {
+ if (strlen($comment->getContent())) {
+ // TODO: we should also index inline comments.
+ $doc->addField(
+ PhabricatorSearchField::FIELD_COMMENT,
+ $comment->getContent());
+ }
+
+ $author = $comment->getAuthorPHID();
+ $touches[$author] = $comment->getDateCreated();
+ }
+
+ foreach ($touches as $touch => $time) {
+ $doc->addRelationship(
+ PhabricatorSearchRelationship::RELATIONSHIP_TOUCH,
+ $touch,
+ 'USER',
+ $time);
+ }
+
+ $rev->loadRelationships();
+
+ foreach ($rev->getReviewers() as $phid) {
+ $doc->addRelationship(
+ PhabricatorSearchRelationship::RELATIONSHIP_OWNER,
+ $phid,
+ 'USER',
+ $rev->getDateModified()); // Bogus timestamp.
+ }
+
+ $ccphids = $rev->getCCPHIDs();
+ $handles = id(new PhabricatorObjectHandleData($ccphids))
+ ->loadHandles();
+
+ foreach ($handles as $phid => $handle) {
+ $doc->addRelationship(
+ PhabricatorSearchRelationship::RELATIONSHIP_SUBSCRIBER,
+ $phid,
+ $handle->getType(),
+ $rev->getDateModified()); // Bogus timestamp.
+ }
+
PhabricatorSearchDocument::reindexAbstractDocument($doc);
}
}
diff --git a/src/applications/search/index/indexer/differential/__init__.php b/src/applications/search/index/indexer/differential/__init__.php
index ba69035939..9dda223db2 100644
--- a/src/applications/search/index/indexer/differential/__init__.php
+++ b/src/applications/search/index/indexer/differential/__init__.php
@@ -1,16 +1,21 @@
<?php
/**
* This file is automatically generated. Lint this module to rebuild it.
* @generated
*/
+phutil_require_module('phabricator', 'applications/differential/constants/revisionstatus');
+phutil_require_module('phabricator', 'applications/differential/storage/inlinecomment');
+phutil_require_module('phabricator', 'applications/phid/handle/data');
phutil_require_module('phabricator', 'applications/search/constants/field');
phutil_require_module('phabricator', 'applications/search/constants/relationship');
phutil_require_module('phabricator', 'applications/search/index/abstractdocument');
phutil_require_module('phabricator', 'applications/search/index/indexer/base');
phutil_require_module('phabricator', 'applications/search/storage/document/document');
+phutil_require_module('phutil', 'utils');
+
phutil_require_source('PhabricatorSearchDifferentialIndexer.php');
diff --git a/src/applications/search/index/indexer/maniphest/PhabricatorSearchManiphestIndexer.php b/src/applications/search/index/indexer/maniphest/PhabricatorSearchManiphestIndexer.php
index 7fe489e5af..c548b39263 100644
--- a/src/applications/search/index/indexer/maniphest/PhabricatorSearchManiphestIndexer.php
+++ b/src/applications/search/index/indexer/maniphest/PhabricatorSearchManiphestIndexer.php
@@ -1,120 +1,116 @@
<?php
/*
* Copyright 2011 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class PhabricatorSearchManiphestIndexer
extends PhabricatorSearchDocumentIndexer {
public static function indexTask(ManiphestTask $task) {
$doc = new PhabricatorSearchAbstractDocument();
$doc->setPHID($task->getPHID());
$doc->setDocumentType('TASK');
$doc->setDocumentTitle($task->getTitle());
$doc->setDocumentCreated($task->getDateCreated());
$doc->setDocumentModified($task->getDateModified());
$doc->addField(
PhabricatorSearchField::FIELD_BODY,
$task->getDescription());
$doc->addRelationship(
PhabricatorSearchRelationship::RELATIONSHIP_AUTHOR,
$task->getAuthorPHID(),
'USER',
$task->getDateCreated());
if ($task->getStatus() == ManiphestTaskStatus::STATUS_OPEN) {
$doc->addRelationship(
PhabricatorSearchRelationship::RELATIONSHIP_OPEN,
$task->getPHID(),
'TASK',
time());
}
$transactions = id(new ManiphestTransaction())->loadAllWhere(
'taskID = %d',
$task->getID());
$current_ccs = $task->getCCPHIDs();
$touches = array();
$owner = null;
$ccs = array();
foreach ($transactions as $transaction) {
if ($transaction->hasComments()) {
$doc->addField(
PhabricatorSearchField::FIELD_COMMENT,
$transaction->getComments());
}
$author = $transaction->getAuthorPHID();
// Record the most recent time they touched this object.
$touches[$author] = $transaction->getDateCreated();
switch ($transaction->getTransactionType()) {
case ManiphestTransactionType::TYPE_OWNER:
$owner = $transaction;
break;
case ManiphestTransactionType::TYPE_CCS:
// For users who are still CC'd, record the first time they were
// added to CC.
foreach ($transaction->getNewValue() as $added_cc) {
if (in_array($added_cc, $current_ccs)) {
if (empty($ccs[$added_cc])) {
$ccs[$added_cc] = $transaction->getDateCreated();
-
- // CCs count as touches, even if you didn't technically
- // interact with the object directly.
- $touches[$added_cc] = $transaction->getDateCreated();
}
}
}
break;
}
}
if ($owner && $owner->getNewValue()) {
$doc->addRelationship(
PhabricatorSearchRelationship::RELATIONSHIP_OWNER,
$owner->getNewValue(),
'USER',
$owner->getDateCreated());
}
foreach ($touches as $touch => $time) {
$doc->addRelationship(
PhabricatorSearchRelationship::RELATIONSHIP_TOUCH,
$touch,
'USER',
$time);
}
// We need to load handles here since non-users may subscribe (mailing
// lists, e.g.)
$handles = id(new PhabricatorObjectHandleData(array_keys($ccs)))
->loadHandles();
foreach ($ccs as $cc => $time) {
$doc->addRelationship(
PhabricatorSearchRelationship::RELATIONSHIP_SUBSCRIBER,
$handles[$cc]->getPHID(),
$handles[$cc]->getType(),
$time);
}
PhabricatorSearchDocument::reindexAbstractDocument($doc);
}
}

File Metadata

Mime Type
text/x-diff
Expires
Tue, Jul 29, 1:51 PM (3 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
188722
Default Alt Text
(8 KB)

Event Timeline