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 @@ -1201,6 +1201,7 @@ 'HeraldTranscriptDestructionEngineExtension' => 'applications/herald/engineextension/HeraldTranscriptDestructionEngineExtension.php', 'HeraldTranscriptGarbageCollector' => 'applications/herald/garbagecollector/HeraldTranscriptGarbageCollector.php', 'HeraldTranscriptListController' => 'applications/herald/controller/HeraldTranscriptListController.php', + 'HeraldTranscriptPHIDType' => 'applications/herald/phid/HeraldTranscriptPHIDType.php', 'HeraldTranscriptQuery' => 'applications/herald/query/HeraldTranscriptQuery.php', 'HeraldTranscriptSearchEngine' => 'applications/herald/query/HeraldTranscriptSearchEngine.php', 'HeraldTranscriptTestCase' => 'applications/herald/storage/__tests__/HeraldTranscriptTestCase.php', @@ -5297,6 +5298,7 @@ 'HeraldTranscriptDestructionEngineExtension' => 'PhabricatorDestructionEngineExtension', 'HeraldTranscriptGarbageCollector' => 'PhabricatorGarbageCollector', 'HeraldTranscriptListController' => 'HeraldController', + 'HeraldTranscriptPHIDType' => 'PhabricatorPHIDType', 'HeraldTranscriptQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 'HeraldTranscriptSearchEngine' => 'PhabricatorApplicationSearchEngine', 'HeraldTranscriptTestCase' => 'PhabricatorTestCase', diff --git a/src/applications/herald/phid/HeraldTranscriptPHIDType.php b/src/applications/herald/phid/HeraldTranscriptPHIDType.php new file mode 100644 --- /dev/null +++ b/src/applications/herald/phid/HeraldTranscriptPHIDType.php @@ -0,0 +1,42 @@ +<?php + +final class HeraldTranscriptPHIDType extends PhabricatorPHIDType { + + const TYPECONST = 'HLXS'; + + public function getTypeName() { + return pht('Herald Transcript'); + } + + public function newObject() { + return new HeraldTranscript(); + } + + public function getPHIDTypeApplicationClass() { + return 'PhabricatorHeraldApplication'; + } + + protected function buildQueryForObjects( + PhabricatorObjectQuery $query, + array $phids) { + + return id(new HeraldTranscriptQuery()) + ->withPHIDs($phids); + } + + public function loadHandles( + PhabricatorHandleQuery $query, + array $handles, + array $objects) { + + foreach ($handles as $phid => $handle) { + $xscript = $objects[$phid]; + + $id = $xscript->getID(); + + $handle->setName(pht('Transcript %s', $id)); + $handle->setURI("/herald/transcript/${id}/"); + } + } + +} diff --git a/src/applications/herald/query/HeraldTranscriptQuery.php b/src/applications/herald/query/HeraldTranscriptQuery.php --- a/src/applications/herald/query/HeraldTranscriptQuery.php +++ b/src/applications/herald/query/HeraldTranscriptQuery.php @@ -4,6 +4,7 @@ extends PhabricatorCursorPagedPolicyAwareQuery { private $ids; + private $phids; private $objectPHIDs; private $needPartialRecords; @@ -12,6 +13,11 @@ return $this; } + public function withPHIDs(array $phids) { + $this->phids = $phids; + return $this; + } + public function withObjectPHIDs(array $phids) { $this->objectPHIDs = $phids; return $this; @@ -95,6 +101,13 @@ $this->ids); } + if ($this->phids) { + $where[] = qsprintf( + $conn_r, + 'phid IN (%Ls)', + $this->phids); + } + if ($this->objectPHIDs) { $where[] = qsprintf( $conn_r, diff --git a/src/applications/herald/storage/transcript/HeraldTranscript.php b/src/applications/herald/storage/transcript/HeraldTranscript.php --- a/src/applications/herald/storage/transcript/HeraldTranscript.php +++ b/src/applications/herald/storage/transcript/HeraldTranscript.php @@ -190,7 +190,8 @@ } public function generatePHID() { - return PhabricatorPHID::generateNewPHID('HLXS'); + return PhabricatorPHID::generateNewPHID( + HeraldTranscriptPHIDType::TYPECONST); } /* -( PhabricatorPolicyInterface )----------------------------------------- */