diff --git a/src/applications/conpherence/phid/PhabricatorConpherenceThreadPHIDType.php b/src/applications/conpherence/phid/PhabricatorConpherenceThreadPHIDType.php index ccc2756557..81a5a49043 100644 --- a/src/applications/conpherence/phid/PhabricatorConpherenceThreadPHIDType.php +++ b/src/applications/conpherence/phid/PhabricatorConpherenceThreadPHIDType.php @@ -19,9 +19,7 @@ final class PhabricatorConpherenceThreadPHIDType extends PhabricatorPHIDType { protected function buildQueryForObjects( PhabricatorObjectQuery $query, array $phids) { - return id(new ConpherenceThreadQuery()) - ->needParticipantCache(true) ->withPHIDs($phids); } @@ -33,7 +31,7 @@ final class PhabricatorConpherenceThreadPHIDType extends PhabricatorPHIDType { foreach ($handles as $phid => $handle) { $thread = $objects[$phid]; - $title = $thread->getDisplayTitle($query->getViewer()); + $title = $thread->getStaticTitle(); $monogram = $thread->getMonogram(); $handle->setName($title); diff --git a/src/applications/conpherence/storage/ConpherenceThread.php b/src/applications/conpherence/storage/ConpherenceThread.php index 36654713d5..2600e719e7 100644 --- a/src/applications/conpherence/storage/ConpherenceThread.php +++ b/src/applications/conpherence/storage/ConpherenceThread.php @@ -199,6 +199,23 @@ final class ConpherenceThread extends ConpherenceDAO return PhabricatorUser::getDefaultProfileImageURI(); } + /** + * Get a thread title which doesn't require handles to be attached. + * + * This is a less rich title than @{method:getDisplayTitle}, but does not + * require handles to be attached. We use it to build thread handles without + * risking cycles or recursion while querying. + * + * @return string Lower quality human-readable title. + */ + public function getStaticTitle() { + $title = $this->getTitle(); + if (strlen($title)) { + return $title; + } + + return pht('Private Correspondence'); + } /** * Get the thread's display title for a user.