comments = $comments; return $this; } public function getComments() { return $this->comments; } public function __construct( DifferentialRevision $revision, PhabricatorObjectHandle $actor, array $changesets) { $this->setRevision($revision); $this->setActorHandle($actor); $this->setChangesets($changesets); } protected function renderReviewersLine() { $reviewers = $this->getRevision()->getReviewers(); $handles = id(new PhabricatorObjectHandleData($reviewers))->loadHandles(); return 'Reviewers: '.$this->renderHandleList($handles, $reviewers); } protected function renderReviewRequestBody() { $revision = $this->getRevision(); $body = array(); if ($this->isFirstMailToRecipients()) { $body[] = $this->formatText($revision->getSummary()); $body[] = null; $body[] = 'TEST PLAN'; $body[] = $this->formatText($revision->getTestPlan()); $body[] = null; } else { if (strlen($this->getComments())) { $body[] = $this->formatText($this->getComments()); $body[] = null; } } $body[] = $this->renderRevisionDetailLink(); $body[] = null; $changesets = $this->getChangesets(); if ($changesets) { $body[] = 'AFFECTED FILES'; foreach ($changesets as $changeset) { $body[] = ' '.$changeset->getFilename(); } $body[] = null; } return implode("\n", $body); } protected function buildAttachments() { $attachments = array(); if (PhabricatorEnv::getEnvConfig('metamta.differential.attach-patches')) { $revision = $this->getRevision(); $revision_id = $revision->getID(); $diffs = $revision->loadDiffs(); $diff_number = count($diffs); $diff = array_pop($diffs); $filename = "D{$revision_id}.{$diff_number}.diff"; $diff->attachChangesets($diff->loadChangesets()); // TODO: We could batch this to improve performance. foreach ($diff->getChangesets() as $changeset) { $changeset->attachHunks($changeset->loadHunks()); } $diff_dict = $diff->getDiffDict(); $changes = array(); foreach ($diff_dict['changes'] as $changedict) { $changes[] = ArcanistDiffChange::newFromDictionary($changedict); } $bundle = ArcanistBundle::newFromChanges($changes); $unified_diff = $bundle->toUnifiedDiff(); $attachments[] = array( 'data' => $unified_diff, 'filename' => $filename, 'mimetype' => 'text/x-diff; charset=utf-8' ); } return $attachments; } }