diff --git a/src/applications/differential/search/DifferentialSearchIndexer.php b/src/applications/differential/search/DifferentialSearchIndexer.php index a371b6e4e6..b07c6b6263 100644 --- a/src/applications/differential/search/DifferentialSearchIndexer.php +++ b/src/applications/differential/search/DifferentialSearchIndexer.php @@ -44,13 +44,13 @@ final class DifferentialSearchIndexer PhabricatorPeoplePHIDTypeUser::TYPECONST, $rev->getDateCreated()); - if (!$rev->isClosed()) { - $doc->addRelationship( - PhabricatorSearchRelationship::RELATIONSHIP_OPEN, - $rev->getPHID(), - DifferentialPHIDTypeRevision::TYPECONST, - time()); - } + $doc->addRelationship( + $rev->isClosed() + ? PhabricatorSearchRelationship::RELATIONSHIP_CLOSED + : PhabricatorSearchRelationship::RELATIONSHIP_OPEN, + $rev->getPHID(), + DifferentialPHIDTypeRevision::TYPECONST, + time()); $comments = id(new DifferentialCommentQuery()) ->withRevisionIDs(array($rev->getID())) @@ -74,10 +74,19 @@ final class DifferentialSearchIndexer // If a revision needs review, the owners are the reviewers. Otherwise, the // owner is the author (e.g., accepted, rejected, closed). if ($rev->getStatus() == ArcanistDifferentialRevisionStatus::NEEDS_REVIEW) { - foreach ($rev->getReviewers() as $phid) { + $reviewers = $rev->getReviewers(); + if ($reviewers) { + foreach ($reviewers as $phid) { + $doc->addRelationship( + PhabricatorSearchRelationship::RELATIONSHIP_OWNER, + $phid, + PhabricatorPeoplePHIDTypeUser::TYPECONST, + $rev->getDateModified()); // Bogus timestamp. + } + } else { $doc->addRelationship( - PhabricatorSearchRelationship::RELATIONSHIP_OWNER, - $phid, + PhabricatorSearchRelationship::RELATIONSHIP_UNOWNED, + $rev->getPHID(), PhabricatorPeoplePHIDTypeUser::TYPECONST, $rev->getDateModified()); // Bogus timestamp. } @@ -85,7 +94,7 @@ final class DifferentialSearchIndexer $doc->addRelationship( PhabricatorSearchRelationship::RELATIONSHIP_OWNER, $rev->getAuthorPHID(), - PhabricatorPeoplePHIDTypeUser::TYPECONST, + PhabricatorPHIDConstants::PHID_TYPE_VOID, $rev->getDateCreated()); } diff --git a/src/applications/maniphest/search/ManiphestSearchIndexer.php b/src/applications/maniphest/search/ManiphestSearchIndexer.php index 5d8fc96a6b..53c20960a9 100644 --- a/src/applications/maniphest/search/ManiphestSearchIndexer.php +++ b/src/applications/maniphest/search/ManiphestSearchIndexer.php @@ -30,13 +30,13 @@ final class ManiphestSearchIndexer PhabricatorPeoplePHIDTypeUser::TYPECONST, $task->getDateCreated()); - if ($task->getStatus() == ManiphestTaskStatus::STATUS_OPEN) { - $doc->addRelationship( - PhabricatorSearchRelationship::RELATIONSHIP_OPEN, - $task->getPHID(), - ManiphestPHIDTypeTask::TYPECONST, - time()); - } + $doc->addRelationship( + ($task->getStatus() == ManiphestTaskStatus::STATUS_OPEN) + ? PhabricatorSearchRelationship::RELATIONSHIP_OPEN + : PhabricatorSearchRelationship::RELATIONSHIP_CLOSED, + $task->getPHID(), + ManiphestPHIDTypeTask::TYPECONST, + time()); $this->indexTransactions( $doc, @@ -60,12 +60,10 @@ final class ManiphestSearchIndexer time()); } else { $doc->addRelationship( - PhabricatorSearchRelationship::RELATIONSHIP_OWNER, - ManiphestTaskOwner::OWNER_UP_FOR_GRABS, - PhabricatorPHIDConstants::PHID_TYPE_MAGIC, - $owner - ? $owner->getDateCreated() - : $task->getDateCreated()); + PhabricatorSearchRelationship::RELATIONSHIP_UNOWNED, + $task->getPHID(), + PhabricatorPHIDConstants::PHID_TYPE_VOID, + $task->getDateCreated()); } // We need to load handles here since non-users may subscribe (mailing diff --git a/src/applications/people/search/PhabricatorUserSearchIndexer.php b/src/applications/people/search/PhabricatorUserSearchIndexer.php index 9a8c069610..56b53c51ab 100644 --- a/src/applications/people/search/PhabricatorUserSearchIndexer.php +++ b/src/applications/people/search/PhabricatorUserSearchIndexer.php @@ -20,13 +20,13 @@ final class PhabricatorUserSearchIndexer // TODO: Index the blurbs from their profile or something? Probably not // actually useful... - if ($user->isUserActivated()) { - $doc->addRelationship( - PhabricatorSearchRelationship::RELATIONSHIP_OPEN, - $user->getPHID(), - PhabricatorPeoplePHIDTypeUser::TYPECONST, - time()); - } + $doc->addRelationship( + $user->isUserActivated() + ? PhabricatorSearchRelationship::RELATIONSHIP_OPEN + : PhabricatorSearchRelationship::RELATIONSHIP_CLOSED, + $user->getPHID(), + PhabricatorPeoplePHIDTypeUser::TYPECONST, + time()); return $doc; } diff --git a/src/applications/phriction/search/PhrictionSearchIndexer.php b/src/applications/phriction/search/PhrictionSearchIndexer.php index e4928a2f81..067da92d07 100644 --- a/src/applications/phriction/search/PhrictionSearchIndexer.php +++ b/src/applications/phriction/search/PhrictionSearchIndexer.php @@ -37,13 +37,13 @@ final class PhrictionSearchIndexer PhabricatorPeoplePHIDTypeUser::TYPECONST, $content->getDateCreated()); - if ($document->getStatus() == PhrictionDocumentStatus::STATUS_EXISTS) { - $doc->addRelationship( - PhabricatorSearchRelationship::RELATIONSHIP_OPEN, - $document->getPHID(), - PhrictionPHIDTypeDocument::TYPECONST, - time()); - } + $doc->addRelationship( + ($document->getStatus() == PhrictionDocumentStatus::STATUS_EXISTS) + ? PhabricatorSearchRelationship::RELATIONSHIP_OPEN + : PhabricatorSearchRelationship::RELATIONSHIP_CLOSED, + $document->getPHID(), + PhrictionPHIDTypeDocument::TYPECONST, + time()); return $doc; } diff --git a/src/applications/search/constants/PhabricatorSearchRelationship.php b/src/applications/search/constants/PhabricatorSearchRelationship.php index 246e39fdce..62c021b1bd 100644 --- a/src/applications/search/constants/PhabricatorSearchRelationship.php +++ b/src/applications/search/constants/PhabricatorSearchRelationship.php @@ -14,5 +14,7 @@ final class PhabricatorSearchRelationship { const RELATIONSHIP_REPOSITORY = 'repo'; const RELATIONSHIP_OPEN = 'open'; + const RELATIONSHIP_CLOSED = 'clos'; + const RELATIONSHIP_UNOWNED = 'unow'; }