Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/search/DifferentialRevisionFulltextEngine.php
12256 views
1
<?php
2
3
final class DifferentialRevisionFulltextEngine
4
extends PhabricatorFulltextEngine {
5
6
protected function buildAbstractDocument(
7
PhabricatorSearchAbstractDocument $document,
8
$object) {
9
10
$revision = id(new DifferentialRevisionQuery())
11
->setViewer($this->getViewer())
12
->withPHIDs(array($object->getPHID()))
13
->needReviewers(true)
14
->executeOne();
15
16
// TODO: This isn't very clean, but custom fields currently rely on it.
17
$object->attachReviewers($revision->getReviewers());
18
19
$document->setDocumentTitle($revision->getTitle());
20
21
$document->addRelationship(
22
PhabricatorSearchRelationship::RELATIONSHIP_AUTHOR,
23
$revision->getAuthorPHID(),
24
PhabricatorPeopleUserPHIDType::TYPECONST,
25
$revision->getDateCreated());
26
27
$document->addRelationship(
28
$revision->isClosed()
29
? PhabricatorSearchRelationship::RELATIONSHIP_CLOSED
30
: PhabricatorSearchRelationship::RELATIONSHIP_OPEN,
31
$revision->getPHID(),
32
DifferentialRevisionPHIDType::TYPECONST,
33
PhabricatorTime::getNow());
34
35
// If a revision needs review, the owners are the reviewers. Otherwise, the
36
// owner is the author (e.g., accepted, rejected, closed).
37
if ($revision->isNeedsReview()) {
38
$reviewers = $revision->getReviewerPHIDs();
39
$reviewers = array_fuse($reviewers);
40
41
if ($reviewers) {
42
foreach ($reviewers as $phid) {
43
$document->addRelationship(
44
PhabricatorSearchRelationship::RELATIONSHIP_OWNER,
45
$phid,
46
PhabricatorPeopleUserPHIDType::TYPECONST,
47
$revision->getDateModified()); // Bogus timestamp.
48
}
49
} else {
50
$document->addRelationship(
51
PhabricatorSearchRelationship::RELATIONSHIP_UNOWNED,
52
$revision->getPHID(),
53
PhabricatorPeopleUserPHIDType::TYPECONST,
54
$revision->getDateModified()); // Bogus timestamp.
55
}
56
} else {
57
$document->addRelationship(
58
PhabricatorSearchRelationship::RELATIONSHIP_OWNER,
59
$revision->getAuthorPHID(),
60
PhabricatorPHIDConstants::PHID_TYPE_VOID,
61
$revision->getDateCreated());
62
}
63
}
64
}
65
66