Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/differential/engineextension/DifferentialMailEngineExtension.php b/src/applications/differential/engineextension/DifferentialMailEngineExtension.php
index 24aa9fb329..29019b9e73 100644
--- a/src/applications/differential/engineextension/DifferentialMailEngineExtension.php
+++ b/src/applications/differential/engineextension/DifferentialMailEngineExtension.php
@@ -1,80 +1,80 @@
<?php
final class DifferentialMailEngineExtension
extends PhabricatorMailEngineExtension {
const EXTENSIONKEY = 'differential';
public function supportsObject($object) {
return ($object instanceof DifferentialRevision);
}
public function newMailStampTemplates($object) {
return array(
id(new PhabricatorPHIDMailStamp())
->setKey('author')
->setLabel(pht('Author')),
id(new PhabricatorPHIDMailStamp())
->setKey('reviewer')
->setLabel(pht('Reviewer')),
id(new PhabricatorPHIDMailStamp())
->setKey('blocking-reviewer')
->setLabel(pht('Reviewer')),
id(new PhabricatorPHIDMailStamp())
->setKey('resigned-reviewer')
->setLabel(pht('Reviewer')),
id(new PhabricatorPHIDMailStamp())
->setKey('revision-repository')
->setLabel(pht('Revision Repository')),
id(new PhabricatorPHIDMailStamp())
->setKey('revision-status')
->setLabel(pht('Revision Status')),
);
}
public function newMailStamps($object, array $xactions) {
$editor = $this->getEditor();
$viewer = $this->getViewer();
$revision = id(new DifferentialRevisionQuery())
->setViewer($viewer)
->needReviewers(true)
->withPHIDs(array($object->getPHID()))
->executeOne();
$reviewers = array();
$blocking = array();
$resigned = array();
foreach ($revision->getReviewers() as $reviewer) {
$reviewer_phid = $reviewer->getReviewerPHID();
if ($reviewer->isResigned()) {
$resigned[] = $reviewer_phid;
} else {
$reviewers[] = $reviewer_phid;
if ($reviewer->isBlocking()) {
- $reviewers[] = $blocking;
+ $blocking[] = $reviewer_phid;
}
}
}
$this->getMailStamp('author')
->setValue($revision->getAuthorPHID());
$this->getMailStamp('reviewer')
->setValue($reviewers);
$this->getMailStamp('blocking-reviewer')
->setValue($blocking);
$this->getMailStamp('resigned-reviewer')
->setValue($resigned);
$this->getMailStamp('revision-repository')
->setValue($revision->getRepositoryPHID());
$this->getMailStamp('revision-status')
->setValue($revision->getModernRevisionStatus());
}
}
diff --git a/src/applications/metamta/stamp/PhabricatorPHIDMailStamp.php b/src/applications/metamta/stamp/PhabricatorPHIDMailStamp.php
index 575ad16f6a..ea7233fe5b 100644
--- a/src/applications/metamta/stamp/PhabricatorPHIDMailStamp.php
+++ b/src/applications/metamta/stamp/PhabricatorPHIDMailStamp.php
@@ -1,36 +1,45 @@
<?php
final class PhabricatorPHIDMailStamp
extends PhabricatorMailStamp {
const STAMPTYPE = 'phid';
public function renderStamps($value) {
if ($value === null) {
return null;
}
$value = (array)$value;
if (!$value) {
return null;
}
+ // TODO: This recovers from a bug where blocking reviewers were serialized
+ // incorrectly into the flat mail stamp list in the worker queue as arrays.
+ // It can be removed some time after February 2018.
+ foreach ($value as $key => $v) {
+ if (is_array($v)) {
+ unset($value[$key]);
+ }
+ }
+
$viewer = $this->getViewer();
$handles = $viewer->loadHandles($value);
$results = array();
foreach ($value as $phid) {
$handle = $handles[$phid];
$mail_name = $handle->getMailStampName();
if ($mail_name === null) {
$mail_name = $handle->getPHID();
}
$results[] = $this->renderStamp($this->getKey(), $mail_name);
}
return $results;
}
}

File Metadata

Mime Type
text/x-diff
Expires
Fri, Mar 14, 3:45 PM (1 d, 9 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
72004
Default Alt Text
(4 KB)

Event Timeline