diff --git a/src/applications/audit/editor/PhabricatorAuditEditor.php b/src/applications/audit/editor/PhabricatorAuditEditor.php index d142bd60cd..984e2c1472 100644 --- a/src/applications/audit/editor/PhabricatorAuditEditor.php +++ b/src/applications/audit/editor/PhabricatorAuditEditor.php @@ -490,6 +490,8 @@ final class PhabricatorAuditEditor } protected function getMailTo(PhabricatorLiskDAO $object) { + $this->requireAuditors($object); + $phids = array(); if ($object->getAuthorPHID()) { @@ -514,6 +516,8 @@ final class PhabricatorAuditEditor } protected function newMailUnexpandablePHIDs(PhabricatorLiskDAO $object) { + $this->requireAuditors($object); + $phids = array(); foreach ($object->getAudits() as $auditor) { @@ -856,4 +860,24 @@ final class PhabricatorAuditEditor ->executeOne(); } + private function requireAuditors(PhabricatorRepositoryCommit $commit) { + if ($commit->hasAttachedAudits()) { + return; + } + + $with_auditors = id(new DiffusionCommitQuery()) + ->setViewer($this->getActor()) + ->needAuditRequests(true) + ->withPHIDs(array($commit->getPHID())) + ->executeOne(); + if (!$with_auditors) { + throw new Exception( + pht( + 'Failed to reload commit ("%s").', + $commit->getPHID())); + } + + $commit->attachAudits($with_auditors->getAudits()); + } + } diff --git a/src/applications/repository/storage/PhabricatorRepositoryCommit.php b/src/applications/repository/storage/PhabricatorRepositoryCommit.php index 1c5998d583..b3b344312c 100644 --- a/src/applications/repository/storage/PhabricatorRepositoryCommit.php +++ b/src/applications/repository/storage/PhabricatorRepositoryCommit.php @@ -183,6 +183,10 @@ final class PhabricatorRepositoryCommit return $this->assertAttached($this->audits); } + public function hasAttachedAudits() { + return ($this->audits !== self::ATTACHABLE); + } + public function loadAndAttachAuditAuthority( PhabricatorUser $viewer, $actor_phid = null) {